Normalleştirmeye Karşı Denormalizasyon
İlişkisel veritabanları ilişkilerden (ilgili tablolar) oluşur. Tablolar sütunlardan oluşur. Tablolar iki büyükse (yani bir tabloda çok fazla sütun varsa), veritabanı anormallikleri oluşabilir. Tablolar iki küçükse (yani veritabanı birçok küçük tablodan oluşuyorsa), sorgulama için verimsiz olacaktır. Normalleştirme ve Denormalizasyon, veritabanının performansını optimize etmek için kullanılan iki işlemdir. Normalleştirme, veri tablolarında bulunan artıklıkları en aza indirir. Denormalizasyon (normalleştirmenin tersi), fazla veri veya grup verisi ekler.
Normalizasyon nedir?
Normalleştirme, ilişkisel veritabanlarındaki verilerde mevcut olan fazlalıkları en aza indirmek için gerçekleştirilen bir işlemdir. Bu süreç esas olarak büyük tabloları daha az fazlalık içeren daha küçük tablolara böler (“Normal formlar” olarak adlandırılır). Bu daha küçük tablolar, iyi tanımlanmış ilişkiler yoluyla birbirleriyle ilişkilendirilecektir. İyi normalleştirilmiş bir veritabanında, verilerdeki herhangi bir değişiklik veya değişiklik yalnızca tek bir tablonun değiştirilmesini gerektirecektir. Birinci Normal Form (1NF), İkinci Normal Form (2NF) ve Üçüncü Normal Form (3NF), Edgar F. Codd tarafından tanıtıldı. Boyce-Codd Normal Form (BCNF), 1974 yılında Codd ve Raymond F. Boyce tarafından tanıtıldı. Daha Yüksek Normal Formlar (4NF, 5NF ve 6NF) tanımlanmıştır, ancak nadiren kullanılmaktadır.
1NF ile uyumlu bir tablo, gerçekte bir ilişkiyi temsil ettiğini (yani, tekrar eden herhangi bir kayıt içermediğini) ve ilişkisel değerli herhangi bir öznitelik içermediğini (ör.e. tüm öznitelikler atomik değerlere sahip olmalıdır). Bir tablonun 2NF ile uyumlu olması için 1NF ile uyumlu olması ve herhangi bir aday anahtarın parçası olmayan herhangi bir özniteliğin (yani asal olmayan öznitelikler) tablodaki aday anahtarlardan herhangi birine tamamen bağlı olması gerekir. Codd'un tanımına göre, bir tablonun 3NF'de olduğu söylenir, ancak ve ancak bu tablo ikinci normal formda (2NF) ise ve tablodaki bir aday anahtara ait olmayan her öznitelik doğrudan her birine bağlı olmalıdır. bu tablonun aday anahtarı. BCNF (3.5NF olarak da bilinir), 3NF tarafından ele alınmayan bazı anormallikleri yakalar.
Denormalizasyon nedir?
Denormalizasyon, normalleştirme işleminin tersi işlemidir. Normalleştirme, performansı optimize etmek için gereksiz veriler ekleyerek veya verileri gruplayarak çalışır. Fazladan veri eklemek verimsiz gibi görünse de, bazen denormalizasyon, ilişkisel veritabanı yazılımındaki normalleştirilmiş veritabanlarında (daha yüksek performans için ayarlanmış olsa bile) ağır performans cezalarına neden olabilecek bazı eksikliklerin üstesinden gelmek için çok önemli bir süreçtir. Bunun nedeni, bir sorguya sonuç üretmek için (normalleştirmenin sonuçları olan) birkaç ilişkiyi birleştirmenin bazen veritabanı sistemlerinin gerçek fiziksel uygulamasına bağlı olarak yavaş olabilmesidir.
Normalleştirme ve Denormalizasyon arasındaki fark nedir?
– Normalleştirme ve denormalizasyon tamamen zıt iki işlemdir.
– Normalleştirme, daha büyük tabloları daha küçük tablolara bölme işlemi, fazla verileri az altarak, denormalizasyon ise performansı optimize etmek için fazlalık verileri ekleme işlemidir.
– Veritabanlarındaki anormallikleri önlemek için normalleştirme yapılır.
– Denormalizasyon genellikle veritabanının okuma performansını iyileştirmek için yapılır, ancak denormalizasyon için kullanılan ek kısıtlamalar nedeniyle yazma işlemleri (yani ekleme, güncelleme ve silme işlemleri) yavaşlayabilir. Bu nedenle, normalleştirilmiş bir veritabanı, normalleştirilmiş bir veritabanından daha kötü yazma performansı sunabilir.
– Sıklıkla “acıyana kadar normalleştirmeniz, işe yarayana kadar normalleştirmemeniz” önerilir.