[sapl-dev] Integridade referencial do Banco de Dados do SAPL

sergiodamiati sergiodamiati em camaracampinas.sp.gov.br
Terça Setembro 25 17:24:40 BRT 2012


Cabe lembrar que o acesso a tabelas InnoDB é mais lento e perderemos 
performance, e elas também não suportam Pesquisas FullText usadas no Sapl.

[]s

Sérgio Damiati

Em 25-09-2012 17:03, Luciano De Fazio escreveu:
>
> Concordo tb, mas lembro novamente que tabelas MyISAM nao tem suporte a 
> integridade.
> Alguem vai ter de refazer as tabelas  como InnoDB e criar um script de 
> conversao.
> Como nao se mexe no banco dentro da versao estavel, isso tera que 
> ficar pra proxima.
> Por enquanto, validar por aplicacao eh a unica alternativa viavel.
> Luciano De Fazio
>
> Em 25/09/2012 16:34, "Gustavo Lepri" <gustavolepri em gmail.com 
> <mailto:gustavolepri em gmail.com>> escreveu:
>
>     Fabiano,
>
>     Eu também concordo com você sobre a integradidade ser toda feita
>     no banco e não na aplicação.
>
>     +1 para essa alteração!
>
>     Gustavo Lepri
>
>     Em 25 de setembro de 2012 14:27, Angelo Marcondes de Oliveira Neto
>     <angelomarcondes em gmail.com <mailto:angelomarcondes em gmail.com>>
>     escreveu:
>
>         Fabiano,
>
>         Bem, vou estudar alternativa ao relacionamento no BD e ver se
>         consigo apresentar algo também.
>
>         Abraços
>
>         UaiGeek - Angelo Marcondes de Oliveira Neto.
>         <mailto:angelomarcondes em gmail.com>
>         #votoemmongaba
>         Blog do UaiGeek <http://uaigeek.blogspot.com>
>         Carneirinho - MG <http://pt.wikipedia.org/wiki/Carneirinho>
>         - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>         - - - - - - - - - - - - -
>         P: Por que esta mensagem é tão curta?
>         R: http://3frases.efetividade.net
>         - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>         - - - - - - - - - - - - -
>
>
>
>         Em 25 de setembro de 2012 14:09, Fabiano Weimar dos Santos
>         <xirumacanudo em gmail.com <mailto:xirumacanudo em gmail.com>>
>         escreveu:
>
>             Oi Pessoal,
>
>             nada contra seu código Angelo, mas eu acredito que tentar
>             garantir a
>             integridade relacional usando código na camada de
>             aplicacao é errado.
>             Integridade relacional é uma tarefa da camada de banco de
>             dados.
>
>             A resposta a sua questão é: todos concordam comigo?
>
>             Eu acho essa estratégia de "flag" para registro excluido
>             errada
>             também. Se isso é importante, ou seja, o ato de excluir
>             manter uma
>             copia dos dados apagados para posterior inspeção manual,
>             pq então não
>             fazemos isso utilizando a estratégia de banco de dados
>             versionado que
>             adotei no spdo. Infelizmente o codigo que utilizei la nao
>             serviria
>             para o sapl, mas a ideia me parece fazer mais sentido.
>
>             Se houver interesse em atacar essa questao, primeiro
>             define-se a
>             abordagem (se vamos fazer isso usando código no zope ou usando
>             constraints no banco de dados) e depois debates os
>             detalhes técnicos.
>
>             Minha opniao tecnica pessoal já conhece ;)
>
>             -- Fabiano Weimar
>
>             Em 25 de setembro de 2012 12:11, Angelo Marcondes de
>             Oliveira Neto
>             <angelomarcondes em gmail.com
>             <mailto:angelomarcondes em gmail.com>> escreveu:
>             > Amigos,
>             >
>             > Estou preocupado com a integridade referencial dos banco
>             de dados do SAPL e
>             > por isso estou lhes escrevendo, com objetivo de
>             discutirmos qual a melhor
>             > maneira de evitar que existam quebras de referências,
>             seguindo a linha de
>             > uma discussão iniciada pelo Xiru e pelo Damiatti,
>             anteriormente.
>             > Abaixo, segue uma proposta de código para verificar a
>             integridade, antes da
>             > exclusão do parlamentar, ou seja do formulário
>             > parlamentar_excluir_proc.dtml.
>             > Gostaria da analise de todos, e saber se esta é a melhor
>             opção no momento e
>             > se posso trabalhar neste sentido.
>             >
>             >
>             > <dtml-comment>
>             >
>             *****************************************************************
>             > *   Função: Esse método apenas chama o Método SQL de
>             exclusão do*
>             > *       parlamentar, isto é, o método que atribui a
>             verdadeiro o*
>             > *       campo ind_excluido do parlamentar cujo o
>             cod_parlamentar*
>             > *       é recebido.                         *
>             > *   Argumentos: cod_parlamentar : int - o código do
>             parlamentar *
>             > *       a ser escluído.                         *
>             > *   Retorno: Atribuição do flag ind_excluido do
>             parlamentar e   *
>             > *       redirecionamento para a página de parlamentares.
>                    *
>             > *   Michael S. Onishi / Daniel C. Azevedo em 01-03-2001.
>                    *
>             >
>             *****************************************************************
>             > * UPDATE                          *
>             > *    Ao se excluir um parlamentar, alteramos o índice da
>             tabela *
>             > *  com o autor correspondente (ind_excluido=1)
>             representado a   *
>             > *  exclusão desse relacionamento, além da exclusão, se
>             houver,  *
>             > *  do username cadastrado no acl_user como login.      
>                     *
>             > *  Rogério Ueda em 18-12-2003                         *
>             >
>             *****************************************************************
>             > </dtml-comment>
>             >
>             > <dtml-if
>             >
>             expr="zsql.composicao_comissao_obter_zsql(cod_parlamentar=cod_parlamentar)">
>             >   <dtml-let mensagem="'Parlamentar está cadastro como
>             membro de
>             > comissão(ões) e não pode ser excluído!'">
>             >      <dtml-var mensagem_emitir>
>             >   </dtml-let>
>             > <dtml-elif
>             >
>             expr="zsql.composicao_mesa_obter_zsql(cod_parlamentar=cod_parlamentar)">
>             >   <dtml-let mensagem="'Parlmentar está cadastrado como
>             membro de mesa
>             > diretora e não pode ser excluído'">i
>             >      <dtml-var mensagem_emitir>
>             > </dtml-let>
>             > <dtml-elif
>             >
>             expr="zsql.composicao_mesa_sessao_obter_zsql(cod_parlamentar=cod_parlamentar)">
>             >   <dtml-let mensagem="'Parlmentar está cadastrado como
>             membro de mesa
>             > diretora de sessão plenária e não pode ser excluído'">i
>             >      <dtml-var mensagem_emitir>
>             >         </dtml-let>
>             >
>             >
>             > <dtml-else>
>             > <dtml-try>
>             >    <dtml-call
>             >
>             expr="zsql.parlamentar_excluir_zsql(cod_parlamentar=cod_parlamentar)">
>             > <dtml-except>
>             >   <dtml-let mensagem="'Houve um erro! Parlamentar não
>             excluído!'">
>             >      <dtml-var mensagem_emitir>
>             >   </dtml-let>
>             >   <dtml-call expr="REQUEST.set('erro', 1)">
>             > </dtml-try>
>             >
>             > <dtml-unless erro>
>             >   <dtml-try>
>             >      <dtml-in
>             expr="zsql.autor_obter_zsql(cod_parlamentar=cod_parlamentar)">
>             >         <dtml-call
>             expr="zsql.autor_excluir_zsql(cod_autor)">
>             >         <dtml-call
>             expr="pysc.username_excluir_pysc(username=col_username)">
>             >      </dtml-in>
>             >   <dtml-except>
>             >      <dtml-let mensagem="'Parlamentar Excluído com
>             Sucesso!<BR>Houve um
>             > erro! Autor Não Excluído!'">
>             >         <dtml-var mensagem_emitir>
>             >      </dtml-let>
>             >   <dtml-else>
>             >      <dtml-let mensagem="'Parlamentar Excluído com
>             Sucesso!'" sucesso="1">
>             >         <dtml-var mensagem_emitir>
>             >      </dtml-let>
>             >   </dtml-try>
>             >
>             > </dtml-unless>
>             >
>             > </dtml-if>
>             >
>             >
>             >
>             >
>             > UaiGeek - Angelo Marcondes de Oliveira Neto.
>             > #votoemmongaba
>             > Blog do UaiGeek
>             > Carneirinho - MG
>             > - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>             - - - - - - - - - -
>             > - - - - - -
>             > P: Por que esta mensagem é tão curta?
>             > R: http://3frases.efetividade.net
>             > - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>             - - - - - - - - - -
>             > - - - - - -
>             >
>             >
>             > --
>             > Wiki do SAPL:
>             > http://colab.interlegis.gov.br/wiki/ProjetoSapl
>             >
>             > Regras de participação:
>             > http://colab.interlegis.gov.br/wiki/ComoParticiparComunidade
>             >
>             > Para administrar sua conta visite:
>             > http://listas.interlegis.gov.br/mailman/listinfo/sapl-dev
>
>
>
>             --
>             Interessado em meus Cursos e Palestras? Inscreva-se em:
>             https://groups.google.com/d/forum/cursos-do-xiru?hl=pt-BR
>
>             Fabiano Weimar dos Santos @xiru
>             http://blog.xiru.org
>             http://www.pytown.com
>             --
>             Wiki do SAPL:
>             http://colab.interlegis.gov.br/wiki/ProjetoSapl
>
>             Regras de participação:
>             http://colab.interlegis.gov.br/wiki/ComoParticiparComunidade
>
>             Para administrar sua conta visite:
>             http://listas.interlegis.gov.br/mailman/listinfo/sapl-dev
>
>
>
>         --
>         Wiki do SAPL:
>         http://colab.interlegis.gov.br/wiki/ProjetoSapl
>
>         Regras de participação:
>         http://colab.interlegis.gov.br/wiki/ComoParticiparComunidade
>
>         Para administrar sua conta visite:
>         http://listas.interlegis.gov.br/mailman/listinfo/sapl-dev
>
>
>
>
>     -- 
>     Gustavo Lepri
>
>     --
>     Wiki do SAPL:
>     http://colab.interlegis.gov.br/wiki/ProjetoSapl
>
>     Regras de participação:
>     http://colab.interlegis.gov.br/wiki/ComoParticiparComunidade
>
>     Para administrar sua conta visite:
>     http://listas.interlegis.gov.br/mailman/listinfo/sapl-dev
>
>
>

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.interlegis.gov.br/pipermail/sapl-dev/attachments/20120925/09851ace/attachment.htm 


Mais detalhes sobre a lista de discussão SAPL-dev