Birincil Anahtar
- İngilizcesi
- Primary Key
- Türkçe karşılığı
- asal anahtar
- Okunuşu
- praymıri ki
Günlük kullanımda iki ad da yaygın.
Kısaca
Birincil anahtar, bir veritabanı tablosundaki her satırı benzersiz biçimde tanımlayan, asla boş ya da tekrarlı olamayan bir sütun veya sütun kümesidir.
Birincil anahtar nedir?
Birincil anahtar, bir tablodaki her satırın benzersiz tanımlayıcısıdır; iki öğrencinin paylaşmadığı öğrenci numarası gibi. Veritabanı bunun üzerinde iki kural uygular: her değer benzersiz olmalıdır ve hiçbir değer NULL olamaz. Her tablonun yalnızca bir birincil anahtarı olabilir, ancak bu anahtar birkaç sütundan oluşabilir.
Birincil anahtarlar doğal ya da yapay (surrogate) olur. Doğal anahtar, bir kitabın ISBN'i gibi zaten benzersiz olan gerçek dünya verisini kullanır; yapay anahtar ise kendi başına anlamı olmayan, genellikle otomatik artan bir tamsayı ya da UUID olan yapay bir değerdir. Çoğu uygulama yapay anahtarları tercih eder; çünkü e-posta adresleri gibi gerçek dünya değerleri değişebilir ya da sonradan benzersiz olmadığı ortaya çıkabilir.
Veritabanı birincil anahtar üzerinde otomatik olarak bir indeks oluşturur; bu yüzden bir satırı anahtarıyla aramak çok hızlıdır. Diğer tablolar, bir satıra onun birincil anahtarını bir yabancı anahtar sütununda saklayarak başvurur; ilişkisel veritabanları siparişleri onları veren müşterilerle işte böyle bağlar. Bir anahtar (order_id, product_id) gibi birkaç sütuna yayıldığında buna bileşik birincil anahtar (composite primary key) denir.
Birincil anahtar çoğu zaman benzersizlik kısıtı (unique constraint) ve yabancı anahtarla karıştırılır. Benzersizlik kısıtı da tekrarları önler, ancak bir tabloda bunlardan çok sayıda olabilir ve çoğu veritabanında NULL değerlere izin verirler; yabancı anahtar ise bir tablodan başka bir tablonun anahtarına yapılan başvurudur. Kısacası birincil anahtar bir satırı tanımlar, yabancı anahtar ise birine işaret eder.
Önemli noktalar
- Birincil anahtar, bir tablodaki her satırı benzersiz biçimde tanımlar.
- Birincil anahtar değerleri benzersiz olmalı ve
NULLolamaz. - Bir tablonun yalnızca bir birincil anahtarı vardır, ancak bu anahtar birkaç sütuna yayılabilir.
- Otomatik artan ID'ler ya da UUID'ler gibi yapay anahtarlar en yaygın tercihtir.
- Birincil anahtarlar otomatik olarak indekslenir ve yabancı anahtarlar tarafından başvurulur.
Örnek
-- A surrogate primary key generated by the database
CREATE TABLE customers (
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
email TEXT NOT NULL UNIQUE,
name TEXT NOT NULL
);
-- A composite primary key: one row per product in each order
CREATE TABLE order_items (
order_id BIGINT,
product_id BIGINT,
quantity INT NOT NULL,
PRIMARY KEY (order_id, product_id)
);Sık sorulan sorular
Birincil anahtar ile yabancı anahtar arasındaki fark nedir?
Birincil anahtar, kendi tablosundaki her satırı benzersiz biçimde tanımlar. Yabancı anahtar ise başka bir tablodaki, o satıra başvurmak için bir birincil anahtar değeri saklayan ve iki tablo arasında bağ kuran bir sütundur.
Bir tablonun iki birincil anahtarı olabilir mi?
Hayır. Bir tablonun yalnızca bir birincil anahtarı olabilir; ancak bu anahtar birkaç sütunu birleştirerek bileşik birincil anahtar oluşturabilir ve tekrar etmemesi gereken diğer sütunlara ayrı UNIQUE kısıtları ekleyebilirsiniz.
Birincil anahtar olarak otomatik artan ID mi yoksa UUID mi kullanmalıyım?
Otomatik artan tamsayılar kompakttır ve indekslenmeleri hızlıdır; ancak kabaca kaç satır olduğunu ele verirler ve birden fazla sunucuda üretilmeleri daha zordur. UUID'ler çakışma olmadan her yerde üretilebilir ve UUIDv7 gibi zamana göre sıralı sürümler, tamamen rastgele UUID'lerin yol açtığı indeks yavaşlamalarını önler.
İlgili sayfalar
- Yabancı AnahtarVeritabanları, s. 45Yabancı anahtar, bir veritabanı tablosunda başka bir tablonun birincil anahtarına başvuran sütundur; ilişkili satırları bağlar ve başvuruları geçerli tutar.
- Veritabanı İndeksiVeritabanları, s. 38Veritabanı indeksi, tüm tabloyu taramadan satırları hızla bulmayı sağlayan, bir kitabın sonundaki dizine benzeyen bir veri yapısıdır.
- SQLVeritabanları, s. 29SQL, ilişkisel veritabanlarıyla çalışmanın standart dilidir; tablo oluşturmak ve içindeki veriyi eklemek, sorgulamak, güncellemek ve silmek için kullanılır.
- Veritabanı NormalizasyonuVeritabanları, s. 40Veritabanı normalizasyonu, her bilginin yalnızca bir kez saklanması için tabloları düzenleme sürecidir; tekrarlı veriyi azaltıp tutarsız güncellemeleri önler.
- VeritabanıVeritabanları, s. 37Veritabanı, bilgisayarda düzenli biçimde saklanan ve uygulamaların verimlice kaydedip arayıp güncelleyebildiği, bir yazılımla yönetilen veri topluluğudur.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin