Veritabanlarındaki normal formlar hakkında ne biliyorsunuz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Normal formlar (NF), ilişkisel veritabanı yapısının tasarımı için kurallar ve öneriler bütünüdür ve veri fazlalığını en aza indirmeye ve ekleme, güncelleme ve silme sırasında oluşabilecek anomalileri önlemeye yöneliktir.
Ana normal formlar:
-
Birinci Normal Form (1NF):
- Her özellik (sütun) atomik (bölünemez) değerler içermelidir.
- Tekrarlayan özellik gruplarından kaçınılmalıdır.
- Her satır benzersiz olmalıdır (birincil anahtar olmalı).
-
İkinci Normal Form (2NF):
- 1NF'dedir.
- Her anahtar olmayan özellik, tüm birincil anahtara tam bağımlı olmalıdır (birleşik anahtar varsa).
-
Üçüncü Normal Form (3NF):
- 2NF'dedir.
- Birincil anahtardan transitif bağımlılıkların olmaması gerekir (bir anahtar olmayan özellik başka bir anahtar olmayan özelliğe bağlı olmamalıdır).
-
Boyce-Codd Normal Form (BCNF):
- 3NF'nin daha katı bir versiyonudur.
- Her non-trivial bağımlılık $X \to Y$, $X$'in süper anahtar olmasıyla olmalıdır.
-
Dördüncü Normal Form (4NF):
- BCNF'dedir.
- Çok değerli bağımlılıkların olmaması gerekir.
-
Beşinci Normal Form (5NF):
- 4NF'dedir.
- Birleştirme bağımlılıklarının olmaması gerekir.
Normalizasyonun amaçları:
- Veri fazlalığını azaltmak.
- Anomalileri önlemek (ekleme, güncelleme, silme).
- Veri bütünlüğünü sağlamak.
- Veritabanı yapısını basitleştirmek.
Örnek:
Fazlalık içeren tablo (1NF'de değil):
| SiparişID | Ürün | Fiyat |
|---|---|---|
| 1 | Dizüstü Bilgisayar, Fare | 1000, 20 |
| 2 | Klavye | 50 |
Normalleştirilmiş tablo (1NF ve üzeri):
"Siparişler" tablosu:
| SiparişID |
|---|
| 1 |
| 2 |
"Sipariş Satırları" tablosu:
| SatırID | SiparişID | Ürün | Fiyat |
|---|---|---|---|
| 1 | 1 | Dizüstü Bilgisayar | 1000 |
| 2 | 1 | Fare | 20 |
| 3 | 2 | Klavye | 50 |
Normalizasyon, tasarımda önemli bir adımdır, ancak aşırı normalizasyon, sorgularda birleştirme sayısını artırabilir ve bu da performansı olumsuz etkileyebilir. En uygun normalizasyon seviyesi, belirli gereksinimlere ve uzlaşmalara bağlıdır. Bazen performansı artırmak için normalizasyon kurallarını bilinçli olarak ihlal ederek denormalizasyon yapılır.