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

Angelo Marcondes de Oliveira Neto angelomarcondes em gmail.com
Terça Setembro 25 20:11:44 BRT 2012


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.

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.

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. <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 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
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.interlegis.gov.br/pipermail/sapl-dev/attachments/20120925/c66deeee/attachment.htm 


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