Ao se falar de chaves compostas, muita gente faz cara de interrogação e fica completamente perdido na criação de um script.
Bobagem: chaves compostas são simples, fáceis de trabalhar e não são nenhum bixo-papão que irá prejudicar seu dia-a-dia.
Explicando: Chaves compostas são chaves (primárias ou extrangeiras) que compõe 2 ou mais campos. Suas restrições são simples: supondo que sua chave, seja composta de 2 campos (idFunc e data). Em sua tabela, não poderão haver registros com estes dois campos iguais, mas poderão ter o valor repetido em um campo, contanto que o outro seja diferente. Exemplo:
+——–+——————+
| idFunc | Data |
+——–+——————+
| 001 | 2011/10/23 |
+—–+———————+
| 002 | 2011/10/23 |
+—–+———————+
| 001 | 2011/11/03 |
+—–+———————+
+——–+——————+
| idFunc | Data |
+——–+——————+
| 001 | 2011/10/23 |
+—–+———————+
|002 | 2011/10/23 |
+—–+———————+
| 001 | 2011/10/23 |
+—–+———————+
A criação de chaves compostas também não se diferencia em nenum ponto. Para chaves primárias (exemplo, tabela funcionarios) :
ALTER TABLE [funcionarios]
ADD CONSTRAINT [pk_funcionarios] PRIMARY KEY CLUSTERED ([idFunc], [Data])
GO
No momento de criarmos uma chave estrangeira, devemos nos atentar de que a mesma, é composta. Caso não nos atentemos a isso, podemos ter problemas futuramente. Para a criação de foreign keys (exeplo fk em uma tabela histórico) :
ALTER TABLE [hist_func]
ADD CONSTRAINT [fk_funcionarios] FOREIGN KEY NONCLUSTERED (idFunc, Data) REFERENCES [funcionarios] [(idFunc], [Data])
GO
Chaves compostas exigem atenção, porém, caso tenha um ambiente bem modelado e documentado, ela não trará problemas!
See you amiguinhos.
Obrigado pela resposta, foi de grande valor!!!!!!!!!!
Obrigada pelo retorno Bruno. Fico feliz em ajudar 🙂
Explicação super simples… Gostei!!
Olá Miller, obrigada pelo contato! Fico feliz em ajudar!