Normalizasyon Nedir Örnek ?

Sadiye

Global Mod
Global Mod
Normalizasyon Nedir?

Normalizasyon, veritabanı yönetim sistemlerinde, verilerin düzenli ve tutarlı bir şekilde saklanmasını sağlamak için kullanılan bir süreçtir. Bu süreç, veri tekrarını en aza indirgemek, veri bütünlüğünü korumak ve daha verimli veri sorgulamaları gerçekleştirmek amacıyla yapılan bir dizi adımdan oluşur. Normalizasyon, veritabanı tasarımında önemli bir yer tutar ve genellikle "normal form" adı verilen farklı aşamalara ayrılır.

Veritabanı tasarımında amaç, verinin tutarsızlıkların önüne geçmek ve veri bütünlüğünü sağlamaktır. Normalizasyon, veri tekrarı ve anlamsız ilişkilerin ortadan kaldırılması için gereklidir. Bu süreç, her türden veritabanı tasarımında uygulanabilir, ancak özellikle büyük veritabanlarında etkili sonuçlar verir.

Normalizasyonun Amacı Nedir?

Normalizasyonun temel amacı, veritabanı tasarımındaki tutarsızlıkları ortadan kaldırmak ve verinin daha verimli bir şekilde saklanmasını sağlamaktır. Verilerin doğru şekilde ilişkili olması, gereksiz tekrarların önlenmesi ve sorguların hızlandırılması bu sürecin ana hedefleridir.

Veritabanlarında, normalizasyon yapılmazsa, aynı veri birden çok yerde tekrar edebilir, bu da veri güncelleme, silme veya ekleme işlemlerini karmaşık hale getirebilir. Örneğin, bir müşteri adresi birden fazla tabloda yer alıyorsa, bir müşteri adresi değiştiğinde tüm ilgili tablolarda güncelleme yapmak gerekebilir. Bu tür durumlar, veri tutarsızlıklarına yol açabilir. Normalizasyon ile bu tür problemler ortadan kaldırılır ve veri daha verimli şekilde depolanır.

Normalizasyonun Faydaları

Normalizasyon, bir dizi fayda sağlar:

1. **Veri Tutarlılığı**: Verinin birden fazla yerde depolanması engellenir, bu da veri bütünlüğünü ve tutarlılığını sağlar.

2. **Daha Verimli Depolama**: Veriler daha az alan kaplar çünkü tekrarlayan veri eliminasyon edilir.

3. **Hızlı Sorgulamalar**: Normalizasyon, veritabanındaki veri tekrarlarını engelleyerek, sorguların daha hızlı çalışmasını sağlar.

4. **Veri Güncellemelerinde Kolaylık**: Verinin tek bir yerde tutulması, güncelleme, silme veya ekleme işlemlerini daha basit hale getirir.

Normalizasyonun Aşamaları (Normal Formlar)

Veritabanı normalizasyonu, bir dizi aşamadan oluşur. Bu aşamalar, verinin ne kadar düzenli olduğunu belirler ve her aşama daha fazla veri tekrarını engellemeyi amaçlar.

1. **Birinci Normal Form (1NF)**:

- Her bir sütunda sadece atomik (bölünemeyen) değerler bulunmalıdır.

- Veritabanında her satır benzersiz bir şekilde tanımlanmalı ve her sütun yalnızca bir tür veri içermelidir.

**Örnek**:

Eğer bir öğrenci tablosunda öğrenci isimleri ve dersleri aynı sütunda yer alıyorsa, bu birinci normal form ihlali olabilir. Her ders için ayrı bir satır kullanılmalıdır.

2. **İkinci Normal Form (2NF)**:

- Veritabanı 1NF'ye uygun olmalıdır.

- Her sütun, yalnızca birincil anahtara bağlı olmalıdır. Yani, bir tabloda birincil anahtar dışında kalan sütunlar, yalnızca birincil anahtarın işlevsel bağımlılığında olmalıdır.

**Örnek**:

Eğer öğrenci tablosunda öğrenci numarası ve ders adı gibi iki sütun varsa ve dersin hocası yalnızca ders adına bağlıysa, bu durumda dersin hocası bilgisi farklı bir tabloda tutulmalıdır.

3. **Üçüncü Normal Form (3NF)**:

- Veritabanı 2NF'ye uygun olmalıdır.

- Her sütun, yalnızca birincil anahtara bağımlı olmalıdır, ancak birincil anahtara değil de başka bir sütuna bağımlı olan sütunlar da olmamalıdır.

**Örnek**:

Eğer bir tablodaki "Öğrenci Adı" ve "Öğrenci Adresi" gibi bilgiler var ve "Öğrenci Adresi" "Şehir" sütununa bağlıysa, "Şehir" bilgisinin ayrı bir tablodan alınması gerekebilir.

4. **Dördüncü Normal Form (4NF)**:

- Veritabanı 3NF'ye uygun olmalıdır.

- Tablolar arasında çoklu bağımlılıklar olmamalıdır. Yani, bir sütunun değeri, diğer sütunların değerlerinden bağımsız olmalıdır.

**Örnek**:

Eğer bir tablodaki her satırda birden fazla telefon numarası yer alıyorsa, bu telefon numaralarının her biri ayrı bir satırda yer almalı, yani çoklu bağımlılık olmamalıdır.

5. **Beşinci Normal Form (5NF)**:

- Veritabanı 4NF'ye uygun olmalıdır.

- Tablolar arasında birleşim bağımlılıkları olmamalıdır. Bu, veritabanındaki her bilginin doğru şekilde temsil edilmesini ve verinin her yönüyle birleştirilebilmesini sağlar.

**Örnek**:

Eğer bir tablodaki her satırda müşteri, ürün ve satış bilgileri yer alıyorsa, bu tablonun çeşitli alt tablolara ayrılması gerekebilir.

Normalizasyonun Zorlukları ve Dikkat Edilmesi Gerekenler

Normalizasyon, veritabanı yönetimini oldukça iyileştirse de, bazı durumlarda veritabanı tasarımını karmaşık hale getirebilir. Normalizasyon süreci bazen performans kaybına yol açabilir, çünkü veriler daha fazla tabloya dağıldığında, sorgular daha karmaşık hale gelebilir ve daha fazla birleşim (join) işlemi gerektirebilir. Ayrıca, çok sayıda tabloya sahip bir veritabanının yönetimi de zorlu olabilir.

Normalizasyonun Örnekleri

Bir öğrenci veritabanı üzerinden normalizasyon sürecine örnek verecek olursak:

1. **Başlangıç Tablosu (Ham Veri)**:

| Öğrenci Adı | Ders Adı | Hoca Adı |

|-------------|---------------|--------------|

| Ali | Matematik | Dr. Ahmet |

| Ayşe | Fizik | Prof. Zeynep |

| Ali | Kimya | Dr. Ahmet |

2. **1NF (Birinci Normal Form)**:

- Ders ve hoca bilgileri ayrı ayrı satırlarda yer alacak şekilde düzenlenir.

| Öğrenci Adı | Ders Adı | Hoca Adı |

|-------------|-----------|--------------|

| Ali | Matematik | Dr. Ahmet |

| Ayşe | Fizik | Prof. Zeynep |

| Ali | Kimya | Dr. Ahmet |

3. **2NF (İkinci Normal Form)**:

- Öğrencilerle ilgili tüm bilgiler bir tabloda, ders ve hoca bilgileri ayrı bir tabloda yer alır.

Öğrenciler Tablosu:

| Öğrenci Adı | Öğrenci No |

|-------------|------------|

| Ali | 1001 |

| Ayşe | 1002 |

Dersler Tablosu:

| Ders Adı | Hoca Adı |

|-----------|--------------|

| Matematik | Dr. Ahmet |

| Fizik | Prof. Zeynep |

| Kimya | Dr. Ahmet |

Kayıtlar Tablosu:

| Öğrenci No | Ders Adı |

|------------|-----------|

| 1001 | Matematik |

| 1002 | Fizik |

| 1001 | Kimya |

Normalizasyon süreci, her aşamada veri yapısının daha düzenli hale gelmesini sağlar ve veritabanındaki tutarsızlıkları engeller. Bu da sonuçta daha verimli ve hatasız bir veritabanı yönetimi sağlar.