Não poderia simplesmente o dependente ter um cpf_responsavel?

CREATE TABLE dependente (
  iddependente serial,
  cpf_responsavel bigint not null,
  nome text not null,
  tipo integer,
  primary key(iddependente),
  foreign key (cpf_responsavel) references funcionario(cpf_responsavel)
  );



Em 25 de maio de 2011 16:24, Alexsander Rosa
<[email protected]>escreveu:

> 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
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a