Veritabanları, birden çok tabloda depolanan büyük miktarda bilgiyi depolamak için kullanılır. Her tabloya binlerce satır veri giriliyor olabilir. Gereksiz bilgiler içeren birçok yinelenen satır olacaktır.

Bununla nasıl başa çıkacağız? Yalnızca benzersiz verileri depolamamız için kayıtları nasıl yönetiriz? Ve veritabanında bulunan çoklu tabloları nasıl ilişkilendiririz?

SQL anahtarları tüm bu soruların cevabıdır.

SQL anahtarı, bir tablodaki satırları benzersiz bir şekilde tanımlayabilen tek bir sütun (veya öznitelik) veya bir sütun grubudur.

SQL anahtarları, yinelenen bilgiler içeren satır olmamasını sağlar. Sadece bu değil, aynı zamanda veritabanındaki birden çok tablo arasında bir ilişki kurmaya da yardımcı olurlar. Bu nedenle, SQL'deki farklı anahtarlar hakkında bilgi edinmek zorunlu hale gelir.

Primary Key (PK-Birincil Anahtar)

Primary Key (birincil anahtar), bir veri tablosunda yer alan her satır için bir vekil veya tanımlayıcı
(identify) görevi görür, kısıtlamadır (constraint) ve eşsizdir. Satırlara ait değerlerin karışmaması adına bu
alana ait bilginin tekrarlanmaması gerekir. Birincil anahtarın temel işlevi, verilerin hangi satıra dizileceğine
veya hangi satırda düzenleneceğine karar vermesidir. Çoğunlukla tek bir alan (id, user_id, e_mail, username,
national_identification_number vb.) olarak kullanılsa da birden fazla alanın birleşimiyle oluşturulabilir.
Sayılar genelde birincil anahtar olarak seçilir ancak bu bir zorunluluk değildir. Birincil anahtar değeri boş
geçilemez ve Null değeri alamaz. İlişkisel veri tabanlarında (Relational Database Management System)
mutlaka birincil anahtar olmalıdır.


Foreign Key (FK-Yabancı Anahtar)

Foreign Key (yabancı anahtar) ikincil anahtar olarak da ifade edilmektedir. Bir veri tablosuna girilebilecek
değerleri başka bir veri tablosundaki alanlarla ilişkilendirmeye yarar. Başka bir tablonun birincil
anahtarının bir diğer tablo içinde yer almasıdır. Çoğunlukla bir ana tablo (parent) ile alt tablonun
(child) ilişkilendirilmesinde kullanılır. Bu sayede olası veri tekrarlarının önüne geçilebilmekte ve ilerleyen
zamanda söz konusu olabilecek güncellemelerde ilgili verilerin her yerde güncellenmesi sağlanabilmektedir.


Unique Key (UQ-Tekil veya Benzersiz Anahtar)

Unique Key (tekil anahtar), yer aldığı tablo içinde bir değeri sadece bir kere alır. İlgili değerin tekrar
atanmasına izin verilmez. Bu anahtarın işlevi birincil anahtar ile benzerlik taşısa da ikisi arasındaki
en önemli farklılık, Unique Key'in Null değeri alabilmesidir.
PK ile UQ arasındaki farklar şöyle sıralanabilir:
○○ Her birincil anahtar benzersiz iken her benzersiz anahtar birincil değildir.
○○ Bir tablo içinde birden fazla alan tek birincil anahtar ile tanımlanabilir ancak birincil anahtar yapısı
her tabloda sadece bir tane olabilir. Benzersiz anahtarda ise böyle bir sınırlama yoktur.
○○ Birincil anahtarda Null kullanımına izin verilmez ancak benzersiz anahtarlarda Null kullanımına izin
verilir.
○○ Birincil anahtar ile veri tablosu üzerinde bir Index tanımı oluşturulur ve her kaydın benzersiz bir tanımı
yapılır. Benzersiz anahtar kullanımında ise değerlerin benzersiz olup olmadığına bakılır.