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

Responder a