Galera,

estou realmente impressionado com a quantidade de respostas que esta thread
alcançou!!! =)

Agradeço a todos que compartilharam sua opniao a respeito, foi muito util
para mim toda esta conversa, aprendi muito mais do que esperava. Tenho
certeza que nao apenas eu, mas muita gente que tinha/ou venha ter esta
duvida novamente, esta thread será um otima fonte de informação.

Voltando ao caso:

O meu modelo:

Tabelas:

log (dtsys: TIMESTAMPZ, body TEXT, ** usuario)
usuario (login VARCHAR(30), senha VARCHAR(128), isativo BOOLEAN, email
VARCHAR(100))
grupo (nome VARCHAR(30), descricao VARCHAR(128)
grupo_usuario [M..M] (** grupo, ** usuario)


Bem,

a) Em LOG eu gravo tudo que o usuario faz, sendo assim esta tabela ficara
muito grande rapidamente.
b) Assim como LOG, outras tabelas tem USUARIO como atributo para marcar que
aquele registro pertence/foi criado/etc pelo usuario X.
c) Grupo so é usado no relacionamente GRUPO_USUARIO.
d) Em quase 100% dos casos que envolva grupo, vou querer apenas o nome do
mesmo.

Com base nestes requisitos (AGORA, depois depois da discussao :)) decidi
(ou acho) que:

1) Usuario:
    - Terá uma chave artificial ID (BIGSERIAL)
    - Terá um INDICE UNICO para LOGIN

2) NOME será chave primária da entidade GRUPO

Sendo assim, resolvo:

1) Um relacionamento a menos quando eu quiser saber os grupos do usuario X
2) Um relacionamento a menos quando eu quiser saber os usuarios do grupo Y
3) LOG e outras entidadas deixarão de ocupar tanto espaço em disco quanto
ocupariam com o uso de LOGIN como campo estrangeiro para USUARIO
4) Quando quiser saber o usuário de um LOG e outras entidades, terei de
fazer um INNER JOIN com USUARIO.


O que acham disto pessoal??

Abraços,
-- 
Moisés P. Sena
(Analista e desenvolvedor de sistemas WEB e mobile)
http://www.moisespsena.com
http://linux.moisespsena.com
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a