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

Luciano De Fazio lucianodefazio em gmail.com
Terça Setembro 25 17:03:14 BRT 2012


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> 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> 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. <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> 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> 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/eb21eb83/attachment.htm 


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