Normalizasyon (Normalization)

watch_later 2/10/2016
Fonksiyonel Bağımlılık Kavramı
Veritabanı şemasının oluşturulmasında, veritabanı tasarımının temeli olan normalizasyon kavramının kullanımı gerekmektedir.

SSN
Name
Section
Class
TCKN
001213082
Jonny Deep
Computer Engineering
4
44245432129
991213068
Caterina Murino
Human Resources
3
40445400027

Yukarıdaki tablosu için fonksiyonel bağımlılıklar:
SSN -> Name
SSN -> Name, Section, Class, TCKN
TCKN -> SSN, Name, Section, Class

Fonksiyonel bağımlılık kavramında -> operatörünün sol veya sağ tarafında birden fazla alan (nitelik) yer alabilir. Bu alanları küme ile ifade edersek -> operatörünün sol veya sağ tarafında birden fazla alan yanyana geldiğinde oluşan yeni yapıyı kartezyen çarpım kümesi olarak adlandırılır.

oracle

Normalizasyon Kavramı
Veritabanı normalizasyonu, ilişkisel veri modeli sistemlerinde hangi tabloların oluşturulacağına karar verme kurallarıdır. İyi tasarlanmış bir veritabanı uygulaması için bu kurallara uyma zorunluluğu uygulamanın kapsam ve önemiyle doğru orantılıdır.

Bir veritabanı tablosu bir tek varlık kümesine ait bilgileri tutmak için tasarlanır. İlişkisel veritabanı yaklaşımını ilişkisel yapan asıl unsur verilerin tablolara parçalanarak saklanmasıdır. Tabloların kaç adet olacağı ve birbiriyle nasıl ilişkilendirileceğine karar verirken, bazı kuralları kullanarak mantıksal bir plan elde edilmelidir.

Level I
Level II
Level III
Level IV
Eğer tablolar üzerinde verileri normalize yapılmazsa birçok sıkıntı meydana gelebilir. Bazı bilgiler birden fazla tekrarlanabilir. Bir bilgiyi UPDATE, DELETE ve INSERT için birden fazla tabloda bulma, değiştirme ve silme yapmamız gerekebilir. Bu nedenle normalizasyon kurallarını kullanılmalıdır.

İhtiyaçlarımız doğrultusunda normalizasyon işlemlerinin dozajını ayarlayarak iyi tasarlanmış varlık-ilişki şemalarına ulaşılabilir. Genel olarak kabul gören 6 normalizasyon formu vardır. Gerçek hayattaki uygulamalarda ilk 3 normalizasyon formu kurallarını yerine getirilirse iyi tasarlanmış bir veritabanı yapısı elde edilebilir.

Birinci Normal Form (1 NF)
Birinci Normal Formdaki bir tablo şu özelliklere sahip olmalıdır:
·         Tablo satır bağlamında tekrarlı veri içerebilir(Herhangi iki satır tamamen aynı olmamalıdır).
·         Her tablonun birincil anahtarı (primary key) olmalıdır.
·         Aynı tür veriyi tanımlamak için birden fazla alan(sütun) kullanılmamalıdır.
·         Nitelikler (Alanlar) çok değerli olmamalıdır. Bütün nitelik değerleri atomik olmak zorundadır.
·         Tablo tekrarlayan alanlar içermemelidir.

İkinci Normal Form (2 NF)
İkinci Normal Formdaki bir tablo, 1 NF’nin şartlarını sağlamalı, buna ek olarak birincil anahtar oluşumunda yer almayan hiçbir alan, birincil anahtarın hiçbir öz altkümesine fonksiyonel olarak bağımlı olmamalıdır.

Spare Part Number
Store
Piece
Store Address
42
Boston
2000
Main St.
333
Boston
1000
Main St.
390
New York
3000
Broad St.

Yukarıdaki envanter tablosu Birinci Normal Formun bütün kriterlerini sağlamasına rağmen, İkinci Normal Form gereklerini sağlamamaktadır. Tablonun birincil anahtarı Spare Part Number + Store alanlarının kombinasyonudur. ‘Store Address’ alanı birincil anahtara fonksiyonel olarak bağımlıdır. Aynı zamanda ‘Store’ alanına da fonksiyonel olarak bağımlıdır. ‘Store’ alanı birincil anahtarın bir öz altkümesi olduğu için tablonun 2 NF özelliği bozulmaktadır.

Bu tablo tasarımında olası problemler şunlardır:
·         ‘Store Address’ alanı aynı ‘Store’ alanındaki kayıtta tekrarlanmaktadır.
·         Eğer ‘Store Address’ alanında değişiklik meydana gelirse, ilgili her kayıtta güncelleme yapmak gerekecektir.
·         Eğer ‘Store’ alanının birinde hiç kayıt kalmazsa, ilgili kaydın ‘Store Address’ alanında da hiç kayıt tutulmayacaktır.

Bu problemleri çözmek için iki ayrı tablo haline getirilmelidir. Böylece İkinci Normal Form kriterlerini sağlamış oluruz.
           
Spare Part Number
Store
Piece
42
Boston
2000
333
Boston
1000
390
New York
3000

Store
Store Address
Boston
Main St.
New York
Broad St.

Üçüncü Normal Form (3 NF)
Üçüncü Normal Formdaki bir tablo, İkinci Normal Formun şartlarını sağlamalı, buna ek olarak birincil anahtar oluşumunda yer almayan hiçbir alan, birincil anahtar oluşumunda yer almayan hiçbir alana fonksiyonel olarak bağımlı olmamalıdır.


Personal Number
Section
Section Address
234
Finance
Boston
223
Enginnering
Boston
399
Finance
Washington


Yukarıdaki tablo İkinci Normal Form’un bütün kriterlerini sağlamasına rağmen, Üçüncü Normal Form gereklerini sağlamamaktadır. Tablonun birincil anahtarı ‘Personal Number’ alanıdır. Tablonun 3 NF kriterlerine aykırı olmasına nedeni ‘Section Address’ alanı, ‘Section’ alanına fonksiyonel olarak bağlıdır. (‘Section’ birincil anahtar değildir.)

Bu tablo tasarımındaki problemler:

·         ‘Section Address’ alanı her yeni kayıtta tekrarlanmaktadır.
·         ‘Section Address’ alanında meydana gelecek herhangi bir değişiklik, ilgili bütün kayıtların güncellenmesini gerektirecektir.
·         Eğer ‘Section’ alanında hiç kayıt kalmazsa, ilgili ‘Section Address’ alanındaki kayıtta silinecektir.

Bu problemleri çözmek için iki ayrı tablo haline getirilmelidir. Böylece Üçüncü Normal Form kriterlerini sağlamış olur.

Personal Number
Section
234
Finance
223
Enginnering
399
Finance

Section
Section Address
Finance
Boston
Enginnering
Washington

Boyce-Codd Normal Form (BCNF) (3.5 NF)
3.5NF’daki bir tablo Üçüncü Normal Form’un gereklerini taşımalı ve ayrıca her determinant (belirleyici kolon) aynı zamanda bir aday anahtar olmalıdır.

Determinant: Aynı satırdaki diğer kolon değerlerini belirlemek için kullanılan kolon kümesi determinant olarak adlandırılır.
Normalizasyon Katman Simülasyonu
Dördüncü Normal Form (4 NF)
Bir veri tabanının 4NF olabilmesi için 3NF’nin gereklerini sağlamalıdır ve ayrıca çok değerli bağımlılıkları (multi valued dependency) olmamalıdır.

Multi Valued Dependency: Bir ya da daha çok veri satırının var olması, aynı tabloda başka bir (ya da daha çok) veri satırının bulunmasını gerektirdiğinde ortaya çıkar. Geliştirilen bir yazılımın tek kullanıcılı ve çok kullanıcılı olarak iki versiyonu olsun. Bu yazılımı içeren bir veritabanı oluşturulsun. Veritabanında yazılımın tek kullanıcılı versiyonunu eklenirse mutlaka yazılımın çok-kullanıcılı versiyonu için de bir kayıt açmak zorunludur.

Beşinci Normal Form (5 NF)
Tekrarlamaları ortadan kaldırmak için her bir tablonun mümkün olduğunca küçük parçalara bölünmesi gerekir. Aslında ilk 4 kural sonuçta bu işe yarar ancak, bu kurallar kapsamında olmayan tekrarlamalar da 5 normalizasyon kuralı ile giderilebilir.






Bir sonraki yazımda görüşmek üzere…



sentiment_satisfied Emoticon