Supondo uma tabela "funcionario" cuja PK é cpf.

Num primeiro momento pode-se pensar algo assim:
CREATE TABLE dependente (
  cpf bigint not null,
  nome text not null,
  tipo integer,
  primary key(cpf,nome),
  foreign key (cpf) references funcionario(cpf)
  );

Mas este modelo não suporta o caso dos casais que trabalham na mesma empresa
e têm filhos; os filhos ficariam vinculados a apenas um deles. Mesmo que se
mapeasse pelo "tipo" pra saber quem é o cônjugue-colega, não tem como
garantir que o cônjugue é mesmo pai ou mãe da criança, pode ser um casal com
filhos de casamentos anteriores.

Exemplo:
Pedro (funcionário) é pai de Maria (mãe Fernanda, ex-esposa) e Paula (mãe
Regina, esposa e funcionária).
Regina (funcionária) é mãe de Henrique (pai Roberto, ex-marido) e Paula (pai
Pedro, marido e funcionário).
Fernanda e Roberto poderiam ser funcionários também, para complicar mais um
pouco.

Pensei em algo tipo:
CREATE TABLE dependente (
  cpf_pai bigint not null,
  cpf_mae bigint not null,
  nome text not null,
  tipo integer,
  primary key(cpf_pai, cpf_mae, nome),
  foreign key (cpf) references funcionario(cpf)
  );


-- 
Atenciosamente,
Alexsander da Rosa
http://rednaxel.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a