Açıköğretim ders notları öğrenciler tarafından ders çalışma esnasında hazırlanmakta olup diğer ders çalışacak öğrenciler için paylaşılmaktadır. Sizlerde hazırladığınız ders notlarını paylaşmak istiyorsanız bizlere iletebilirsiniz.
Açıköğretim derslerinden Veritabanı Sistemleri Dersi 8. Ünite Özet için hazırlanan ders çalışma dokümanına (ders özeti / sorularla öğrenelim) aşağıdan erişebilirsiniz. AÖF Ders Notları ile sınavlara çok daha etkili bir şekilde çalışabilirsiniz. Sınavlarınızda başarılar dileriz.
Veritabanı tasarımı kavramsal, mantıksal ve fiziksel olmak üzere üç aşamada gerçekleştirilir. Kavramsal modelleme aşamasında veriler çözümlenir ve veriler arasındaki ilişkiler incelenerek varlık ilişki diyagramları (Entitiy Relationship – ER) oluşturulur. Bu aşamanın devamında mantıksal modelleme ile veritabanının yönetim sistemi bağımsızlığı, teknoloji, veri depolama veya organizasyonel kısıtları sağlanır. Mantıksal tasarımda artık veriler ve ilişkiler veritabanı tabloları ve tablolar arası ilişkilere dönüştürülür. Son aşamada da veri süreklilik teknolojisinin bir sürümü ile tanımlanmış fiziksel veri modeli oluşturulur.
Veritabanı modelleme aşamalarına ilave olarak tasarımımız normalleştirme kurallarına uygun olarak düzenlenmelidir. Normalleştirme ile tablolar ve tablolar arasındaki ilişkiler tekrar düzenlenerek tutarsız bağımlılıklar kaldırılır ve artıklıklar (redundancy) en aza indirilir. İlk defa tasarlanan bir veritabanı mantıksal modelinde ilişkiler (tablolar ve tablolar arasındaki ilişki tanımları) normalleştirme kuralları ile iyi yapılandırılmış hâle getirilir. Normalleştirme kuralları iki öznitelik arasındaki kısıtlara dayanan fonksiyonel bağımlılık kavramı ile test edilir. Her aşamada uygulanan kurala Normal Form (NF) adı verilir. İlk kural uygulanıyorsa veritabanı tasarımının birinci normal formda (1NF) olduğu, ikinci kural uygulanıyorsa ikinci normal formda (2NF) olduğu şeklinde ifade edilir.
Normalleştirme fonksiyonel bağımlılıkların analizine dayalı olarak yapılır. Fonksiyonel bağımlık iki set öznitelik arasındaki kısıtlardır. Bir veritabanındaki herhangi bir tablo T ve bu tablodaki iki öznitelik A ve B olsun. Eğer A özniteliğinin değeri B özniteliğinin değerini belirliyorsa B özniteliğinin A özniteliğine bağımlı olduğu söylenir. B’nin A’ya fonksiyonel bağımlılığı ok işareti ile A⤏B seklinde gösterilir. Burada tanımlanan fonksiyonel bağımlılık matematiksel bağımlılık değildir. Yani B’nin değeri A’nın değerinden hesaplanmaz. Bunun yerine A’da var olan her bir değer için B’de bir değer olduğunu gösterir. Bu ilişki A özniteliği B özniteliğini belirler seklinde ifade edilir.
Kısmi Bağımlılık (Partial Dependence): Bir tabloda birincil anahtar bir veya daha fazla öznitelikten oluşabilir. Eğer birincil anahtar iki veya daha fazla öznitelikten oluşuyorsa bu tür birincil anahtarlara birleşik anahtar (composite key) adı verilir. Bu tür tablolarda anahtar olmayan öznitelik, birleşik anahtarın sadece bir kısmı ile belirleniyorsa buna kısmi bağımlılık denir. Bir veritabanında yer alan tabloda A, B, C ve D gibi toplam dört özniteliğin olduğunu varsayalım. Bu tablonun birincil anahtarı da (A, B) olsun. Bu durumda AB⤏CD fonksiyonel bağımlılığı yazılabilir. Bu tabloda A⤏C fonksiyonel bağımlılığını da varsayalım. Bu durumda C özniteliği birleşik anahtarın sadece bir kısmı olan A özniteliğine bağımlıdır. Yani C özniteliği A’ya kısmi bağımlıdır.
Geçişli Bağımlılık (Transitive Dependence): Bir tabloda yer alan bazı özniteliklerin başka bir öznitelik aracılığıyla üçüncü bir özniteliğe bağımlı olması geçişli bağımlılık olarak adlandırılır. Bir veritabanında yer alan tablonun A, B, C ve D seklinde toplam dört özniteliği olsun. Bu tabloda A birincil anahtar olsun. A⤏B ve B⤏C fonksiyonel bağımlılıklarının olduğunu varsayalım. Verilen bu iki fonksiyonel bağımlılık incelendiğinde, C özniteliğinin B özniteliği aracılığıyla A özniteliğine bağımlı olduğu görülür. Bu durum geçişli bağımlılık olup 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 öznitelik B üzerinden dolaylı olarak belirlenir.
Tam Fonksiyonel Bağımlılık (Full Functional Dependence): Bir özniteliğin değeri bağlı olduğu anahtar ile benzersiz olarak belirleniyorsa bu ilişki tam bağımlılık olarak adlandırılır.
Çok Değerli Bağımlılık (Multiple Valued Dependence): Tabloda bir alandaki değerler virgülle ayrılarak oluşturulan liste veya dizi değerlerinden oluşuyorsa çok değerli bağımlılık vardır.
Döngüsel Bağımlılık (Cyclic Dependency): Döngüsel bağımlılıkta döngü kapalı halka, tekrar etme anlamında kullanılmaktadır. Veritabanında bir öznitelik A, diğer ö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. Döngüsel bağımlılık genelde tablolardaki iki ya da daha fazla alandan oluşan birleşik anahtarlarda oluşur.
Veritabanında verinin değiştirilmesi sırasında mantıksal olarak bozulmaya yol açan durumlara aykırılık (anomaly) denir. Özellikle büyük veritabanlarında büyük miktardaki kayıtlar tek komut ile değiştirildiğinde veya eklendiğinde bir aykırılık oluşursa ortaya çıkan sorunun çözümü de çok zor olacaktır. Bu nedenle iyi tasarlanmış bir ilişkisel veritabanında aykırılıklar giderilmelidir. Bir veritabanında görülebilecek üç aykırılık vardır. Bunlar ekleme, silme ve güncelle-me aykırılıkları olarak 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 tasarlanmadığı söylenir. Bu nedenle veritabanı tasarımları bu aykırılıkların oluşmayacağı şekilde iyileştirilmelidir
Ekleme Aykırılığı: Veritabanında birincil ve yabancı anahtar ile ilişkilendirilmiş iki tablo olsun. Birinci tabloda kayıtların özet bilgilerinin, diğerinde ise ilgili kayıtların detay bilgilerinin tutulduğunu varsayalım. Bu iki tablo asıl ve detay tablolar olarak isimlendirilir. Asıl ve detay tablolarda, detay tabloya veri eklenirken asıl tabloya ilgili veri eklenmez ise ekleme aykırılığı oluşur.
Silme Aykırılığı: Silme aykırılığı, asıl ve detay ilişkili tablolarda, kayıtların detay bilgilerini silmeden asıl tablodaki satırlarının silinmesi ile oluşur. Önceki ünitelerde anlatılmış olan “cascade delete” SQL komutu kullanılması hâlinde bu aykırılık oluşmayacaktır. “Cascade” komutu öncelikle detay tablolardaki kayıtları siler daha sonra detay tabloların bağlı olduğu asıl tablodaki kaydı siler.
Güncelleme Aykırılığı: Güncelleme aykırılığı silme aykırılığına benzer. Asıl ve detay ilişkili tablolarda güncelleme yaparken asıl tablodaki veri yok edilerek detay tablosundaki veriler ilişkisiz bırakılmamalıdır. Bu aykırılığı önlemek için birincil anahtar değerinde güncelleme yaparken detay tablolarda da ilişkili yabancı anahtarlar sırasıyla (cascade) güncellenmelidir.
Veritabanı tasarlarken kullanılan tablolar ve tablolar arası ilişkiler ile ortaya konulan modelin iyi bir tasarım olup olmadığına karar vermek gerekir. Eğer tablolar veya aralarındaki ilişkiler iyi tanımlanmamış ise daha küçük tablolara bölünmeli ve tablolar arası yeni ilişkiler oluşturulmalıdır. Normal formlar bu iyileştirme işlemlerinin yapılması için rehberlik yapmak üzere tanımlanmıştır. Eğer tanımlanmış olan ilişkisel model bu normal formlar-dan herhangi birine uyuyorsa modelden ilgili hatalar giderilmiş demektir. Normalleştirme her biri bir normal forma karşılık gelecek şekilde aşamalı olarak gerçekleştirilir.
Normalleştirmenin amaçları:
Normalleştirmenin aşamaları:
İlk aşamada varlıklar tüm öznitelikleri içerecek şekilde bir tabloda ifade edilir. Örnek ver iler tablonun satırlarına kaydedilir. Veri tekrarlarına izin verilir. Bu aşamadaki veritabanı modeli Sıfırıncı Normal Formda (0NF) kabul edilir. Sekil 8.2’de çok değerli alanlar ile oluşturulan 0NF’de tablo gösterilmişti. Benzer şekilde her satırda bir satış bilgisini saklamak üzere çok değerli alanlar yerine her bir ürün için ayrı alanlar kullanılırsa Sekil 8.7’de verilen tablo elde edilir. Bu tablo da yine 0NF’dedir ve ilişkisel yapıda değildir. Farklı ürünler in kendine ait alanlarda tutulması hâlinde tablo içinde çok fazla Null değer oluşmaktadır. Null değerler tabloda gri renkte işaretlenmiştir. Satış bilgilerinin bu şekilde kaydedilmesi fiziksel saklama alanının bos yere kullanılmasına ve her bir ürünü sorgulamak için sorguda farklı bitişme kullanılmasına sebep olur.
Birinci Normal Form (1NF): Birinci normal formda çok değerli ve çok parçalı öznitelikler ve tekrar eden gruplar kaldırılır. Veritabanı normalleştirmesinin ilk aşamasında uygulanan kurallar şunlardır:
1NF’de tekrar eden alanlar yeni tablo oluşturularak kaldırılır. Sekil 8.7’de satıştaki ürünlerin tamamı aynı satırında gösterilmektedir. Bu durumda her bir satış kaydında, satıs ile ilgili olmayan ürüne ait alanlar bos kalacak (null değer alır) ve gereksiz yere fizik-sel saklama ortamında yer tutacaktır. Bu nedenle 1NF’ye ihtiyaç vardır. Burada satışlar ve satılan ürünler asıl detay tablolara bire çok ilişki ile bölünmelidir.
1NF sonucunda elde edilen tabloda birincil anahtara kısmi ve geçişli bağımlılıklar olabileceği için ekleme, silme ve güncelleme aykırılıkları ile karşılaşılabilir.
İkinci Normal Form (2NF): İkincil normal form 2NF’de tekrar eden değerler yeni tablolara taşınmaktadır. 2NF kuralları aşağıdadır:
2NF sonucunda elde edilen tablolarda kısmi bağımlılıklar kaldırıldığı için güncelleme aykırılığı çözülür. Ancak birincil anahtara geçişli bağımlılıklar olabileceği için satır ekleme ve satır silme aykırılıkları ile karşılaşılabilir.
Üçüncü Normal Form (3NF): Üçüncü Normal Form (3NF) Normalleştirmenin bu aşamasında 2NF’de karşılaşılan aykırılıkları çözmek için geçişli bağımlılıklar da kaldırılır. 3NF kuralları:
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
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.
Veritabanı tasarımı kavramsal, mantıksal ve fiziksel olmak üzere üç aşamada gerçekleştirilir. Kavramsal modelleme aşamasında veriler çözümlenir ve veriler arasındaki ilişkiler incelenerek varlık ilişki diyagramları (Entitiy Relationship – ER) oluşturulur. Bu aşamanın devamında mantıksal modelleme ile veritabanının yönetim sistemi bağımsızlığı, teknoloji, veri depolama veya organizasyonel kısıtları sağlanır. Mantıksal tasarımda artık veriler ve ilişkiler veritabanı tabloları ve tablolar arası ilişkilere dönüştürülür. Son aşamada da veri süreklilik teknolojisinin bir sürümü ile tanımlanmış fiziksel veri modeli oluşturulur.
Veritabanı modelleme aşamalarına ilave olarak tasarımımız normalleştirme kurallarına uygun olarak düzenlenmelidir. Normalleştirme ile tablolar ve tablolar arasındaki ilişkiler tekrar düzenlenerek tutarsız bağımlılıklar kaldırılır ve artıklıklar (redundancy) en aza indirilir. İlk defa tasarlanan bir veritabanı mantıksal modelinde ilişkiler (tablolar ve tablolar arasındaki ilişki tanımları) normalleştirme kuralları ile iyi yapılandırılmış hâle getirilir. Normalleştirme kuralları iki öznitelik arasındaki kısıtlara dayanan fonksiyonel bağımlılık kavramı ile test edilir. Her aşamada uygulanan kurala Normal Form (NF) adı verilir. İlk kural uygulanıyorsa veritabanı tasarımının birinci normal formda (1NF) olduğu, ikinci kural uygulanıyorsa ikinci normal formda (2NF) olduğu şeklinde ifade edilir.
Normalleştirme fonksiyonel bağımlılıkların analizine dayalı olarak yapılır. Fonksiyonel bağımlık iki set öznitelik arasındaki kısıtlardır. Bir veritabanındaki herhangi bir tablo T ve bu tablodaki iki öznitelik A ve B olsun. Eğer A özniteliğinin değeri B özniteliğinin değerini belirliyorsa B özniteliğinin A özniteliğine bağımlı olduğu söylenir. B’nin A’ya fonksiyonel bağımlılığı ok işareti ile A⤏B seklinde gösterilir. Burada tanımlanan fonksiyonel bağımlılık matematiksel bağımlılık değildir. Yani B’nin değeri A’nın değerinden hesaplanmaz. Bunun yerine A’da var olan her bir değer için B’de bir değer olduğunu gösterir. Bu ilişki A özniteliği B özniteliğini belirler seklinde ifade edilir.
Kısmi Bağımlılık (Partial Dependence): Bir tabloda birincil anahtar bir veya daha fazla öznitelikten oluşabilir. Eğer birincil anahtar iki veya daha fazla öznitelikten oluşuyorsa bu tür birincil anahtarlara birleşik anahtar (composite key) adı verilir. Bu tür tablolarda anahtar olmayan öznitelik, birleşik anahtarın sadece bir kısmı ile belirleniyorsa buna kısmi bağımlılık denir. Bir veritabanında yer alan tabloda A, B, C ve D gibi toplam dört özniteliğin olduğunu varsayalım. Bu tablonun birincil anahtarı da (A, B) olsun. Bu durumda AB⤏CD fonksiyonel bağımlılığı yazılabilir. Bu tabloda A⤏C fonksiyonel bağımlılığını da varsayalım. Bu durumda C özniteliği birleşik anahtarın sadece bir kısmı olan A özniteliğine bağımlıdır. Yani C özniteliği A’ya kısmi bağımlıdır.
Geçişli Bağımlılık (Transitive Dependence): Bir tabloda yer alan bazı özniteliklerin başka bir öznitelik aracılığıyla üçüncü bir özniteliğe bağımlı olması geçişli bağımlılık olarak adlandırılır. Bir veritabanında yer alan tablonun A, B, C ve D seklinde toplam dört özniteliği olsun. Bu tabloda A birincil anahtar olsun. A⤏B ve B⤏C fonksiyonel bağımlılıklarının olduğunu varsayalım. Verilen bu iki fonksiyonel bağımlılık incelendiğinde, C özniteliğinin B özniteliği aracılığıyla A özniteliğine bağımlı olduğu görülür. Bu durum geçişli bağımlılık olup 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 öznitelik B üzerinden dolaylı olarak belirlenir.
Tam Fonksiyonel Bağımlılık (Full Functional Dependence): Bir özniteliğin değeri bağlı olduğu anahtar ile benzersiz olarak belirleniyorsa bu ilişki tam bağımlılık olarak adlandırılır.
Çok Değerli Bağımlılık (Multiple Valued Dependence): Tabloda bir alandaki değerler virgülle ayrılarak oluşturulan liste veya dizi değerlerinden oluşuyorsa çok değerli bağımlılık vardır.
Döngüsel Bağımlılık (Cyclic Dependency): Döngüsel bağımlılıkta döngü kapalı halka, tekrar etme anlamında kullanılmaktadır. Veritabanında bir öznitelik A, diğer ö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. Döngüsel bağımlılık genelde tablolardaki iki ya da daha fazla alandan oluşan birleşik anahtarlarda oluşur.
Veritabanında verinin değiştirilmesi sırasında mantıksal olarak bozulmaya yol açan durumlara aykırılık (anomaly) denir. Özellikle büyük veritabanlarında büyük miktardaki kayıtlar tek komut ile değiştirildiğinde veya eklendiğinde bir aykırılık oluşursa ortaya çıkan sorunun çözümü de çok zor olacaktır. Bu nedenle iyi tasarlanmış bir ilişkisel veritabanında aykırılıklar giderilmelidir. Bir veritabanında görülebilecek üç aykırılık vardır. Bunlar ekleme, silme ve güncelle-me aykırılıkları olarak 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 tasarlanmadığı söylenir. Bu nedenle veritabanı tasarımları bu aykırılıkların oluşmayacağı şekilde iyileştirilmelidir
Ekleme Aykırılığı: Veritabanında birincil ve yabancı anahtar ile ilişkilendirilmiş iki tablo olsun. Birinci tabloda kayıtların özet bilgilerinin, diğerinde ise ilgili kayıtların detay bilgilerinin tutulduğunu varsayalım. Bu iki tablo asıl ve detay tablolar olarak isimlendirilir. Asıl ve detay tablolarda, detay tabloya veri eklenirken asıl tabloya ilgili veri eklenmez ise ekleme aykırılığı oluşur.
Silme Aykırılığı: Silme aykırılığı, asıl ve detay ilişkili tablolarda, kayıtların detay bilgilerini silmeden asıl tablodaki satırlarının silinmesi ile oluşur. Önceki ünitelerde anlatılmış olan “cascade delete” SQL komutu kullanılması hâlinde bu aykırılık oluşmayacaktır. “Cascade” komutu öncelikle detay tablolardaki kayıtları siler daha sonra detay tabloların bağlı olduğu asıl tablodaki kaydı siler.
Güncelleme Aykırılığı: Güncelleme aykırılığı silme aykırılığına benzer. Asıl ve detay ilişkili tablolarda güncelleme yaparken asıl tablodaki veri yok edilerek detay tablosundaki veriler ilişkisiz bırakılmamalıdır. Bu aykırılığı önlemek için birincil anahtar değerinde güncelleme yaparken detay tablolarda da ilişkili yabancı anahtarlar sırasıyla (cascade) güncellenmelidir.
Veritabanı tasarlarken kullanılan tablolar ve tablolar arası ilişkiler ile ortaya konulan modelin iyi bir tasarım olup olmadığına karar vermek gerekir. Eğer tablolar veya aralarındaki ilişkiler iyi tanımlanmamış ise daha küçük tablolara bölünmeli ve tablolar arası yeni ilişkiler oluşturulmalıdır. Normal formlar bu iyileştirme işlemlerinin yapılması için rehberlik yapmak üzere tanımlanmıştır. Eğer tanımlanmış olan ilişkisel model bu normal formlar-dan herhangi birine uyuyorsa modelden ilgili hatalar giderilmiş demektir. Normalleştirme her biri bir normal forma karşılık gelecek şekilde aşamalı olarak gerçekleştirilir.
Normalleştirmenin amaçları:
Normalleştirmenin aşamaları:
İlk aşamada varlıklar tüm öznitelikleri içerecek şekilde bir tabloda ifade edilir. Örnek ver iler tablonun satırlarına kaydedilir. Veri tekrarlarına izin verilir. Bu aşamadaki veritabanı modeli Sıfırıncı Normal Formda (0NF) kabul edilir. Sekil 8.2’de çok değerli alanlar ile oluşturulan 0NF’de tablo gösterilmişti. Benzer şekilde her satırda bir satış bilgisini saklamak üzere çok değerli alanlar yerine her bir ürün için ayrı alanlar kullanılırsa Sekil 8.7’de verilen tablo elde edilir. Bu tablo da yine 0NF’dedir ve ilişkisel yapıda değildir. Farklı ürünler in kendine ait alanlarda tutulması hâlinde tablo içinde çok fazla Null değer oluşmaktadır. Null değerler tabloda gri renkte işaretlenmiştir. Satış bilgilerinin bu şekilde kaydedilmesi fiziksel saklama alanının bos yere kullanılmasına ve her bir ürünü sorgulamak için sorguda farklı bitişme kullanılmasına sebep olur.
Birinci Normal Form (1NF): Birinci normal formda çok değerli ve çok parçalı öznitelikler ve tekrar eden gruplar kaldırılır. Veritabanı normalleştirmesinin ilk aşamasında uygulanan kurallar şunlardır:
1NF’de tekrar eden alanlar yeni tablo oluşturularak kaldırılır. Sekil 8.7’de satıştaki ürünlerin tamamı aynı satırında gösterilmektedir. Bu durumda her bir satış kaydında, satıs ile ilgili olmayan ürüne ait alanlar bos kalacak (null değer alır) ve gereksiz yere fizik-sel saklama ortamında yer tutacaktır. Bu nedenle 1NF’ye ihtiyaç vardır. Burada satışlar ve satılan ürünler asıl detay tablolara bire çok ilişki ile bölünmelidir.
1NF sonucunda elde edilen tabloda birincil anahtara kısmi ve geçişli bağımlılıklar olabileceği için ekleme, silme ve güncelleme aykırılıkları ile karşılaşılabilir.
İkinci Normal Form (2NF): İkincil normal form 2NF’de tekrar eden değerler yeni tablolara taşınmaktadır. 2NF kuralları aşağıdadır:
2NF sonucunda elde edilen tablolarda kısmi bağımlılıklar kaldırıldığı için güncelleme aykırılığı çözülür. Ancak birincil anahtara geçişli bağımlılıklar olabileceği için satır ekleme ve satır silme aykırılıkları ile karşılaşılabilir.
Üçüncü Normal Form (3NF): Üçüncü Normal Form (3NF) Normalleştirmenin bu aşamasında 2NF’de karşılaşılan aykırılıkları çözmek için geçişli bağımlılıklar da kaldırılır. 3NF kuralları:
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
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.