SQL

Composite Key (Birleşik Anahtar) Nedir

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

Yorum Yap