Bom dia a Todos!
Apesar de ter fugido da minha dúvida inicial que era somente como "USAR"
campos padrões no Postgres acabou se tornando uma "Discussão" muito
produtiva a respeito de conceitos e idéias de diferentes partes.
Agradeço à todos que responderam, e opinaram a respeito e também informo
que já estou utilizando tais campos em minhas aplicação e até agora (em
homologação) está funcionando conforme o esperado.

Atenciosamente,

Eder Sousa

On Fri, 1 Jan 2010 16:27:56 -0200, Tarcísio Sassara
<[email protected]> wrote:
> Realmente gosto disto que está ocorrendo aqui. Faz valer o nome deste
> lugar: "Lista de discussão".
> Segue a minha contribuição:
> 
> Simplesmente não gosto do estado NULL para o valor de um atributo de
> uma Relação.
> Usar ou permitir valores nulos para um atributo é uma péssima idéia e
> pode causar grandes problemas.
> Podemos ignorar completamente este estado e definir para cada atributo
> um valor padrão.
> 
> O uso das "chaves artificiais" cresceu muito com a adoção de
> Frameworks e seus ORMs.
> Inegavelmente o uso destas ferramentas simplificam o desenvolvimento
> de sistemas mas afastam os desenvolvedores das teorias que fundaram o
> SGBD que hoje utilizamos.
> Ainda não conheço uma biblioteca/framework ORM que faz uso adequado de
> chaves naturais compostas.
> Alias, ORM não são muito legais. Até o David disse: "Stop trying to
> generate SQL." [1].
> 
> Acredito na importância de se estudar os trabalhos dos conhecidos
> pesquisadores neste assunto (e que até possuem idéias diferentes) como
> Date e Celko.
> Não que as idéias destes devessem ser aplicada à risca, pois, cada
> caso é um caso.
> É importante conhecer as ferramentas que temos a disposição e as
> diferentes maneiras com as quais podemos solucionar um problema.
> Podemos fixar um prego na parede com uma chave de fenda apesar de ser
> muito mais simples com um martelo. E tendo um martelo é possível usar
> o cabo ou a cabeça... É o uso da ferramenta, mais a técnica usada de
> forma apropriada que faz a diferença e torna o trabalho mais simples e
> bem feito.
> 
> Se focarmos nas teorias, usaríamos mais as chaves naturais que podemos
> encontrar em uma Relação.
> Mas existem situações em que precisamos usar as chaves artificiais.
> Quando nossa regra de negócio permite inserir um registro antes mesmo
> de se ter a chave natural completa.
> Por exemplo:
> <script type="text/javascript"
src="http://www.softpira.com/homemail/program/js/tiny_mce/themes/advanced/langs/pt.js";></script>No
caso da locadora de vídeos. Se for possível reservar um filme sem
> necessariamente especificar para quem, ou seja, apenas queremos
> indicar que um filme está reservado para "alguém", a chave natural não
> estaria completa pois a chave natural da Relação "Reserva" inclui uma
> referência para o cliente que quer o filme e que neste caso não está
> preenchida. Pode aqui estar um exemplo de uso do NULL, onde o código
> do cliente é indefinido. Mas como escrevi logo acima, podemos esquecer
> dos valores nulos e usar valores defaults o que na minha opinião é a
> melhor alternativa.
> Então, neste exemplo, a Relação "Reserva" precisaria ter uma chave
> artificial identificando uma reserva sem mesmo ter a informação do
> cliente que reservou o filme.
> 
> Apesar de existir algumas vantagens no uso das chaves naturais como
> por exemplo a não necessidade de se criar uma nova coluna para uma
> outra chave ou a melhor representação de acordo com o Domínio, na
> prática, uso muito as chaves artificiais e as chaves candidatas
> naturais se tornam únicas e não nulas.
> Tornando as chaves naturais unicas e não nulas, elimina-se o problema
> da duplicidade que pode ocorrer usando chaves artificiais sem tratar
> as naturais como no exemplo:
> cd_pessoa | nome
> ---------------------------
> 1              | João
> 2              | João
> 
> 
> Chaves artificiais simplificam as queries ad hoc quando é preciso
> fazer os joins e torna possível o uso dos ORMs.
> 
> Um exemplo de Relação usando uma chave artificial e tratando a natural:
> 
> CREATE TABLE pessoas (
>   cd_pessoa serial PRIMARY KEY,
>   nome CHARACTER VARYING NOT NULL DEFAULT 'não especificado',
>   cpf CHARACTER VARYING NOT NULL UNIQUE
> );
> 
> Quando criamos uma restrição de unicidade, automaticamente criamos um
> índice para a propriedade da relação. Isso acontece porque no momento
> da inserção de uma nova tupla, o SGBD pesquisa por uma ocorrência do
> valor que se quer inserir na Relação. Caso não encontrado, o valor é
> inserido. O índice ajuda nesta pesquisa. Este comportamento é ótimo
> pois normalmente, também usamos esta propriedade para fazer as buscas
> de dentro do nosso sistema.
> 
> 
> 
> Referências:
>
http://books.google.com.br/books?id=y_eVBB5qdwMC&printsec=frontcover#v=onepage&q=&f=false
> http://en.wikipedia.org/wiki/Natural_key
> 
> [1]
>
http://people.planetpostgresql.org/dfetter/index.php?/archives/40-Removing-Much-of-the-Suck-from-ORMs.html
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a