segunda-feira, 8 de junho de 2015

Falando de Chaves

Você ja estabeleceu este desafio para si próprio, de ficar uma semana sem assistir tv a cabo? Não que tenha sido um desafio mas tive que, infelizmente, assistir aos excelentes canais abertos oferecidos a população brasileira, por total falta de opção, e descobri várias coisas muito interessantes:
  1. Existem pelo menos 5 canais do tipo espreme-sai-sangue e nenhum dá para assistir, aqueles que ficam apresentando as barbaridades cometidas pelos marginais em seus roubos, assaltos, assassinatos, latrocínios, e que agora são pegos pelas câmeras de segurança por ai, enfim, creio que isso é até um sério malefício, acredito que os marginais comemorem quando seus crimes aparecem na tv.  Por outro lado, a existência de tantos leva a crer que muita gente gosta mesmo é de uma confusão policial.
  2. O Silvio Santos esta meio gagá, e o engraçado foi vê -lo apresentar um tal produto milagroso  'Jequiti', ele disse que não acreditava nos resultados do tal creminho que sumia com as rugas, hehehehe...., acho que sua senil sinceridade não vai ajudar a vender muito.
  3. O programa do Gugu não é tão ruim assim, imagina chegar a esta conclusão, a coisa tava ruim mesmo, mas voltando ao tal programa o que pega feio é quando ele dança a tal musiquinha do passarinho que quer voar, dai a coisa é dose.
  4. Os canais de noticias mostram as mesmas coisas, parece que um copia o editorial do outro e nenhum comenta algo relevante que se faça pensar a respeito do que é repetidamente transmitido, e aquilo parece ser embalado em uma capa de seriedade, no final dá muito sono. Não que isso seja ruim, de fato ao final do dia estamos bem cansados mesmo e nada como uma boa oportunidade de ouvir aquela vozinha monótona enquanto dormimos um pouco, e também não perdermos nosso tempo vendo abobrinhas.
  5. Outra coisa irritante no chamado 'horário nobre' são aqueles comerciais chatos de partido politico com aquelas palavras distantes da nossa realidade: democracia, representação, o melhor para o país, ..., e outras papagaiadas que nem mesmo a pessoa que esta lendo o texto sabe o significado, ou mesmo acredita, mas também brasileiro gosta de mentirinha. Alguém ai acredita nessa ladainha? Não dá para acabar com isso? Temos mesmo que ver essas porcarias?
  6. E a conclusão inevitável: o melhor programa do canal aberto continua sendo o Chaves.
Por outro lado, já que não havia outra opção, tive a oportunidade de refletir sobre muitos temas que estavam meio enroscados no Genexando, e inspirado neste 'meu' melhor programa, peguei primeiro porque creio ser importante, então vamos falar de Chaves.

Ta bom, mas não se irrite! Simples ou Composta?

Opinar sobre o uso de chaves simples ou composta nas transações é bisbilhotar demais no problema de modelagem alheio, não se irrite, rs... mas o fato é que quem não ficou pensando um dia 'e se eu tivesse feito diferente...'  isto depois do sistema entregue. Enfim, mudanças estruturais tão profundas quanto redefinição de chaves causa muita dor de cabeça, então melhor pensar um pouco mais nas implicações antes de optar em usa-las.

Chave Simples

PróContra
Unicidade (autonumber)Permite gerar a unicidade do registro sem muito esforço, se for tipo autonumber, nem precisamos esquentar a cabeça e como a principal utilidade de uma Primary Key é gerar unicidade, então este modo é bem interessante. Normalmente quem cuida de gerar o id é o banco de dados.No caso de se utilizar autonumber para gerar a unicidade, temos que ficar atentos ao longo do tempo, quando a tabela ganha uma dimensão suficiente para estourar o limite definido no atributo. Por exemplo, um Numeric(4) somente vai chegar a 9999 registros, e se passar disso, você terá uma bela dor de cabeça e muitas reclamações de usuários insatisfeitos com as travadas estranhas do programa.
Unicidade (randômico)A unicidade do registro no formato GUID ou randômico, é uma boa opção, pois se bem programado não vai causar efeitos colaterais no crescimento da tabela, e o tipo não se repete.

Se for GUID, por exemplo, o atributo será maior que um Numeric(4.0), e muitos desenvolvedores não gostam de chaves muito grandes.
Unicidade (manual)Algumas situações exigem que ao se abrir a interface (WEB) já se tenha previamente o valor da chave, e neste caso temos a possibilidade de programar um sistema gerador de chaves particular.

A programação de um sistema gerador de chaves confiável e que preveja a possibilidade de vários usuários estarem fazendo a inclusão do registro simultaneamente, é custoso e necessita tratar muitas situações estranhas ao uso regular do sistema (WEB), como por exemplo queda da internet, fechamento do browser, isso antes da operação ter sido concluída. Poderá também estourar o limite do atributo.
Chaves EstrangeirasAssim como ocorre com a unicidade, um único atributo para conectar duas tabelas também é muito interessante, gasta-se menos energia para programar a conexão 1-N entre as tabelas.  Outro detalhe muito importante é que podemos simplesmente mudar o valor da chave estrangeira para provocar nova relação de registros. Para uma manutenção, por exemplo, não precisaríamos apagar tudo e recriar novamente, bastaria trocar o valor da chave estrangeira.Não se trata de um problema propriamente dito, mas neste modelo temos a possibilidade de programar Nullable=YES, que faz com que desliguemos a Integridade Referencial entre as tabelas.  Neste caso, as tabelas poderão ficar com 'buracos'.  Teremos neste modelo a questão do relacionamento entre duas entidades fortes cujo relacionamento pode ser enfraquecido.
Pattern Work With
O pattern Work With (Artech) programa a lista de parâmetros passados entre os programas será gerado a partir das chaves. A consequência será a necessidade de enviar outras informações via contexto, ou manualmente via websession.


Muita coisa para se analisar, e com chaves compostas teremos tambem muitos detalhes para se levar em conta.


Chave Composta

PróContra
Unicidade (1)
Chaves compostas normalmente geram mais trabalho para se programar a unicidade. Isso porque temos que trabalhar com o conceito de analise combinatória (difícil né), basicamente gerar um conjunto de valores que não se repetem.  A programação do for each (ou data selector) sempre exigirá varias cláusulas where.
Unicidade (2)
Uma vez definida e gravada a chave não existe a possibilidade de trocar os valores dos atributos, e para se trocar precisa: 1) apagar o registro, 2) criar um novo com a nova composição.  Neste modelo, o sistema fica mais rígido se comparado as Foreign Keys das chaves simples.
Unicidade (3)


Para gerar uma parte randômica da chave composta, necessitamos de alguma procedure que gere autonumeração, que deve ser programado manualmente, ou por meio de uma regra Serial.
Chaves EstrangeirasNão existe a possibilidade de algum elemento da chave ser Nullable=YES, a Integridade Referencial não pode ser desligada.  Neste caso, as tabelas terão maior qualidade neste modelo. Teremos aqui  relacionamento entre uma entidades forte e outra fraca, cujo relacionamento não pode ser enfraquecido nunca.Como todos os elementos estrangeiros normalmente fazem parte da composição da chave, temos que programar a passagem de parâmetros com todos os valores o tempo todo.
Pattern Work With
O pattern Work With (Artech) produz melhores resultados na chamada aos programas quando utilizamos chaves compostas.Temos menos trabalho na programação da comunicação entre os sistemas neste modelo.



Enfim, muitos detalhes que podem influenciar na tomada eficaz de decisão.


Você não vai com a minha cara?

De maneira geral o que temos em resumo é o seguinte, para chaves simples maior flexibilidade porém mais trabalho com o Work With (Artech), enquanto que as chaves compostas geram modelos mais rígidos porem mais eficientes no tal pattern.

Enfim, deixo para vocês complementarem este POST com suas visões deste tema tão polemico.

Ninguém tem paciência comigo.

Eu não entendo nada de IBOPE, não sei o que é levado em conta para manter tanta porcaria junta, nem mesmo o Campeonato Brasileiro salva. Confesso que na TV somente assisto Discovery, a Fox Sports também é muito boa para ver outros campeonatos mais decentes.


Agora entendo porque o Chaves esta a tanto tempo fazendo sucesso (desde 1971 no Mexico), então para comemorar vamos cantar a musiquinha: La vem o Chaves, Chaves, Chaves, todos atentos olhando pra tv, ...


Cale-se, cale-se, você me deixa louco!!!!!