Veri tabanında tablo oluştururken, tablodaki kayıtların benzersiz olması için her tabloya genellikle bir tane birincil anahtar yerleştiririz.
Ancak bazı durumlarda 1 tane birincil anahtar tek başına istediğimiz şekilde tablodaki sorunları çözmek için yeterli olmayabilir. Birden fazla alanın birlikte birincil olması gerektiği durumlarda birincil anahtar olarak ayarlaması gerekir. Bu duruma composite key adı verilir.
Daha kısa açıklama olarak da birden fazla birincil anahtar kullanılması durumuna composite key denir. İki yada daha fazla olan birincil anahtarlar tek başına bir birincil anahtar gibi davranıyor.
Not:PK=Primary Key (Birincil Anahtar)
Kavramın daha iyi anlaşılması için aşağıdaki örneği bir inceleyelim.
Örnek: Bir okulda öğrenci ve not ilişkisi ile ilgili şöyle bir durum vardır. Bir öğrenci birden fazla sınava girebilir. Ama aynı öğrenci aynı sınava iki defa giremez.
Örnek: 15 numaralı öğrenci 1.matematik sınavına girmişse, sitem 15 numaralı öğrenciyi tekrar 1.matematik sınavına girmeye izin vermemesi gerekiyor.
Aşağıdaki tabloda ogrno ve sinavno birincil anahtar yapıldığında tek bir anahtarmış gibi davranmaktadır.
sira | ogrno(PK) | sinavno(PK) | not1 | not2 |
1 | 15 | 1 | 50 | 60 |
2 | 10 | 2 | 50 | 70 |
Aşağıdaki tabloda 2. ve 3. satırdaki birincil anahtarların her ikisi de birebir aynı olduğu için 3.satırı girmemize izin verilmeyecektir.
sira | ogrno(PK) | sinavno(PK) | not1 | not2 |
1 | 15 | 1 | 50 | 60 |
2 | 10 | 2 | 50 | 70 |
3 | 10 | 2 | 80 | 65 |
4 | 10 | 1 | 60 | 70 |
Dikkat: Composite key kullanırken gerçekten ihtiyaç olup olmadığına dikkat edilmesi gerekmektedir. Aşağıdaki örnekte tcno ve ogrno birincil anahtar yapılmıştır. Aslında ayrı ayrı her ikisi de birincil anahtar olabiliyorken ikisinde de birincil anahtar olması kayıtların hatalı girilmesi olasılığını doğurmaktadır.
sira | tcno(PK) | ogrno(PK) | ad | soyad |
1 | 15201254575 | 150 | Ali | Al |
2 | 15201254575 | 60 | Ali | Al |
Yukarıda göründüğü gibi tcno aynı olmasına rağmen ogrno değerleri farklı girilerek, farklı numaralarda aynı öğrencinin kaydına izin verilmiş olması ciddi bir hata olasılığını oluşturur.
Aşağıdaki tabloda tcno 1 kez girileceği için yukarıdaki gibi bir hata yapma olasılığı kalmamıştır.
sira | tcno(PK) | ogrno | ad | soyad |
1 | 15201254575 | 150 | Ali | Al |
2 | 45851254535 | 60 | Veli | Bak |