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

Fabiano Weimar dos Santos xirumacanudo em gmail.com
Terça Setembro 25 22:52:40 BRT 2012


Em 25 de setembro de 2012 20:11, Angelo Marcondes de Oliveira Neto
<angelomarcondes em gmail.com> escreveu:
> Morale,
>
> Realmente vendo pela ótica do administrador do banco de dados, não existe
> integridade referencial e muito menos exclusão efetiva dos dados.
> Mas se você olhar pela ótica gerente do SAPL, o qual não possui
> conhecimentos de banco de dados e o qual poderá excluir parlamentares e
> deixar uma série de referências inválidas, ou poderá excluir uma comissão e
> deixar outra centena de referências inválidas, aí neste caso existe uma
> integridade referencial.
> Mas, como uma administrador de BD, vc me dirá que eu não me preocupe, já que
> nada foi excluído. Até aí tudo bem, mas acontecerá que o usuário irá
> cadastrar novamente o parlamentar excluído anteriormente, na tentativa de
> gerar referências a suas proposições orfãs, o que ocasionará outro problema.
> Já que teremos várias proposições para o parlamentar antigo e para o novo,
> que na verdade são os mesmos!
> Assim, minha preocupação é neste sentido da integridade, que é relativa já
> que existe apenas sobre a ótica do usuário.
>

Perfeito.

Eu mesmo não descreveria melhor.

> Penso, que devemos discutir melhor esta problema, já que pude ver vários
> SAPL, os quais tem informações orfãs, já que o sistema permite exclusão de
> um parlamentar ou de uma comissão, mesmo ele sendo ligado a várias
> referências.

Exato.

>
> Não sou contra a exclusão, sou apenas favorável de que encaminhemos o
> usuário a trocar os autores de proposições dentre outras referências, antes
> de excluí-los.
>
> Abraços, por favor, vamos discutir e quem sabe gerar uma evolução ao nosso
> produto.
>
> UaiGeek - Angelo Marcondes de Oliveira Neto.
> Blog do UaiGeek
> Carneirinho - MG
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> - - - - - -
> P: Por que esta mensagem é tão curta?
> R: http://3frases.efetividade.net
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> - - - - - -
>
>
>
> Em 25 de setembro de 2012 18:31, Claudio Morale
> <claudiomorale em interlegis.leg.br> escreveu:
>
>> Angelo, as tuplas não são excluídas efetivamente, razão pela qual não
>> afeta a integridade referencial. É feito apenas um update naquelas que
>> deveriam ser excluidas alterando a coluna ind_excluido para 1.
>> Fisicamente não acontece nada...pois não há execução da instrução DELETE
>> .. o que aí sim refletiria a questão da integridade referencial, pois o
>> mysql ao eliminar o que eventualmente não deve - por falta de definição
>> de regras que vincule as tuplas fisicamente - faria com que tivéssemos
>> problemas de integridade. Nesse momento, considerando o que temos, a
>> preocupação maior é com a inclusão dos dados válidos para evitar
>> problemas de integridade. E isso hj está sendo feito via rotinas no
>> aplicativo. Uma melhoria seria levar essas validações para as tabelas na
>> forma de procedures no banco. É um modo de separar os códigos e dar mais
>> leveza à parte que trata da interface.
>>
>> att.
>>
>> Em 25-09-2012 17:40, Angelo Marcondes de Oliveira Neto escreveu:
>> > Morale,
>> >
>> > Não entendi seu argumento, por favor exemplifique.
>> >
>> > Abraços
>> >
>> > UaiGeek - Angelo Marcondes de Oliveira Neto. <angelomarcondes em gmail.com>
>> > 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 17:28, Claudio Morale <
>> > claudiomorale em interlegis.leg.br> escreveu:
>> >
>> >> Angelo, a exclusão no sapl é lógica e não impacta a questão da
>> >> integridade referencial que qdo for o caso deve ser verificada na
>> >> inclusão.
>> >>
>> >> Em 25-09-2012 12:11, Angelo Marcondes de Oliveira Neto 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.
>> >>> <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
>> >>> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>> >>> -
>> >> - -
>> >>> - - - - - -
>> >>>
>> >>>
>> >>>
>> >>
>> >>
>> >> --
>> >> Claudio Morale
>> >> Analista de Sistemas
>> >> Interlegis - Brasília (DF)
>> >> --
>> >> 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
>> >>
>> >
>> >
>> >
>>
>>
>> --
>> Claudio Morale
>> Analista de Sistemas
>> Interlegis - Brasília (DF)
>> --
>> 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



-- 
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


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