Blz ? Então, primeira coisa se na tabela-pai a PK é CNPJ, para que a nova
tabela seja considerada FILHA da tabela-pai ela TEM que ter essa mesma coluna
CNPJ criada como FK e apontando pra PK da tabela pai, okdoc ?? A PK da
tabela-filha não importa pra essa funcionalidade...
Muito bem : isso dito,antes de discutirmos questões de acesso , índices, e
etc, plz ENTENDA que vc tem duas situações COMPLETAMENTE DIFERENTES aí!! A
contraint PK composta indica que qquer um dos valores (ou uma combinação de
todos exceto um) pode SIM se repetir nos outros registros, o que não pode é
duplicar TODOS da chave No seu exemplo, se vc tiver a PK composta criada
como CNPJ + FABRICA + LOCAL ENTREGA + DOCA + TIPO PROGRAMA, isso quer dizer
(por exemplo) que UM local de entrega pode ter N docas pra mesma fabrica e
mesmo CNPJ, tipo :
|CNPJ |Fabrica|Local entrega|Doca|Tipo programa|
|53.358.644/0001-12|FAB01 |BRAS |D10 | TIPO1 |
|53.358.644/0001-12|FAB01 |VILA CARRAO |D10 | TIPO1 |
==> OU SEJA, os dois registros acima tão válidos porque NÂO FORAM TODOS OS
CAMPOS DA PK COMPOSTA que se REPETIRAM
Agora, se vc criar uma constraint UNIQUE separada pra cada coluna, isso indica
que NA TABELA TODA, independente de qquer coisa, a coluna UNIQUE só poderá ter
um valor Imagine que a PK foi criada como CNPJ + SEQUENCIA como vc propôs,
e que as colunas FABRICA , LOCAL ENTREGA , DOCA e TIPO PROGRAMA cada uma tem a
sua UNIQUE KEY própria : suponha que eu tenho a mesma situação acima, e inseri
pro CNPJ 53.358.644/0001-12 inseri o registro :
|CNPJ |Fabrica|Local entrega|Doca|Tipo programa|
|53.358.644/0001-12|FAB01 |BRAS |D10 | TIPO1 |
==> Se eu tentar gravar (prum outro CNPJ ou pro mesmo com outra sequência,
tantofaz) um outro registro para (digamos) LOCAL DE ENTREGA = BRAS kaput, a
constraint UNIQUE do LOCAL DE ENTREGA ** não vai me deixar ** fazer isso... Com
as constraints UNIQUE separadas, isso significa que NENHUM OUTRO CNPJ poderia
ter a fábrica FAB01, ou o local de entrega BRAS ou a doca D10 !!! É isso que
significa uma constraint UNIQUE particular pra cada coluna... Faz sentido isso
na sua modelagem ??
Ou seja, essas duas construções ** ABSOLUTAMENTE NÃO SÃO ** duas maneiras de
fazer a mesma coisa, como vc parece dar a entender : na verdade são coisas
COMPLETAMENTE DIFERENTES, são Validações feitas de maneira completamente
DIFERENTE, okdoc ???
[]s
Chiappa