SQL Normalizasyonu ve Denormalizasyonu Nedir?
Veritabanı tasarımı, veritabanının etkinliğini ve performansını belirleyen önemli bir aşamadır. Veritabanı tasarımında iki temel yaklaşım bulunur: normalizasyon ve denormalizasyon. Bu makalede, normalizasyon ve denormalizasyon kavramlarını, avantajlarını ve dezavantajlarını ele alacağız.
Veritabanı Normalizasyonu
Normalizasyon Nedir?
Normalizasyon, veritabanı tasarımında veri tekrarını azaltmak ve veri tutarlılığını artırmak amacıyla yapılan bir süreçtir. Bu süreç, verilerin mantıksal bir yapıya göre düzenlenmesini ve belirli kurallara uygun hale getirilmesini içerir. Normalizasyon, genellikle bir dizi normal formu (1NF, 2NF, 3NF, vb.) takip eder.
Örnek: Müşteri Siparişleri Veritabanı
Normalizasyon Öncesi
Tüm müşteri siparişlerini depolayan tek bir tablo düşünün:
CustomerID | CustomerName | CustomerAddress | OrderID | OrderDate | Product |
---|---|---|---|---|---|
001 | Joe | 123 Apple St. | 1001 | 2021-08-01 | Laptop |
001 | Joe | 123 Apple St. | 1002 | 2021-08-05 | Phone |
002 | Austin Smith | 456 Orange Ave. | 1003 | 2021-08-03 | Tablet |
Bu tabloda tekrar eden veriler bulunuyor. (müşteri ayrıntılarının nasıl tekrarlandığına dikkat edin)
Normalizasyon Sonrası
Bunu normalleştirmek için, fazlalığı azaltmak için iki veya daha fazla tabloya bölebiliriz.
Customers Table (1NF, 2NF, 3NF)
CustomerID | CustomerName | CustomerAddress |
---|---|---|
001 | Joe | 123 Apple St. |
002 | Austin Smith | 456 Orange Ave.v |
Orders Table (1NF, 2NF, 3NF)
OrderID | OrderDate | Product | CustomerID |
---|---|---|---|
1001 | 2021-08-01 | Laptop | 001 |
1002 | 2021-08-05 | Phone | 001 |
1003 | 2021-08-03 | Tablet | 002 |
Normalleştirilmiş yapıda, fazlalığı ortadan kaldırdık (her müşterinin ayrıntıları yalnızca bir kez listelenir) ve müşteri kimliği aracılığıyla iki tablo arasında bir ilişki kurduk.
Normalizasyonun Avantajları:
- Veri Tutarlılığı: Normalizasyon, veri tekrarını azaltır ve veri tutarsızlıklarını önler. Aynı veri birden fazla yerde saklanmadığı için, güncellemeler merkezi bir noktada yapılabilir.
- Depolama Verimliliği: Veri tekrarının azalması, veritabanının daha az yer kaplamasını sağlar. Bu da daha az depolama alanı kullanımı anlamına gelir.
- Kolay Bakım: Normalizasyon, verilerin düzenli ve anlaşılır bir yapıda olmasını sağlar, bu da veritabanının bakımını ve yönetimini kolaylaştırır.
- Gelişmiş Sorgu Performansı: Verilerin düzenli bir şekilde depolanması, belirli türde sorguların daha hızlı ve etkili bir şekilde çalışmasını sağlayabilir.
Normalizasyonun Dezavantajları:
- Sorgu Karmaşıklığı: Çok sayıda tablo ve ilişki oluşturulması, karmaşık JOIN işlemlerine neden olabilir. Bu, bazı sorguların performansını olumsuz etkileyebilir.
- Veri Erişim Zamanı: Normalizasyon sürecinde, verilerin birden fazla tablodan alınması gerekebilir, bu da veri erişim süresini artırabilir.
- Ekstra İşlem Maliyeti: Veritabanı işlemlerinin daha fazla tablodan ve ilişkilerden oluşması, daha fazla işlem maliyeti ve kaynak tüketimine yol açabilir.
Veritabanı Denormalizasyonu
Denormalizasyon Nedir?
Denormalizasyon, normalizasyonun tersine, performans iyileştirmeleri sağlamak için veri tekrarını artırma sürecidir. Verilerin birden fazla tabloda tekrar saklanması, bazı sorguların daha hızlı çalışmasına olanak tanır.
Denormalizasyonun Avantajları:
- Performans Artışı: Denormalizasyon, sık kullanılan sorguların daha hızlı çalışmasını sağlar. Bu, özellikle okuma işlemleri yoğun olan uygulamalar için faydalıdır.
- Daha Az JOIN İhtiyacı: Verilerin birden fazla tabloda tekrar saklanması, bazı durumlarda JOIN işlemlerinin azaltılmasını sağlar, bu da sorgu performansını artırabilir.
- Hızlı Veri Erişimi: Veri tekrarının artırılması, verilerin doğrudan erişilmesini sağlar ve veri erişim süresini kısaltabilir.
Denormalizasyonun Dezavantajları:
- Veri Tutarsızlığı: Veri tekrarının artması, veri tutarlılığı sorunlarına yol açabilir. Güncellemeler birden fazla yerde yapılmalıdır ve bu da tutarsızlıklara neden olabilir.
- Depolama Maliyeti: Daha fazla veri tekrarı, daha fazla depolama alanı gerektirir ve bu da ek maliyetler doğurabilir.
- Bakım Zorluğu: Denormalize edilmiş veritabanları, veri güncellemeleri ve bakımı konusunda daha fazla karmaşıklık ve zorluk içerebilir.
Normalizasyon ve Denormalizasyon Karşılaştırması
Kullanım Senaryoları:
- Normalizasyon: Veri tutarlılığının ve bakımının ön planda olduğu uygulamalarda tercih edilir. Genellikle işlem (OLTP) sistemlerinde ve veri bütünlüğünün kritik olduğu durumlarda kullanılır.
- Denormalizasyon: Performansın ön planda olduğu ve okuma işlemlerinin yoğun olduğu uygulamalarda tercih edilir. Genellikle veri ambarları (OLAP) ve yüksek performans gerektiren sorgular için kullanılır.
Kaynakça
https://medium.com/@ndleah/a-brief-guide-to-database-normalization-5ac59f093161
https://www.guru99.com/database-normalization.html
https://www.simplilearn.com/automated-recruiting-in-companies-article