Ayrıştırma

**Normalizasyon** (**Ayrıştırma**), 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şlemidir.

Fransız bilim insanı Hubert Francesci tarafından ortaya atılan 3 esnek kuralına uygun protonlar tarafından entegre edilen bir sisteme sahiptir. Satır başlarında yapılan tekrar veritabanında ayrıştırma işlemine tabii tutularak depolanır.

Eğer bir ilişki belirli bir normal formda (3NF, BCNF, vs.) ise, problemlerin bazıları oluşmaz, 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ılması 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.

## Normal formlar

* 1NF (*Birinci Normal Form*): Bütün niteliklerin öz alanından (*domain*) aldığı değerler atomik olmak zorundadır. İlişkisel veritabanı 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ğne&shy;memiş 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 halihazı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. 
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 her birini 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.

*[[Boyce–Codd normal formu|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.

## Sorunlar
* 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ü 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.

## Dış bağlantılar
Normalizasyon için seviyelerin açıklandığı kaynaklar:
* Bilgisayar Kavramları: Birinci Normal Şekil 
* Bilgisayar Kavramları: İkinci Normal Şekil 
* Bilgisayar Kavramları: Üçüncü Normal Şekil 
* Bilgisayar Kavramları: Dördüncü Normal Şekil 
* Veritabanı Normalizasyonu