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