Professional Documents
Culture Documents
Ünite 8: Normalleştirme
1
YBS206U-VERİTABANI SİSTEMLERİ
Ünite 8: Normalleştirme
ünitelerde anlatılmış olan “cascade delete” SQL komutu fazla bilgi tek bir sütunda tutulamaz.
kullanılması hâlinde bu aykırılık oluşmayacaktır. Tekrarlanan veriler kaldırılır. 1NF’de bir
“Cascade” komutu öncelikle detay tablolardaki kayıtları tablodaki tüm alanlar birincil anahtar (birleşik
siler daha sonra detay tabloların bağlı olduğu asıl anahtar olabilir) ile doğrudan ya da dolaylı
tablodaki kaydı siler. benzersiz olarak belirlenebilir.
2. Normal Form (2nd Normal Form - 2NF) Bu
Güncelleme Aykırılığı: Güncelleme aykırılığı silme
aşamada kısmi fonksiyonel bağımlılıklar
aykırılığına benzer. Asıl ve detay ilişkili tablolarda
kaldırılır. Tüm alanlar birincil anahtar ile
güncelleme yaparken asıl tablodaki veri yok edilerek detay
belirlenebilir olmalıdır. Bu aşamada asıl
tablosundaki veriler ilişkisiz bırakılmamalıdır. Bu
tablodaki birincil anahtara bağlı olan ancak
aykırılığı önlemek için birincil anahtar değerinde
tekrar eden alanlar yeni bir tabloya taşınır. Asıl
güncelleme yaparken detay tablolarda da ilişkili yabancı
tablo ile yeni tablo arasında çoklu bir ilişki
anahtarlar sırasıyla (cascade) güncellenmelidir.
kurulur. Yeni tablo tekrar eden alanları tek kayıt
Normalleştirme altında birincil anahtar ile belirler. Yeni
Veritabanı tasarlarken kullanılan tablolar ve tablolar arası tablodaki birincil anahtar asıl tabloya yabancı
ilişkiler ile ortaya konulan modelin iyi bir tasarım olup anahtar olarak yerleştirilir. Asıl tabloya
olmadığına karar vermek gerekir. Eğer tablolar veya yerleştirilen yabancı anahtar aynı tablodaki
aralarındaki ilişkiler iyi tanımlanmamış ise daha küçük birincil anahtarın bir parçası değildir.
tablolara bölünmeli ve tablolar arası yeni ilişkiler 3. Normal Form (3th Normal Form - 3NF)
oluşturulmalıdır. Normal formlar bu iyileştirme Geçişli fonksiyonel bağımlılıklar kaldırılır.
işlemlerinin yapılması için rehberlik yapmak üzere Yani birincil anahtar tarafından dolaylı olarak
tanımlanmıştır. Eğer tanımlanmış olan ilişkisel model bu belirlenen alanlar yok edilir. Geçişli
normal formlar-dan herhangi birine uyuyorsa modelden fonksiyonel bağımlılığı kaldırmak için asıl
ilgili hatalar giderilmiş demektir. Normalleştirme her biri tablodaki birincil anahtara dolaylı bağımlı
bir normal forma karşılık gelecek şekilde aşamalı olarak alanlar yeni bir tabloya taşınır. Boyce-Codd
gerçekleştirilir. Normal Form (BCNF) Fonksiyonel
bağımlılıktan geri kalan tüm aykırılıklar
Normalleştirmenin amaçları: kaldırılır. Bir tablo 3NF’de ise ve her belirleyici
anahtar olarak tanımlandıysa ilgili tablo BCNF
1. Veri arıklığını (redundancy) minimum yapmak.
formunda denir. Bu tanıma göre Eğer bir tablo
Böylece aykırılıklar önlenmiş ve fiziksel veri
BCNF ise bu tablo aynı zamanda 3NF’dir. Ama
saklama alanından tasarruf edilmiş olur.
tersi doğru değildir.
2. Veri bütünlüğünü sağlayan kısıtların
4. Normal Form (4th Normal Form - 4NF) Çok
uygulamasını basitleştirmek. Eğer bir alan tanımı
değerli hiç bir bağımlılık kalmaz. Birincil
birden fazla tabloda var ise farklı tablolardaki bu
anahtar olan alanlar ile diğer alanlar arasındaki
alanlar bir süre sonra birbirinden faklı değerler
her bir bağımsız bire-çoklu ilişki için ayrı tablo
içermeye başlayacaktır. Bu tip aynı alanın farklı
oluşturmak gerekir. Tekrarları önlemek için her
tablolarda tekrar tanımının önlenmesi gerekir.
tablo mümkün olduğunca küçük parçalara
Ayrıca bir tabloda aynı bilgiler yinelenen
bölünür.
satırlarda saklanırsa ekleme, silme ve güncelleme
5. Normal Form (5th Normal Form - 5NF) Bu
aykırılıklarına sebep olur ve veri bütünlüğünü
aşamada döngüsel fonksiyonel bağımlılıklar ve
korunamaz. Aykırılığa sebep olan ilişkiler tekrar
kalan tüm aykırılıklar kaldırılır. Projeksiyon
yapılandırılmalıdır.
Normal Form (PJNF) olarak adlandırılır.
3. Veri islemeyi (ekleme, güncelleme ve silme)
4NF’de kaldırılmamış olan tekrarlamalar daha
daha basit hâle getirmek. Daha basit SQL
küçük tablolara bölünerek kaldırılır. Etki Alanı
komutları daha yüksek performansta veriye
Anahtarı Normal Formu (Domain Key
erişimi sağlayabilecektir.
Normal Form-DKNF) Bu asama bir dönüşüm
4. Gerçek varlık ve ilişkileri daha iyi temsil edecek
olmak yerine en üst seviyede normaliz edilmiş
veritabanı modeli tasarımını gerçekleştirmek ve
veritabanı kavramsal modeli seviyesinin
ilerideki geliştirmeler için sağlam bir taban
ölçüsüdür. Normal formlar her aşamada daha
oluşturmak.
fazla kısıt uygulamaktadır. Öncelikle 1nci
Normalleştirmenin aşamaları: Normal Form ile tablolar ilişkisel yapıya
dönüştürülür ve izleyen aşamalarda sırasıyla
1. Normal Form (1st Normal Form - 1NF)
kısmi ve geçişli fonksiyonel bağımlılıklar ve
Tablolar ilişkilendirilebilir şekilde tasarlanır ve
aykırılıklar mantıksal veritabanı tasarım
çok değerli öznitelikler kaldırılır. Tablonun her
modelinden kaldırılır. Veritabanı
bir satır ve sütun kesişimindi atomik değer
normalleştirmesinde önce 1NF daha sonra 2NF
olacak şekilde tablo tekrar yapılandırılır. Birden
olmak üzere her asama sırayla uygulanır.
2
YBS206U-VERİTABANI SİSTEMLERİ
Ünite 8: Normalleştirme
Herhangi bir asama atlanmaz ve sıralama vardır. Burada satışlar ve satılan ürünler asıl detay
değiştirilmez. Genel olarak normalleştirme tablolara bire çok ilişki ile bölünmelidir.
tekrarlanan veriyi kaldırarak verideki artıklı
1NF sonucunda elde edilen tabloda birincil anahtara kısmi
grupları minimize eder. Bunun sonucu olarak
ve geçişli bağımlılıklar olabileceği için ekleme, silme ve
aykırılıkların kaldırıldığı daha iyi bir tasarım ve
güncelleme aykırılıkları ile karşılaşılabilir.
fiziksel saklama alanının daha etkin kullanımı
gerçekleştirilmiş olur. Günümüz modern 1. Ekleme Aykırılığı: Yeni bir satış bilgisinin
ilişkisel veritabanı uygulamalarında 3NF’den eklenmesi için müşteriye ve satılan ürüne ait
sonraki normalleştirme aşamaları genellikle tedarikçi bilgileri önceden var olsa da tekrar
kullanılmaz. 3NF’nin ilerisindeki girilmelidir. Benzer şekilde ilişkili tablolarda veri
normalleştirme adımları tasarlanan bütünlüğü korunacak şekilde bilgiler her bir
veritabanında çok fazla tablo üretilmesine sebep tabloya kaydedilmelidir.
olur. Dolayısı ile de SQL komutlarındaki 2. Silme Aykırılığı: Müşteri bilgisi Satışlar tablosu
bitişme (join) işlem inde çok fazla tablo ile birlikte tutulduğu için ilgili müşteriye ait tüm
kullanılır. Daha büyük bitişmeler daha karmaşık satışların silinmesi hâlinde müşteri bilgisi de
sorgulara, daha karmaşık sorgular da sistemde kaybedilmektedir. Benzer şekilde kaldırılacak
performans düşüşüne sebep olur. Genelde iyi bilgi veri bütünlüğü korunacak şekilde
performans, ilişkisel veritabanı tasarımındaki tablolardan doğru sıra ile (cascade) silinmelidir.
ilişkileri mükemmelleştirmek için yapılan daha 3. Güncelleme Aykırılığı: Ürüne ait bir bilgi
küçük tablolara bölmeye (4NF, 5NF) tercih değiştirilmek istendiğinde birden fazla kaydın
edilir. güncellenmesi gerekecektir. Bu sorun çok fazla
verinin olduğu veritabanlarında performans
Normal Formlar düşüklüğüne ve tüm alanların güncellenememesi
İlk aşamada varlıklar tüm öznitelikleri içerecek şekilde bir hâlinde de veri bütünlüğünün bozulmasına sebep
tabloda ifade edilir. Örnek ver iler tablonun satırlarına olacaktır.
kaydedilir. Veri tekrarlarına izin verilir. Bu aşamadaki
veritabanı modeli Sıfırıncı Normal Formda (0NF) kabul İkinci Normal Form (2NF): İkincil normal form 2NF’de
edilir. Sekil 8.2’de çok değerli alanlar ile oluşturulan tekrar eden değerler yeni tablolara taşınmaktadır. 2NF
0NF’de tablo gösterilmişti. Benzer şekilde her satırda bir kuralları aşağıdadır:
satış bilgisini saklamak üzere çok değerli alanlar yerine 1. Tablolar 1NF olmalıdır.
her bir ürün için ayrı alanlar kullanılırsa Sekil 8.7’de 2. Tüm anahtar olmayan alanlar birincil anahtara
verilen tablo elde edilir. Bu tablo da yine 0NF’dedir ve tam fonksiyonel bağımlı olmalıdır.
ilişkisel yapıda değildir. Farklı ürünler in kendine ait 3. Kısmi bağımlılıklar kaldırılmalıdır. Önceden de
alanlarda tutulması hâlinde tablo içinde çok fazla Null bahsedildiği gibi kısmi bağımlılık fonksiyonel
değer oluşmaktadır. Null değerler tabloda gri renkte
bağımlılığın bir özel durumu olup bir alanın
işaretlenmiştir. Satış bilgilerinin bu şekilde kaydedilmesi
birleşik anahtarın bir parçasına tam bağımlı
fiziksel saklama alanının bos yere kullanılmasına ve her
olması demektir. Kısaca birincil anahtara kısmi
bir ürünü sorgulamak için sorguda farklı bitişme bağımlı alanlar yeni bir tablo oluşturarak
kullanılmasına sebep olur. taşınmalıdır.
Birinci Normal Form (1NF): Birinci normal formda çok 2NF sonucunda elde edilen tablolarda kısmi bağımlılıklar
değerli ve çok parçalı öznitelikler ve tekrar eden gruplar
kaldırıldığı için güncelleme aykırılığı çözülür. Ancak
kaldırılır. Veritabanı normalleştirmesinin ilk aşamasında
birincil anahtara geçişli bağımlılıklar olabileceği için satır
uygulanan kurallar şunlardır:
ekleme ve satır silme aykırılıkları ile karşılaşılabilir.
1. Tekrar eden gruplar kaldırılır. 1. Ekleme Aykırılığı: Yeni bir ürün bilgisinin
2. Birincil anahtar tanımlanır. Birincil anahtar eklenmesi için satılan ürüne ait tedarikçi bilgileri
benzersiz olup tekrarlı değerlere izin vermez. önceden var olsa da tekrar girilmelidir.
3. Bütün diğer alanlar birincil anahtar ile doğrudan 2. Silme Aykırılığı: Tedarikçi bilgisi ürün ile
ya da dolaylı benzersiz olarak belirlenebilir. birlikte tutulduğu için ilgili ürüne ait tüm
4. Her bir alan atomik değer içermelidir. kayıtların silinmesi hâlinde tedarikçi bilgisi de
5. Bir alandaki değerler aynı veritipinde olmalıdır. kaybedilmektedir.
1NF’de tekrar eden alanlar yeni tablo oluşturularak Üçüncü Normal Form (3NF): Üçüncü Normal Form
kaldırılır. Sekil 8.7’de satıştaki ürünlerin tamamı aynı (3NF) Normalleştirmenin bu aşamasında 2NF’de
satırında gösterilmektedir. Bu durumda her bir satış karşılaşılan aykırılıkları çözmek için geçişli bağımlılıklar
kaydında, satıs ile ilgili olmayan ürüne ait alanlar bos da kaldırılır. 3NF kuralları:
kalacak (null değer alır) ve gereksiz yere fizik-sel saklama
ortamında yer tutacaktır. Bu nedenle 1NF’ye ihtiyaç 1. Tablolar 2NF olmalıdır.
3
YBS206U-VERİTABANI SİSTEMLERİ
Ünite 8: Normalleştirme