You are on page 1of 4

YBS206U-VERİTABANI SİSTEMLERİ

Ünite 8: Normalleştirme

özniteliğine bağımlıdır. Yani C özniteliği A’ya kısmi


Giriş bağımlıdır.
Veritabanı tasarımı kavramsal, mantıksal ve fiziksel olmak
üzere üç aşamada gerçekleştirilir. Kavramsal modelleme Geçişli Bağımlılık (Transitive Dependence): Bir tabloda
aşamasında veriler çözümlenir ve veriler arasındaki yer alan bazı özniteliklerin başka bir öznitelik aracılığıyla
ilişkiler incelenerek varlık ilişki diyagramları (Entitiy üçüncü bir özniteliğe bağımlı olması geçişli bağımlılık
Relationship - ER) oluşturulur. Bu aşamanın devamında olarak adlandırılır. Bir veritabanında yer alan tablonun A,
mantıksal modelleme ile veritabanının yönetim sistemi B, C ve D seklinde toplam dört özniteliği olsun. Bu
bağımsızlığı, teknoloji, veri depolama veya tabloda A birincil anahtar olsun. A⤏B ve B⤏C
organizasyonel kısıtları sağlanır. Mantıksal tasarımda artık fonksiyonel bağımlılıklarının olduğunu varsayalım.
veriler ve ilişkiler veritabanı tabloları ve tablolar arası Verilen bu iki fonksiyonel bağımlılık incelendiğinde, C
ilişkilere dönüştürülür. Son aşamada da veri süreklilik özniteliğinin B özniteliği aracılığıyla A özniteliğine
teknolojisinin bir sürümü ile tanımlanmış fiziksel veri bağımlı olduğu görülür. Bu durum geçişli bağımlılık olup
modeli oluşturulur. A⤏C fonksiyonel bağımlılığı yazılabilir. Başka bir deyişle
geçişli bağımlılıkta; C özniteliği, A özniteliği ile bir diğer
Veritabanı modelleme aşamalarına ilave olarak öznitelik B üzerinden dolaylı olarak belirlenir.
tasarımımız normalleştirme kurallarına uygun olarak
düzenlenmelidir. Normalleştirme ile tablolar ve tablolar Tam Fonksiyonel Bağımlılık (Full Functional
arasındaki ilişkiler tekrar düzenlenerek tutarsız Dependence): Bir özniteliğin değeri bağlı olduğu anahtar
bağımlılıklar kaldırılır ve artıklıklar (redundancy) en aza ile benzersiz olarak belirleniyorsa bu ilişki tam bağımlılık
indirilir. İlk defa tasarlanan bir veritabanı mantıksal olarak adlandırılır.
modelinde ilişkiler (tablolar ve tablolar arasındaki ilişki Çok Değerli Bağımlılık (Multiple Valued Dependence):
tanımları) normalleştirme kuralları ile iyi yapılandırılmış Tabloda bir alandaki değerler virgülle ayrılarak
hâle getirilir. Normalleştirme kuralları iki öznitelik oluşturulan liste veya dizi değerlerinden oluşuyorsa çok
arasındaki kısıtlara dayanan fonksiyonel bağımlılık değerli bağımlılık vardır.
kavramı ile test edilir. Her aşamada uygulanan kurala
Normal Form (NF) adı verilir. İlk kural uygulanıyorsa Döngüsel Bağımlılık (Cyclic Dependency): Döngüsel
veritabanı tasarımının birinci normal formda (1NF) bağımlılıkta döngü kapalı halka, tekrar etme anlamında
olduğu, ikinci kural uygulanıyorsa ikinci normal formda kullanılmaktadır. Veritabanında bir öznitelik A, diğer
(2NF) olduğu şeklinde ifade edilir. öznitelik B’ye bağımlı iken aynı zamanda B özniteliği de
A’ya bağımlı ise döngüsel bağımlılık olarak adlandırılır.
Fonksiyonel Bağımlılık Döngüsel bağımlılık genelde tablolardaki iki ya da daha
Normalleştirme fonksiyonel bağımlılıkların analizine fazla alandan oluşan birleşik anahtarlarda oluşur.
dayalı olarak yapılır. Fonksiyonel bağımlık iki set
Aykırılıklar
öznitelik arasındaki kısıtlardır. Bir veritabanındaki
herhangi bir tablo T ve bu tablodaki iki öznitelik A ve B Veritabanında verinin değiştirilmesi sırasında mantıksal
olsun. Eğer A özniteliğinin değeri B özniteliğinin değerini olarak bozulmaya yol açan durumlara aykırılık
belirliyorsa B özniteliğinin A özniteliğine bağımlı olduğu (anomaly) denir. Özellikle büyük veritabanlarında büyük
söylenir. B’nin A’ya fonksiyonel bağımlılığı ok işareti ile miktardaki kayıtlar tek komut ile değiştirildiğinde veya
A⤏B seklinde gösterilir. Burada tanımlanan fonksiyonel eklendiğinde bir aykırılık oluşursa ortaya çıkan sorunun
bağımlılık matematiksel bağımlılık değildir. Yani B’nin çözümü de çok zor olacaktır. Bu nedenle iyi tasarlanmış
değeri A’nın değerinden hesaplanmaz. Bunun yerine A’da bir ilişkisel veritabanında aykırılıklar giderilmelidir. Bir
var olan her bir değer için B’de bir değer olduğunu veritabanında görülebilecek üç aykırılık vardır. Bunlar
gösterir. Bu ilişki A özniteliği B özniteliğini belirler ekleme, silme ve güncelle-me aykırılıkları olarak
seklinde ifade edilir. sıralanabilir. Eğer bir tabloda bu aykırılıklardan biri veya
birkaçı varsa bu tablo ve dolayısıyla veritabanının iyi
Kısmi Bağımlılık (Partial Dependence): Bir tabloda tasarlanmadığı söylenir. Bu nedenle veritabanı tasarımları
birincil anahtar bir veya daha fazla öznitelikten oluşabilir. bu aykırılıkların oluşmayacağı şekilde iyileştirilmelidir.
Eğer birincil anahtar iki veya daha fazla öznitelikten
oluşuyorsa bu tür birincil anahtarlara birleşik anahtar Ekleme Aykırılığı: Veritabanında birincil ve yabancı
(composite key) adı verilir. Bu tür tablolarda anahtar anahtar ile ilişkilendirilmiş iki tablo olsun. Birinci tabloda
olmayan öznitelik, birleşik anahtarın sadece bir kısmı ile kayıtların özet bilgilerinin, diğerinde ise ilgili kayıtların
belirleniyorsa buna kısmi bağımlılık denir. Bir detay bilgilerinin tutulduğunu varsayalım. Bu iki tablo asıl
veritabanında yer alan tabloda A, B, C ve D gibi toplam ve detay tablolar olarak isimlendirilir. Asıl ve detay
dört özniteliğin olduğunu varsayalım. Bu tablonun birincil tablolarda, detay tabloya veri eklenirken asıl tabloya ilgili
anahtarı da (A, B) olsun. Bu durumda AB⤏CD veri eklenmez ise ekleme aykırılığı oluşur.
fonksiyonel bağımlılığı yazılabilir. Bu tabloda A⤏C Silme Aykırılığı: Silme aykırılığı, asıl ve detay ilişkili
fonksiyonel bağımlılığını da varsayalım. Bu durumda C tablolarda, kayıtların detay bilgilerini silmeden asıl
özniteliği birleşik anahtarın sadece bir kısmı olan A tablodaki satırlarının silinmesi ile oluşur. Önceki

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

2. Geçişli bağımlılıklar kaldırılmalıdır. Geçişli


bağımlılıkta bir alan birincil anahtar ile ikinci bir
alan üzerinden dolaylı olarak belirlenir.
3. Ayrılan alanlar için yeni bir tablo oluşturulur.
3NF’de bir tablodaki anahtar olamayan tüm
alanlar birincil anahtara bağlı olmak zorundadır.
Farklı durumlarda 3NF’nin uygulanması izleyen kesimde
örneklerle açıklanacaktır.
3NF’de Çoka Çok İlişki Durumu: İki tablo arasında çoka
çok ilişki oluşursa bu tablolarda yapılacak sorgu
sonucunda tek bir satır yerine çoklu satır sonuç gelecektir.
Bu sorunu gidermek için yeni bir tablo oluşturulur ve çoka
çok ilişkili iki tablonun birincil anahtarları bu tabloya
yabancı anahtar olarak eklenir.
3NF’de Geçişli Bağımlılık Durumu: Geçişli bağımlılık
durumunun çözümü 3NF’nin en yaygın kullanımındandır.
Geçişli bağımlılık birincil anahtara dolaylı olarak bağlı
olan alanlardan oluşur.
3NF’de Hesaplanmış Değerleri Saklayan Alanların
Durumu: 3NF’de aynı tablodan hesaplanarak bulunan
değerler birincil anahtara geçişli olarak bağımlı
olduklarından kaldırılır. Değer hesaplanabildiği için yeni
tablo oluşturmaya gerek kalmaz.
BCNF,4NF ve 5NF
Günümüzde modern ilişkisel veritabanı modellerinde
genelde 3. normal formdan sonrası genelde uygulanmaz.
3NF üzeri normalleştirmeler veritabanında çok fazla tablo
ve ilişki oluşturur. Bunun sonucunda da uygulamada
oluşturulacak SQL bitişmeleri çok karmaşık olur.
Karmaşık bitişmeler ise sorguların tamamlanma
sürelerinin uzamasına sebep olur. Dolayısıyla uygulamada
veriye erişimde performans düşüşleri yaşanır. Bu nedenle
uygulamacılar tabloları daha küçük parçalara bölmek
yerine, 3NF veritabanı modeli ile daha az karmaşık
bitişme kullanan SQL komutları kullanır ve olası
performans düşüşlerinin önüne geçmiş olur.

You might also like