Qual a melhor forma de modelar um banco onde duas tabelas diferente 'compartilham' um mesmo 'id' ?
por exemplo: tenho dois tipos de funcionarios em uma empresa : FUNC1 e FUNC2 , sendo que os dois possuem algumas coisas em comum, inclusive o ID (que poderia ser o cpf, por exemplo). Nesse caso, meu banco nao poderia deixar que eu colocasse o mesmo cpf existente em FUNC1 na tabela FUNC2. Acho que poderia fazer por herança ( e no modelo OO seria o mais correto ), mas eu vi que o postgresql não propaga as restriçoes do pai para os filhos. Não sei muito bem como o postgresql trabalha com OO, de qualquer forma, pelo visto, eu acabaria com dois ID's iguais em tabelas diferente. Eu poderia fazer utilizando 3 tabelas, sendo 1 tabela contendo todos os 'id's' possivel para as outras 2 tabelas 'filhas': T1[ id ] T2[ id , coisas_de_t2 ] // id é chave primaria de T2 e chave estrangeira para T1 T3[ id, coisas_de_t3 ] // id é chave primaria de T3 e chave estrangeira para T1 Dessa forma só poderia colocar uma restriçao para que nenhum id no pai se repetisse ( mas acho que ainda assim poderia ter um elemento da T2 e da T3 com o mesmo id ). Acho que acabaria utilizando gatilho para controlar os elementos que forem inseridos. Acho que tambem poderia eliminar essa primeira tabela( T1 ) e fazer utilizando gatilho, sempre que fosse inserido um novo elemento em uma das tabelas, eu verificaria na outra se já existe alguma com o id especificado. Eu acabaria com duas tabelas diferente para dois 'objetos parecidos', isso não seria ruim? O problema é que na pratica as tabelas sao muito parecidas, só muda um codigo onde em um tipo o codigo pode receber letra e numeros, enquanto no outro tipo o codigo só pode ser numero ( o tamanho do codigo tambem é diferente ). qual a melhor forma de fazer isso? valeu. _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
