# Birincil Anahtar

Adres: https://softwaredictionary.org/tr/terimler/primary-key
Kategori: Veritabanları
Son güncelleme: 2026-09-30
İngilizcesi: Primary Key
Türkçe karşılığı: asal anahtar
Okunuşu: praymıri ki

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 `NULL` olamaz.
- 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: Tek sütunlu ve bileşik birincil anahtarlar

```sql
-- 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.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
