Tavsiye, 2024

Editörün Seçimi

3NF ve BCNF Arasındaki Fark

Normalleştirme, bir ilişkiden artıklığı ortadan kaldırarak, veritabanlarının performansını düşüren anormalleri ekleme, silme ve güncelleme işlemlerini en aza indiren bir yöntemdir. Bu yazıda, 3NF ve BCNF gibi iki yüksek normal form arasında ayrım yapacağız. 3NF ve BCNF arasındaki temel fark, 3NF'nin, bir ilişkinin geçişli bağımlılığı ve BCNF'de bulunan bir tablodan geçişi ortadan kaldırmasıdır, bir ilişkideki önemsiz fonksiyonel bağımlılık X-> Y, yalnızca X'in süper anahtar olması durumunda olmalıdır.

Aşağıda gösterilen karşılaştırma tablosu yardımıyla 3NF ve BCNF arasındaki farkları tartışalım.

Karşılaştırma Tablosu

Karşılaştırma için temel3NFBCNF
kavramAsal olmayan bir öznitelik, geçişsel olarak Aday anahtarına bağlı olmamalıdır.R ilişkisindeki önemsiz bağımlılık için, X-> Y diyelim ki, X, R ilişkisinin süper anahtarı olmalıdır.
BağımlılıkTüm bağımlılıkları feda etmeden 3NF elde edilebilir.Bağımlılıklar BCNF'de korunmayabilir.
ayrışmaKayıpsız bozunma 3NF'de sağlanabilir.Kayıpsız ayrışmanın BCNF'de elde edilmesi zordur.

3NF'un tanımı

Bir tablo veya bir ilişki, yalnızca tablo zaten 2NF'deyse ve ilişkinin aday anahtarına geçişli olarak bağımlı olmayan bir öznitelik yoksa, Üçüncü Normal Form'da kabul edilir.

Bu yüzden, 3NF'deki bir masayı normalleştirme sürecini ele almadan önce, aday anahtarını tartışmama izin verin. Bir Aday Anahtar, minimum bir süper anahtar yani bir ilişkinin tüm özelliklerini tanımlayabilen minimum özelliklere sahip bir süper anahtardır. Bu nedenle, tablonuzu normalleştirme sürecinde önce belirli bir ilişkinin aday anahtarını tanırsınız. Aday anahtarın bir parçası olan öznitelikler asal özniteliklerdir ve aday anahtarın parçası olmayan öznitelikler asal olmayan özniteliklerdir .

Şimdi eğer R (A, B, C, D, E, F) ilişkimiz varsa ve R ilişkisi için fonksiyon bağımlılıklarımız varsa

İşlevsel bağımlılıkları gözlemleyerek, AB'nin R ilişkisi için bir aday anahtar olduğu sonucuna varabiliriz, çünkü AB anahtarını kullanarak R ilişkisindeki tüm niteliklerin değerini arayabiliriz. Böylece A, B, birlikte aday anahtar yaptıklarında birincil özellikler olur. C, D, E, F özellikleri asal olmayan özellikler haline gelir , çünkü hiçbiri bir aday anahtarın parçası değildir.

Asal olmayan bir özellik kısmen aday anahtarına bağlı olmadığından, tablo 2NF’dedir

Ancak, F özelliği doğrudan A aday anahtarına bağlı olmadığından, sağlanan fonksiyonel bağımlılıklar arasında geçişli bir bağımlılık gözlenmektedir. Bunun yerine, F niteliği, geçiş niteliği taşıyan AB A aday anahtarına D niteliğince bağlıdır. D özniteliği D'ye, AB aday anahtarından F öznitelik değerine ulaşabileceğimiz bir değere sahiptir. D özelliğinin değerinin NULL olması durumunda AB aday anahtarının yardımı ile F'nin değerini asla bulamıyoruz / arayamıyoruz. 3NF'nin geçici bağımlılığı ilişkilerden kaldırmak istemesinin nedeni budur.

Bu yüzden, bu geçişli bağımlılığı ortadan kaldırmak için, ilişkiyi R bölmeliyiz. Bir ilişkiyi bölerken, her zaman aday anahtarını ve o aday anahtarına bağlı olan tüm nitelikleri ilk ilişkide yerleştirin. Bir sonraki bölünmüş ilişkide, geçişli bağımlılığa neden olan özelliği ve ayrıca ona bağlı olan nitelikleri ikinci ilişkide yerleştireceğiz.

Şimdi, R1 ve R2 tabloları, kısmi ve geçişli bağımlılıkları kalmadığından 3NF içindedir. R1 ilişkisi (A, B, C, D, E) AB aday anahtarına sahipken, R2 (D, E) ilişkisi aday anahtar olarak D işaretini taşımaktadır.

BCNF'un tanımı

BCNF, 3NF'den daha güçlü olarak kabul edilir. BCNF'de olacak R ilişkisi 3NF'de olmalıdır. Ve önemsiz olmayan bir işlevsel bağımlılığın A -> B'nin R ile ilişkili olduğu her yerde, o zaman A, A'nın R'nin bir üstkuşu olması gerekir. Bildiğimiz gibi, Süper anahtar tek bir niteliğe veya belirleyici özelliklere sahip olan bir anahtardır. ilişkinin öznitelikleri.

Şimdi BCNF'yi daha iyi anlamak için bir örneğe geçelim. Diyelim ki, aşağıdaki işlevsel bağımlılıkları olan bir ilişkimizin R (A, B, C, D, F) olduğunu varsayalım.

R ilişkisini gözlemleyerek, A ve BF'nin R ilişkisinin aday anahtarları olduğunu söyleyebiliriz, çünkü yalnız R ilişkisindeki tüm niteliklerin değerini arayabilirler. Öyleyse, A, B, F en üstteki niteliklerdir, oysa C ve D asal olmayan niteliklerdir. Yukarıdaki mevcut fonksiyonel bağımlılıklarda geçişli bir bağımlılık gözlenmemektedir. Dolayısıyla, R tablosu 3NF'dedir.

Ancak bir işlevsel bağımlılık, yani D -> F, BCNF'nin tanımını ihlal ediyor, buna göre, eğer D -> F varsa, D burada böyle olmayan süper anahtar olmalıdır. Öyleyse ilişki R'yi böleriz.

Şimdi, R1 ve R2 tabloları BCNF içerisindedir. R1 ilişkisi, A ve B iki aday anahtarına sahiptir, R1'in A -> BCD ve B -> ACD gibi önemsiz fonksiyonel bağımlılığı, BCNF için A ve B olarak tutulur, ilişki için süper anahtarlardır. İlişkisel R2'nin aday anahtarı olarak D'si vardır ve işlevsel bağımlılık D -> F ayrıca D'nin bir Süper Anahtar olduğu için BCNF için de geçerlidir.

3NF ve BCNF Arasındaki Temel Farklar

  1. 3NF, asal olmayan bir özniteliğin, ilişkinin aday anahtarına geçiş yoluyla bağımlı olması gerekmediğini belirtir. Diğer taraftan, BCNF, bir ilişki için önemsiz bir işlevsel bağımlılık X -> Y bulunduğunu belirtir; o zaman X bir süper anahtar olmalı.
  2. 3NF, ilişkinin bağımlılığından ödün vermeden elde edilebilir. Bununla birlikte, BCNF elde edilirken bağımlılık korunmayabilir.
  3. Eski tablodan hiçbir bilgi kaybetmeden 3NF'ye ulaşılabilir, oysa BCNF'yi elde ederken eski tablodan bazı bilgileri kaybedebiliriz.

Sonuç:

BCNF, tabloyu daha fazla normalleştirmeye yardımcı olan 3NF'den çok kısıtlayıcıdır. 3NF'deki ilişki, BCNF tarafından daha da uzaklaştırılan geriye kalan asgari fazlalığa sahiptir.

Top