Kötü tasarımın üç anomalisi
Tek bir dev tabloda (siparis_no, musteri_adi, musteri_sehir, urun_adi, urun_fiyat, adet) tuttuğunu düşün:
- Güncelleme anomalisi: Müşteri taşınınca yüzlerce satırı güncellemen gerekir; birini unutursan veri çelişir.
- Ekleme anomalisi: Hiç satılmamış bir ürünü ekleyemezsin (sipariş yok).
- Silme anomalisi: Bir ürünün tek siparişini silersen ürün bilgisi de kaybolur.
Normal formlar
| Form | Kural | Örnek ihlal |
|---|---|---|
| 1NF | Her hücre tek (atomik) değer; tekrar eden sütun grupları yok. | telefonlar = '0532..., 0542...' |
| 2NF | 1NF + anahtar olmayan her sütun birincil anahtarın tamamına bağlı (bileşik anahtarda kısmi bağımlılık yok). | order_items(order_id, product_id, product_name): ad sadece product_id'ye bağlı |
| 3NF | 2NF + geçişli bağımlılık yok: anahtar olmayan sütun başka bir anahtar olmayan sütuna bağlı olmamalı. | employees(emp_id, dept_id, dept_name): dept_name, dept_id'ye bağlı |
| BCNF | Her belirleyici bir aday anahtardır (3NF'nin sıkı hali). | Nadir, örtüşen aday anahtarlarda ortaya çıkar |
Kısa ezber: “Anahtar, bütün anahtar ve anahtardan başka hiçbir şey.”
Denormalizasyon
Analitik sistemlerde (veri ambarı) sorguları hızlandırmak için bilinçli olarak tekrar eklenir: yıldız şema, geniş tablolar. Kural: İşlem sistemleri (OLTP) normalize, analitik sistemler (OLAP) çoğu zaman denormalize.