Normalizasyon
Vikipedi, özgür ansiklopedi
[değiştir] Normalizasyon (Ayrıştırma)
Normalizasyon, veritabanlarında çok fazla sütun ve satırdan oluşan bir tabloyu tekrarlardan arındırmak için daha az satır ve sütun içeren alt kümelerine ayrıştırma işlemine denir.
Eğer bir ilişki belirli bir normal formda (3NF, BCNF, v.s.) ise, zaten bazı problemlerin oluşabilmesi engellenebilmiştir. Bu yüzden şemanın daha fazla ayrıştırılmasına gerek yoktur.
Farzedelim ki R ilişkisi A1,..,An niteliklerini içersin. R’nin ayrıştırıması R’yi bir ya da daha fazla ilişkiyle yer değiştirmektir. Öyle ki;
- Her bir yeni ilişki şeması, R’nin niteliklerinin bir alt kümesini içerir.R’de olmayan hiçbir nitelik bu yeni ayrıştırılmış şemalarda yer alamaz.
- Her R niteliği bu ilişkilerden birinin bir niteliği olarak gözükür.
R’nin ayrıştırılması ile ayrıştırmanın ürettiği ilişki şemalarının örnekleri depolanır.
[değiştir] Normal formlar
Bu kısımda öncelikle fonksiyonel bağımlılıkları, Birincil Anahtarı (primary key, pk ) temel alan formlar üzerinde duracağız.
- 1NF (Birinci Normal Form): Bütün niteliklerin kendi öz alanından (domain) aldığı değerler atomik olmak zorundadır. İlişkisel veri tabanı modelinin temel kuralıdır ve her nitelik ancak atomik veriler alabilir.Örneğin kitap tablosunda, birden fazla yazarı olan kitap için yazar1, yazar2, yazar3 diye alanlar açsaydık, bu kurala uymamış olurduk. Böyle bir durumda, ayrıca yazarlar tablosu da oluşturarak kuralı çiğnememiş oluruz.
- 2NF (İkinci Normal Form): Eğer R’deki herhangi bir birincil olmayan nitelik A, R’nin hiçbir anahtar niteliğine kısmi fonksiyonel bağımlı değilse bu ilişki şeması 2NF’dir denir. Burada kısmi fonksiyonel bağımlılıktan şunu anlamalıyız: Eğer X --> Y geçerli ise ve bir nitelik A X’in elemanı ise ve A, X’ten çıkarıldığı halde söz konusu bağımlılık hala geçerli ise burada bir kısmi fonksiyonel bağımlılık vardır.
- 3NF (Üçüncü Normal Form): Eğer R’deki herhangi bir birincil olmayan (non-prime) nitelik A, R’nin hiçbir anahtar niteliğine geçişli (transitively) fonksiyonel bağımlı değil ve hali hazırda 2NF’da ise, bu ilişki şeması R 3NF’dadır denir. Burada geçişli fonksiyonel bağımlılıktan şunu anlamalıyız: Eğer X --> Y ve R’nin herhangi bir anahtarının altkümesi olmayan nitelikler kümesi Z söz konusu ve de X --> Y ve Y --> Z birlikte geçerli olmamalıdır.
Daha genel bir tanım aşağıdaki gibi verilebilir:
Eğer bir ilişki şeması R 3NF’da ise ve R’de bir fonksiyonel bağımlılık X --> A söz konusu ise; ya X , R’nin bir süperanahtarıdır (superkey) ya da A, R'nin birincil niteliğidir (prime attribute). Birincil nitelik demekle anahtarı oluşturan niteliklerin herbirini kastediyoruz.
Bir R ilişkisinin 3NF ilişkilerine kayıpsız-birleştirme (lossless-join) ve bağımlılıkların-korunması (dependency-preserving) ayrıştırması her zaman mümkündür.
BCNF (Boyce Codd Normal Form): Eğer bir ilişki şeması R’de bir fonksiyonel bağımlılık X --> A söz konusu olduğunda, X nitelikler kümesi R’nin süperanahtarı ya da A, R�nin birincil niteliği ise, bu ilişki şeması R BCNF’dadır.
[değiştir] Ayrıştırma ile İlgili Problemler
Üç potansiyel problem olabilir. Bunlar:
- Bazı sorgular daha fazla gerçekleştirim süresi gerektirir, yani daha pahalı olurlar. Bu problemi ortadan kaldırmak ancak söz konusu sorgulara özgün bazı önlemler alarak mümkündür.
- Ayrıştırılmış ilişkilerin elde edilmiş örneklerinden orijinal ilişkinin örneğine karşılık geleni tekrar elde edemeyebiliriz. Bu problem ancak kayıpsız-birleştirme garanti altına alınırsa ortadan kalkar.
- Bazı bağımlılıkların sağlanıp sağlanmadığını kontrol edebilmek için ayrıştırılmış ilişkilerin örneklerinin birleştirilmesi gerekebilir. Bu problem bağımlılıkları-koruma garanti altına alınırsa ortadan kalkar.