Normalizasyon Nedir?
İngilizce: Database Normalization
Normalizasyon, ilişkisel veritabanında tabloları bağımlılıklara göre düzenleyerek tekrarları azaltan ve veri tutarlılığını koruyan tasarımdır.
Normalizasyon Nedir?
Normalizasyon, ilişkisel veritabanı tasarımında veriyi gereksiz tekrar etmeyecek ve tutarsızlığa yol açmayacak şekilde tablolara ayırma sürecidir. Amaç aynı müşteri adı, ürün bilgisi veya adresin birçok yerde farklı kopyalar halinde tutulmasını engellemektir.
Örneğin sipariş tablosunda müşteri telefonunu her satıra yazmak yerine müşteri bilgisi ayrı tabloda tutulur, sipariş tablosu müşteri kimliğine referans verir. Böylece telefon değiştiğinde tek kayıt güncellenir.
Normal Formlar
- 1NF: Her alan atomik değer taşır; aynı hücrede liste tutulmaz.
- 2NF: Birincil anahtarın sadece bir parçasına bağlı alanlar ayrılır.
- 3NF: Anahtar olmayan alanların başka anahtar olmayan alanlara bağımlılığı kaldırılır.
Bu kurallar verinin anlamını daha net hale getirir. Foreign key, unique constraint ve transaction gibi veritabanı özellikleri normalleştirilmiş tasarımın güvenilir çalışmasına yardım eder.
Ne Zaman Esnetilir?
Normalizasyon, işlem sistemlerinde veri bütünlüğü için güçlüdür. Sipariş, müşteri, ödeme ve stok gibi alanlarda yanlış tekrarlar ciddi operasyon sorunlarına yol açabilir.
Raporlama ve analitik tarafında ise çok sayıda tabloyu join etmek performansı düşürebilir. Bu durumda denormalizasyon, özet tablo veya materialized view gibi çözümler kullanılabilir. SQL ve PostgreSQL gibi ilişkisel veritabanlarında tasarım kararı, yazma tutarlılığı ve okuma performansı dengesiyle verilmelidir.
İlgili Terimler
ERD, veritabanındaki varlıkları, alanları ve ilişkileri görselleştirerek tasarım kararlarını anlaşılır hale getiren diyagramdır.
Foreign KeyForeign key, bir tablodaki değeri başka tablonun anahtarına bağlayarak ilişkisel veritabanlarında referans bütünlüğünü koruyan kısıttır.
PostgreSQLPostgreSQL, ilişkisel veri modelini JSON, indeksleme ve genişletilebilirlik özellikleriyle birleştiren açık kaynaklı ACID uyumlu veritabanıdır.
SQLSQL, ilişkisel veritabanlarında tabloları sorgulamak, değiştirmek ve raporlamak için kullanılan standart veri işleme dilidir.