Veritabanı Sistemleri Dersi 8. Ünite Sorularla Öğrenelim
Normalleştirme
- Özet
- Sorularla Öğrenelim
Fonksiyonel bağımlılık nedir?
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 şeklinde 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 şeklinde ifade edilir.
Kısmi Bağımlılık (Partial Dependence) nedir?
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) nedir?
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 şeklinde 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) nedir?
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. Örneğimizde Satış Miktarı ve Toplam Fiyat alanları Satış Id, Ürün Id birleşik anahtarına tam bağımlıdır. Satış Miktarı ve Toplam Fiyat sadece Satış Id veya sadece Ürün Id alanı ile benzersiz olarak belirlenemez.
Döngüsel Bağımlılık (Cyclic Dependency) nedir?
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.
Aykırılık nedir?
İlişkisel veritabanında bir satırdaki verinin (veya satırlardaki verilerin) hatalı olarak değiştirilmesine aykırılık (anomali) denir. 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üncelleme aykırılıkları olarak sıralanabilir.
Ekleme aykırılığı nedir?
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ığı nedir?
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ığı nedir?
Bu aykırılık 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.
Normalleştirme nedir?
Normalleştirme tablolar ve aralarındaki ilişkilerin aykırılıkları azaltmak üzere aşamalı olarak daha küçük ve iyi yapılandırılmış tablolar ve ilişkilere dönüştürülmesidir.
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 formlardan 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ştirme aşamaları nelerdir?
Normalleştirme Aşamaları Normal form fonksiyonel bağımlılıklara göre uygulanılan basit kuralların sonucunda oluşturulan veritabanı tasarımını gösteren modelin aşamasıdır. Bu formlar ve içerdiği kurallar aşağıda kısaca tanımlanacak ve izleyen kesimde detaylı olarak açıklanacaktır.
- Normal Form (1st Normal Form - 1NF) Tablolar ilişkilendirilebilir şekilde tasarlanır ve çok değerli öznitelikler kaldırılır. Tablonun her bir satır ve sütun kesişiminde atomik değer olacak şekilde tablo tekrar yapılandırılır. Birden fazla bilgi tek bir sütunda tutulamaz. Tekrarlanan veriler kaldırılır. 1NF’de bir tablodaki tüm alanlar birincil anahtar (birleşik anahtar olabilir) ile doğrudan ya da dolaylı benzersiz olarak belirlenebilir.
- Normal Form (2nd Normal Form - 2NF) Bu aşamada kısmi fonksiyonel bağımlılıklar kaldırılır. Tüm alanlar birincil anahtar ile belirlenebilir olmalıdır. Bu aşamada asıl tablodaki birincil anahtara bağlı olan ancak tekrar eden alanlar yeni bir tabloya taşınır. Asıl tablo ile yeni tablo arasında çoka bir ilişkisi kurulur. Yeni tablo tekrar eden alanları tek kayıt altında birincil anahtar ile belirler. Yeni tablodaki birincil anahtar asıl tabloya yabancı anahtar olarak yerleştirilir. Asıl tabloya yerleştirilen yabancı anahtar aynı tablodaki birincil anahtarın bir parçası değildir.
- Normal Form (3th Normal Form - 3NF) Geçişli fonksiyonel bağımlılıklar kaldırılır. Yani biri olmalıdır. Birincil anahtar bir tabloyu diğer tablolardaki yabancı anahtarlarla ilişkilendirmek için kullanılır.
Boyce-Codd Normal Form (BCNF) Fonksiyonel bağımlılıktan geri kalan tüm aykırılıklar kaldırılır. Bir tablo 3NF’de ise ve her belirleyici anahtar olarak tanımlandıysa ilgili tablo BCNF formunda denir. Bu tanıma göre eğer bir tablo BCNF ise bu tablo aynı zamanda 3NF’dir. Ama tersi doğru değildir.
- Normal Form (4th Normal Form - 4NF) Çok değerli hiç bir bağımlılık kalmaz. Birincil anahtar olan alanlar ile diğer alanlar arasındaki her bir bağımsız bire-çoklu ilişki için ayrı tablo oluşturmak gerekir. Tekrarları önlemek için her tablo mümkün olduğunca küçük parçalara bölünür.
- Normal Form (5th Normal Form - 5NF) Bu aşamada döngüsel fonksiyonel bağımlılıklar ve kalan tüm aykırılıklar kaldırılır.
Projeksiyon Normal Form (PJNF) olarak da adlandırılır. 4NF’de kaldırılmamış olan tekrarlamalar daha küçük tablolara bölünerek kaldırılır.
Etki Alanı Anahtarı Normal Formu (Domain Key Normal Form-DKNF) Bu aşama bir dönüşüm olmak yerine en üst seviyede normalize edilmiş veritabanı kavramsal modeli seviyesinin ölçüsüdür.
Birincil normal form nedir?
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:
- Tekrar eden gruplar kaldırılır.
- Birincil anahtar tanımlanır. Birincil anahtar benzersiz olup tekrarlı değerlere izin vermez.
- Bütün diğer alanlar birincil anahtar ile doğrudan ya da dolaylı benzersiz olarak belirlenebilir.
- Her bir alan atomik değer içermelidir.
- Bir alandaki değerler aynı veri tipinde olmalıdır.
1NF’de tekrar eden alanlar yeni tablo oluşturularak kaldırılır.
İkincil normal form nedir?
İkinci Normal Form (2NF) 2NF’de tekrar eden değerler yeni tablolara taşınmaktadır. 2NF kuralları aşağıdadır:
- Tablolar 1NF olmalıdır.
- Tüm anahtar olmayan alanlar birincil anahtara tam fonksiyonel bağımlı olmalıdır.
- Kısmi bağımlılıklar kaldırılmalıdır. Önceden de bahsedildiği gibi kısmi bağımlılık fonksiyonel bağımlılığın bir özel durumu olup bir alanın birleşik anahtarın bir parçasına tam bağımlı olması demektir. Kısaca birincil anahtara kısmi bağımlı alanlar yeni bir tablo oluşturarak taşınmalıdır.
Bu aşama sonucunda tablolarda birincil anahtar tek alanda tanımlanmış olur.
Üçüncü normal form nedir?
Üçü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ı:
- Tablolar 2NF olmalıdır.
- 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.
- 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.
Üçüncü normal form çoka çok ilişki durumu nedir?
İ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 nedir?
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 nedir?
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.
İyi tasarlanmış bir veritabanının özellikleri nelerdir?
İyi tasarlanmış bir veritabanının özellikleri
Veritabanı tasarımı tamamlanarak uygulamaya geçirildiğinde veriye SQL olarak adlandırılan veritabanı sorgu dili kullanılarak erişilir. Ancak SQL komutları sonucunda ilgili veriye doğru ve tutarlı olarak erişmek, veri bütünlüğünü korumak ve veritabanı içinde artıklığı minimum yapmak için veritabanı iyi tasarlanmış olmalıdır. İyi bir veritabanı modeli oluşturmanın yöntemi ise normalleştirme uygulamaktır. Eğer veritabanı iyi tasarlanmış ise en az üçüncü normal formda olmalıdır. Böylece veritabanında veri tekrarı ve fonksiyonel bağımlılıklar nedeniyle oluşabilecek aykırılıklar kaldırılır. Uygulama aşamasında daha az saklama yeri kullanması ve daha iyi bir performansta çalışması sağlanmış olur.
Veritabanı modelinden sorunlu fonksiyonel bağımlılıklarının aşama aşama kaldırılması işlemine ne ad verilir?
Aykırılıklar aynı zamanda veritabanının normal formlara uymaması anlamına gelir.
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. Benzer şekilde mevcut bir veritabanındaki ilişkilerin iyileştirilmesi içinde normalleştirme kullanılır. 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. Her aşamada uygulanan normalleştirme kurallarına göre veritabanı tasarım seviyesi tanımlanmış olur. Kısaca ilgili normal formun adı verildiğinde, veritabanı ilişkilerinin hangi kurallara uyacak şekilde normalleştirildiği anlaşılır. Veritabanı modelinden sorunlu fonksiyonel bağımlılıklarının aşama aşama kaldırılması işlemine normalleştirme denir.
Fonksiyonel bağımlılığı açıklayınız?
FONKSİYONEL BAĞIMLILIK
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 şeklinde 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 şeklinde ifade edilir.
Kısmi bağımlılık nedir? Açıklayınız?
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 nedir? Açıklayınız.
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 şeklinde 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.
Bir vertabanı tasarımında döngüsel bağımlılığın nasıl oluştuğunu örnek vererek açıklayınız.
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.
Aykırılık nedir? Bir veritabanında görülebilecek aykırılıkları sıralayınız.
İlişkisel veritabanında bir satırdaki verinin (veya satırlardaki verilerin) hatalı olarak değiştirilmesine aykırılık (anomali) denir.
Bir veritabanında görülebilecek üç aykırılık vardır. Bunlar ekleme, silme ve güncelleme aykırılıkları olarak sıralanabilir.
Bir veritabanında görülebilecek aykırılıklardan silme ve güncelleme arasındaki ilişkiyi açıklayınız.
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ığı 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.
Bir veri tabanı tasarımında neden normalleştirme yapılmalıdır? Açıklayınız.
Normalleştirmenin amaçları;
• Veri artıklığını minimum yapmak,
• Aykırılıkları önlemek,
• Veri bütünlüğünü sağlayan kısıtların uygulamasını basitleştirmek,
• Veri işlemeyi (ekleme, güncelleme ve silme) daha basit hâle getirmek,
• Veri tekrarı önlenmiş bir veritabanında ihtiyaç duyulan fiziksel saklama alanı daha az olur. Daha az alanda daha az karmaşık sorgular ile veriye daha hızlı ulaşarak performans artışını sağlamak,
• Gerçek varlık ve ilişkileri daha iyi temsil edecek veritabanı modeli tasarımını gerçekleştirmek ve ileriki geliştirmeler için sağlam bir taban oluşturmak.
Bir veri tabanı tasarımında normalleştirmenin aşamaları nelerdir?
Normalleştirme Aşamaları
Normal form fonksiyonel bağımlılıklara göre uygulanılan basit kuralların sonucunda oluşturulan veritabanı tasarımını gösteren modelin aşamasıdır.
1. Normal Form (1NF)
Tablolar ilişkilendirilebilir şekilde tasarlanır ve çok değerli öznitelikler kaldırılır.
Tablonun her bir satır ve sütun kesişiminde atomik değer olacak şekilde tablo tekrar yapılandırılır. Birden fazla bilgi tek bir sütunda tutulamaz. Tekrarlanan veriler kaldırılır. 1NF’de bir tablodaki tüm alanlar birincil anahtar (birleşik anahtar olabilir) ile doğrudan ya da dolaylı benzersiz olarak belirlenebilir.
2. Normal Form 2NF)
Bu aşamada kısmi fonksiyonel bağımlılıklar kaldırılır. Tüm alanlar birincil anahtar
ile belirlenebilir olmalıdır. Bu aşamada asıl tablodaki birincil anahtara bağlı olan
ancak tekrar eden alanlar yeni bir tabloya taşınır. Asıl tablo ile yeni tablo arasında bir ilişkisi kurulur. Yeni tablo tekrar eden alanları tek kayıt altında birincil anahtar ile belirler. Yeni tablodaki birincil anahtar asıl tabloya yabancı anahtar olarak yerleştirilir. Asıl tabloya yerleştirilen yabancı anahtar aynı tablodaki birincil anahtarın bir parçası değildir.
3. Normal Form (3NF)
Geçişli fonksiyonel bağımlılıklar kaldırılır. Yani birincil anahtar tarafından dolaylı
olarak belirlenen alanlar yok edilir. Geçişli fonksiyonel bağımlılığı kaldırmak için
asıl tablodaki birincil anahtara dolaylı bağımlı alanlar yeni bir tabloya taşınır.
Boyce-Codd Normal Form (BCNF) Fonksiyonel bağımlılıktan geri kalan tüm aykırılıklar kaldırılır. Bir tablo 3NF’de ise ve her belirleyici anahtar olarak tanımlandıysa ilgili tablo BCNF formunda denir. Bu tanıma göre eğer bir tablo BCNF ise bu tablo aynı zamanda 3NF’dir. Ama tersi doğru değildir.
4. Normal Form (4NF)
Çok değerli hiç bir bağımlılık kalmaz. Birincil anahtar olan alanlar ile diğer alanlar
arasındaki her bir bağımsız bire-çoklu ilişki için ayrı tablo oluşturmak gerekir.
Tekrarları önlemek için her tablo mümkün olduğunca küçük parçalara bölünür.
5. Normal Form (5NF)
Bu aşamada döngüsel fonksiyonel bağımlılıklar ve kalan tüm aykırılıklar kaldırılır.
Projeksiyon Normal Form (PJNF) olarakta adlandırılır. 4NF’de kaldırılmamış olan
tekrarlamalar daha küçük tablolara bölünerek kaldırılır.
6. Etki Alanı Anahtarı Normal Formu (Domain Key Normal Form-DKNF) Bu aşama bir dönüşüm olmak yerine en üst seviyede normalize edilmiş veritabanı kavramsal modeli seviyesinin ölçüsüdür. Normal formlar her aşamada daha fazla kısıt uygulamaktadır. Öncelikle 1nci Normal Form ile tablolar ilişkisel yapıya dönüştürülür ve izleyen aşamalarda sırasıyla kısmi ve geçişli fonksiyonel bağımlılıklar ve aykırılıklar mantıksal veritabanı tasarım modelinden kaldırılır. Veritabanı normalleştirmesinde önce 1NF daha sonra 2NF olmak üzere her aşama sırayla uygulanır. Herhangi bir aşama atlanmaz ve sıralama değiştirilmez.
Veritabanı normalleştirmesinin ilk aşamasında uygulanan kurallar nelerdir?
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:
• Tekrar eden gruplar kaldırılır.
• Birincil anahtar tanımlanır. Birincil anahtar benzersiz olup tekrarlı değerlere izin
vermez.
• Bütün diğer alanlar birincil anahtar ile doğrudan ya da dolaylı benzersiz olarak
belirlenebilir.
• Her bir alan atomik değer içermelidir.
• Bir alandaki değerler aynı veritipinde olmalıdır.
İkinci Normal Form (2NF) kuralları nelerdir?
2NF’de tekrar eden değerler yeni tablolara taşınmaktadır. 2NF kuralları aşağıdadır:
• Tablolar 1NF olmalıdır.
• Tüm anahtar olmayan alanlar birincil anahtara tam fonksiyonel bağımlı olmalıdır.
• Kısmi bağımlılıklar kaldırılmalıdır. Önceden de bahsedildiği gibi kısmi bağımlılık
fonksiyonel bağımlılığın bir özel durumu olup bir alanın birleşik anahtarın bir parçasına tam bağımlı olması demektir. Kısaca birincil anahtara kısmi bağımlı alanlar yeni bir tablo oluşturarak taşınmalıdır.
Üçüncü Normal Form (3NF) kuralları nelerdir?
Üçü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ı:
• Tablolar 2NF olmalıdır.
• 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.
• 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.
3NF’de çoka çok ilişki durumunu bir örnekle açıklayınız.
İ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.
Kitabınızdaki Normalleştirme ünitesindeki sayfa 188 Şekil 8.12’de Ürünler ve Tedarikçiler arasındaki çoka çok ilişki vardır. Çünkü bir ürün birden fazla tedarikçiden temin edilebileceği gibi, bir tedarikçiden birden fazla ürün alınabilir.
Bu çoka çok ilişki yeni bir tablo (Atama) aracılığı ile çoka-bir ilişkilere dönüştürülmüştür. Bu dönüşüm sonucunda verinin saklama alanında da küçülme sağlanacaktır.
3NF üzeri normalleştirmelerin veritabanında kullanılmama nedenlerini açıklayınız.
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.
Normal formlar nedir? Açıklayınız.
Normal form fonksiyonel bağımlılıklara göre uygulanılan basit kuralların sonucunda oluşturulan/dönüştürülen veritabanı tasarımının aşamasını belirtir.
1NF, 2NF, 3NF, BCNF, 4NF, 5NF bunlardan yaygın bilinenleridir. Veritabanlarının bu formlara uyması gerekir.
1NF’de çok değerli öznitelikler atomik değerli
özniteliklere dönüştürülür.
2NF’de kısmi bağımlılıklar kaldırılır.
3NF’de geçişli bağımlılıklar kaldırılır.
3NF üzeri Normal Formlarda ise diğer bağımlılık ve aykırılıklar kaldırılır.
Veritabanı 3NF’ye dönüştürüldüğünde hangi aykırıklar kaldırılmış olur?
Veritabanı tasarımındaki hatalar veya ilişiklerde ortaya çıkan bağımlılıklar aykırılıklara neden olur. Üç tür aykırılık vardır. Bunlar ekleme, silme ve güncelleme aykırılıklarıdır. Aykırılıklar normalleştirme sonucunda
düzelir. Veritabanı 3NF’ye dönüştürüldüğünde üç aykırılıkta kaldırılmış olur. Ekleme aykırılığı tabloya veri eklenmek istendiğinde ilave veri veya bilgiye ihtiyaç duyulması anlamına gelir. Silme aykırılığında ise tablodan
bir satır silindiğinde faydalı bilgiler de silinebilir. Tabloda gereksiz veri tekrarı olması durumunda güncelleme aykırılığı oluşur. Güncelleme aykırılığında tekrarlı veri güncellenmek istendiğinde bütün kopyaların aynı şekilde güncellenmesi gerekir. Aksi hâlde tutarsızlık oluşur.