EMZETT.
Giriş yap

Normalleştirme ve normal formlar (1NF, 2NF, 3NF) basitçe açıklandı

Kısaca: Normalleştirme, her bilgi yalnızca bir kez saklansın diye tabloları böler; bu, değiştirirken, eklerken ve silerken fazlalığı ve hataları önler.

Biraz daha ayrıntılı: Kötü tasarlanmış bir tablo aynı verileri birkaç kez saklar. Bir değer değişirse her yerde uyarlanmalıdır, aksi hâlde çelişkiler (anomaliler) ortaya çıkar. Normal formlar bunu önleyen kurallardır. IHK sınavında klasik bir konudur.

Ayrıntılı

Normalleştirilmemiş bir tablo örneği

Order(orderno, date, customer, customercity, item1, price1, item2, price2)

Sorunlar: sütunlarda birkaç kalem (kaç tane?), her siparişte tekrarlanan müşteri verileri, kopyalanan fiyatlar. Müşteri şehir değiştirirse tüm satırlar değiştirilmelidir.

Birinci normal form (1NF)

Her hücre tam olarak bir değer içerir (atomik), yinelenen gruplar (item1, item2) yoktur, bir birincil anahtar vardır. → Kalem sütunları birkaç satır olur: OrderLine(orderno, lineno, item, price, quantity).

İkinci normal form (2NF)

Ek olarak: anahtar olmayan her nitelik anahtarın tamamına bağlıdır, yalnızca bir kısmına değil. Bileşik anahtarlı tabloları ilgilendirir (orderno + item): price yalnızca item’a bağlıysa kendi tablosuna aittir: Item(itemno, description, price).

Üçüncü normal form (3NF)

Ek olarak: geçişli bağımlılık yoktur: anahtar olmayan nitelikler başka bir anahtar olmayan nitelik üzerinden değil, doğrudan anahtara bağlıdır. customercity customer’a, customer da orderno’ya bağlıysa müşteri verileri kendi tablosuna aittir: Customer(customerno, name, city); Order ona bir yabancı anahtar ile atıfta bulunur.

Anımsatıcı: “Nitelikler anahtara, anahtarın tamamına ve anahtardan başka hiçbir şeye bağlıdır.”

Sonuç ve uygulama

Customer(customerno, name, city)
Order(orderno, date, customerno→Customer)
Item(itemno, description, price)
OrderLine(orderno→Order, lineno, itemno→Item, quantity)

Avantajlar: fazlalık yok, tutarlı değişiklikler, daha az depolama. Dezavantaj: daha fazla join. Bu yüzden bazen bilinçli denormalleştirme kullanılır (performans, analizler, veri ambarı). Diğer normal formlar (BCNF, 4NF, 5NF) özel durumları ele alır. İyi veri modelleri, daha sonra tablolara dönüştürülen ER modeliyle ortaya çıkar.

Ayrıca bak: ER modeli