VERİTABANI Veritabanı Normalizasyonu
NORMALİZASYON NEDİR? Normalizasyon kısaca veritabanında bulunan verileri düzenleme süreci olarak ifade edilebilir. Normalizasyon sürecinde veritabanlarında çok fazla sütun ve satırdan oluşan tablolar, veri tekrarlarının ve veri tutarsızlıklarının engellenmesi için dahaazsatır ve sütun içeren tablolara bölünmektedir. Bu tablolar belirli kurallara göre oluşturulmaktadır. Bu kurallara normalizasyon kuralları adı verilir. Her kural normalizasyon işleminin bir aşamasını belirtmektedir. Bu aşamalar normal form olarak tanımlanır.
Normalizasyon için birçok kural geliştirilmiştir. İlk üç kural E.F. Codd tarafından 1970 yılında oluşturulmuştur. Bundan sonra E.F. Codd ile Boyce birlikte Boyce-Codd normal formu geliştirmiştir. Bu kuralları zamanla dördüncü ve beşinci normal formların oluşturulması izlemiştir. Normalizasyonun amacı veri tekrarını en aza indirirek, veri fazlalığını ve veri turtarsızlığını önlemektir. Veri tekrarı veritabanı performansını etkilediği gibi gereksiz yere hafızada yer kullanılmasına, tutarsız verilerin depolanmasına neden olur. Birden fazla yerde veri tutulması ekleme, silme ve güncelleme gibi işlemlerin yapılmasını da zorlaştırır. Çünkü veri birçok yerde tutuluyor ise tüm veriler aynı şekilde eklenmeli, silinmeli ve güncelleştirilmelidir. Uygun biçimde normalize edilmiş bir veritabanında veri eklemek, silmek ve güncellemek çok daha hızlı ve kolay olur.
NORMALİZASYONUN AVANTAJLARI Veri yapısını düzenler. Veri bütünlüğünü sağlar. Veri tekrarını önler. Verilerin anlaşılabilirliği artar. Veritabanı performansını artırır.
1. NORMALİZASYON KURALI (BİRİNCİ NORMAL FORM) Tabloda bulunan her satırdaki her alanda sadece tek bir veri bulunması kuralıdır. Tek bir alanda birden çok veri tutmak veritabanı performansını düşürmekte ve verilerin sorgulanması, eklenmesi, güncellenmesi gibi işlemlerin yapılabilmesi için ek işlemler gerektirmektedir. Örneğin; öğrenci tablosunda tek bir satırda öğrencinin aldığı tüm dersleri belirtilirse bu kurala uyulmamış olur. Matematik dersine kayıtlı öğrencileri sorgulamak için önce ders alanında bulunan verilerin ayrıştırılması gerekmektedir. Bu da sorunlara neden olmaktadır. Bu nedenle tablonun birinci normal forma göre düzenlenmesi gerekmektedir.
1. NORMALİZASYON KURALI (BİRİNCİ NORMAL FORM) Birinci normalizasyon kuralının uygulanması tabloda da görüleceği gibi verileri ayrıştırırken veri tekrarına neden olmaktadır. Bu tabloda "Öğrenci No", "Adı", "Soyadı" alanlarında her öğrenci için tekrar eden kayıtlar bulunmaktadır. Bu tekrarlar tabloya satır eklemede, silmede ve güncellemede sorunlara neden olmaktadır.
Satır Ekleme Sorunu Tabloya bir satır eklerken mutlaka tüm verilere gereksinim duyulmaktadır. Örneğin öğrenci tablosuna bir öğrenci eklemek için "Ders" alanının da girilmesi gereklidir.
Satır Silme Sorunu Tablodan herhangi bir veri silinmesi için tüm satırın silinmesi gerekmektedir. Bu durum o satırdaki tüm verilerin silinmesine neden olacaktır. Örneğin öğrenci tablosundan bir öğrencinin ders kaydının silinmesi sonucunda o öğrenci ile ilgili diğer bilgiler de silinecektir.
Satır Güncelleme Sorunu Tabloda bulunan bir satırdaki tek bir alanın güncellenmesi için aynı veriye sahip diğer satırlardaki alanların da güncellenmesi gerekmektedir. Örneğin öğrenci tablosunda bir öğrencinin "Soyadı" alanı güncelleştirilmek istendiğinde tüm satırlardaki aynı öğrenciyle ilgili soyad verisi güncellenmelidir.
2. NORMALİZASYON KURALI (İKİNCİ NORMAL FORM) Birinci normal formda geçerli olan kurallar ikinci normal formda da geçerlidir. İkinci normal formda olan tüm veritabanı tasarımları, birinci normal forma dauymaktadır. Bir tabloda anahtar alan olmayan tüm alanların anahtar alana bağlı olması gerekmektedir. Anahtar alan ile diğer alanlar arasında kısmi bir bağımlılık değil tam bir bağımlılık bulunmaktadır. Alanlar arasındaki bağımlılıktan yararlanarak birinci normal formdaki tablolar, birden fazla tabloya dönüştürülerek ikinci normal forma ulaşılır. İkinci normal form, verilerin hafızada daha az yer kaplamasını sağlamak amacı ile geliştirilmiştir. Örneğin Eskişehir iline ait plaka numarası, ilçe ve beldeleri içeren bir tablo oluşturacak olursak, "Plaka", "İl", "İlçe No", "İlçe", "Belde No" ve "Belde" alanlarından oluşacaktır.
2. NORMALİZASYON KURALI (İKİNCİ NORMAL FORM)
Eskişehir iline ait plaka numarasını, ilçe ve beldelerini gösteren tablo birinci normal formda bir tablodur. Ancak tablo il, ilçe ve belde tablolarına bölünerek ikincil forma ulaşılabilir. Öncelikle il tablosu oluşturulur. İl tablosu "Plaka No" ve "İl Adı" alanlarını içerir. "Plaka No" alanı her şehir için farklı olacağı için eşsiz bir değere sahiptir ve birincil anahtar olarak tanımlanabilir.
İl tablosu oluşturulduktan sonra ilçe tablosu oluşturulur. Ancak ilçelerin il ile bağlantılı olması için ilçe tablosuna da "Plaka No" alanı eklenmelidir. İlçe tablosu "İlçe No", "Plaka No" ve "İlçe Adı" alanlarını içerir.
Beldeler, ilçeler ile bağıntılıdır. Bu nedenle belde tablosu oluşturulurken "İlçe No" alanı belde tablosuna eklenecektir ve tablo "İlçe No", "Belde No" ve "Belde Adı" alanlarından oluşacaktır.
Birinci normal formda tekrarlayan kayıtlar içeren ve birbirleriyle doğrudan bağımlı olmayan alanlar ayrılarak tablo, ikinci normal forma dönüştürülmüştür. İkinci normal formda birinci normal formda olan güncelleme sorunu ortadan kalkmasına karşın, satır ekleme ve silme sorunları devam etmektedir.
Satır Ekleme Sorunu Örneğin ilçe tablosuna yeni bir ilçe eklenebilmesi için il plaka numarasının da girilmesi gerekmektedir.
Satır Silme Sorunu Örneğin ilçe tablosunda bir ilçe silindiğinde il plaka numarasında silinmesi gerekmektedir.
3. NORMALİZASYON KURALI (ÜÇÜNCÜ NORMAL FORM) Üçüncü normal forma göre bir tablo içinde anahtar olmayan bir alan, anahtar olmayan diğer bir alan ile bağlantılı olamaz. Örneğin "Öğrenci No", "Adı" ve "Soyadı" alanlarından oluşan bir öğrenci tablosunda, öğrencilerin cinsiyet bilgilerinin de yer alması istenilebilir. Böyle bir durumda tabloya cinsiyet alanı eklenip erkekler için "E" kadınlar için "K" değerleri girilebilir. Ancak bu şekilde oluşturulacak tablo, üçüncü normal forma uymayacaktır. Üçüncü normal forma uyması için yeni bir cinsiyet tablosu oluşturup cinsiyet bilgilerini bu tablo ile ilişkilendirmek gerekmektedir.
3. NORMALİZASYON KURALI (ÜÇÜNCÜ NORMAL FORM)
4. NORMALİZASYON KURALI (DÖRDÜNCÜ NORMAL FORM) Dördüncü normal forma göre bir tablo içinde anahtar alanlar ile anahtarı olmayan alanlar arasında bire çok ilişki olamaz. Dördüncü normal formda olan tüm veritabanı tasarımları üçüncü normal forma da uymaktadır. Örneğin öğrencinin aldığı ders ve bildiği yabancı dil bilgilerini içeren tabloyu inceleyecek olursak; tabloda görüldüğü gibi ders ve yabancı dil bilgileri alanlarında boş kayıtlar oluşmaktadır.
Eğer boş kayıtlar yerine ders kaydının bulunduğu satıra yabancı dil bilgisi girilir ise bu sefer de tabloda görüldüğü gibi ders veya yabancı dil verisi kadar kayıt oluşturulması gerekecek ve bu durum veri tekrarına neden olacaktır.
Örneğin Ayşe Mutlu adlı öğrenci iki ders almakta ve bir tane de yabancı dil bilmektedir. Tabloda her ders kaydının olduğu satıra ayrıca yabancı dil bilgisi eklenmelidir. Oluşan tablo dördüncü normal forma göre düzenlenecek olursa, ders ve yabancı dil olarak iki tabloya bölünmelidir. Ders tablosu "Öğrenci No", "Adı", "Soyadı" ve "Ders" alanlarından, yabancı dil tablosu ise "Öğrenci No", "Adı", "Soyadı" ve "Yabancı Dil" alanlarından oluşacaktır.
5. NORMALİZASYON KURALI (BEŞİNCİ NORMAL FORM) Veritabanında bulunan tablolarda veri tekrarlarını ortadan kaldırmak amacı ile uygulanmaktadır. Dördüncü normal formda kaldırılamayan veri tekrarlarını ortadan kaldırmak için beşinci normalizasyon kuralı uygulanır. Beşinci normalizasyon kuralında tablo mümkün oldukça küçük parçalara bölünerek veri tekrarı ortadan kaldırır. Örneğin belirli firmaların ürünlerini satan bayileri ve bilgilerini gösteren tabloyu inceleyecek olursak. Bayiler birden çok firmanın birden çok ürününü satmaktadır. Bayilerin iki farklı firmanın ürettiği iki ayrı ürünü sattığını düşünürsek, oluşturulacak tablo;
Ancak bu şekilde oluşturulan tabloda "Firma 1" in "Ürün 1" i "Firma2" nin ise "Ürün2" yi ürettiği, "Bayii" ve "Bayi2" nin de sadece birer ürün satmakta olduğu görülmektedir. Bu şekilde oluşturulan tabloda gerekli veriler eksik kalmaktadır. Tabloyu genişletecek olursak;
Bu şekilde oluşan tablo bayiler ile ilgili tüm verileri içermekte ama veri tekrarı oluşmaktadır. Beşinci normal forma dönüştürmek için bu tablo üç tabloya bölünmelidir. Bölünen üç tabloda hem hangi bayinin hangi firmalar ile bağlantılı olduğunu, hem de hangi ürünleri sattığını ve hangi firmaların da hangi ürünleri ürettiğini gösterebilmekteyiz. Bu şekilde oluşturulan tablo beşinci normal forma uymaktadır.
BOYCE-CODD NORMAL FORMU Boyce-Codd normal form 1974'te Edgar Frank Codd ve Raymond Boyce tarafından geliştirilmiştir. Geliştirilen bu form yapısında amaç ilişkisel veritabanında oluşabilecek mantıksal hataları engellemektir. Boyce- Codd normal form yapısında, veritabanları birinci, ikinci ve üçüncü normal forma da uymak zorundadır. Bu formda belirleyici tüm alanların anahtar alan olması gerekmektedir. Örneğin öğrenci, bölüm ve danışman arasındaki ilişkiyi incelersek, oluşturulacak tablo "Öğrenci No", "Adı", "Soyadı", "Bölüm" ve "Danışman" alanlarını içerecektir.
Her bir satırdaki her alan sadece tek bir veri içermektedir. Bu nedenle birinci normal forma uymaktadır. Anahtar alan olmayan tüm alanlar anahtar alana bağlanmaktadır. Kısmi bir bağımlılık içermemektedir. Bu nedenle ikinci normal forma uymaktadır. Anahtar olmayan bir alan anahtar olmayan diğer bir alan ile bağlantılı değildir. Bu nedenle üçüncü normal forma uymaktadır.
Tablo üç normal formada uymaktadır ancak tabloda örneğin Ayça Yılmaz silindiği takdirde "Bölüm3" bilgileri de silinecektir. "Bölüm3" 'e yeni bir öğrenci kayıt olana kadar veritabanında "Bölüm3" kayıtlı olmayacaktır. Bu nedenle Boyce-Codd normal formuna göre tablo öğrenci-bölüm ve danışman-bölüm olarak iki ayrı tabloya bölünmelidir. Bu şekilde oluşturulan tablolar Boyce-Codd normal forma uymaktadır.