Chaves compostas PK e FK – SQL Server

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.

4 comentários sobre “Chaves compostas PK e FK – SQL Server

Deixe um comentário