Препоръчано, 2024

Избор На Редактора

Разлика между 3NF и BCNF

Нормализация е метод, който премахва излишъка от връзка, като по този начин минимизира вмъкването, изтриването и актуализирането на аномалиите, които влошават производителността на базите данни. В тази статия ще разграничим две по-високи нормални форми, т.е. 3NF и BCNF. Основната разлика между 3NF и BCNF е, че 3NF елиминира транзитивната зависимост от отношение и таблица да бъде в BCNF, тривиалната функционална зависимост X-> Y в отношението трябва да се запази, само ако X е супер ключ.

Нека обсъдим различията между 3NF и BCNF с помощта на таблицата за сравнение, показана по-долу.

Сравнителна таблица

Основа за сравнение3NFBCNF
понятиеНе атрибутът non-prime трябва да е транзитивно зависим от ключа Кандидат.За всяка тривиална зависимост във връзка с R, X-> Y, X трябва да бъде супер ключ на връзката R.
Зависимост3NF може да се получи без да се жертват всички зависимости.Зависимостите не могат да бъдат запазени в BCNF.
разлаганеРазграждането без загуба може да се постигне в 3NF.Разграждането без загуби е трудно постижимо в BCNF.

Определение за 3NF

Счита се, че таблица или връзка са в трета нормална форма само ако таблицата вече е в 2NF и не съществува атрибут non-prime транзитивно зависим от ключа на кандидата на дадено отношение.

Така че, преди да се обърна към процеса на нормализиране на таблица в 3NF, позволете ми да обсъдя ключа на кандидата. Ключ-кандидат е минимален супер ключ, т.е. супер ключ с минимални атрибути, които могат да дефинират всички атрибути на дадено отношение. Така че, в процеса на нормализиране на вашата таблица, първо, вие разпознавате кандидат-ключа на дадена връзка. Атрибутите, които са част от ключа на кандидата, са основни атрибути, а атрибутите, които не са част от ключа на кандидата, са атрибути без премиум .

Сега, ако имаме отношение R (A, B, C, D, E, F) и имаме следната функция за зависимостта R.

Наблюдавайки функционални зависимости, можем да заключим, че AB е кандидат ключ за отношение R, тъй като използвайки клавиша AB можем да търсим стойността за всички атрибути във връзка R. Така A, B става първичен атрибут, тъй като те заедно правят кандидат ключ. Атрибутите C, D, E, F се превръщат в атрибути, които не са първични, тъй като никой от тях не е част от ключ на кандидат.

Таблицата е в 2NF, тъй като атрибутът non-prime е частично зависим от кандидат ключ

Но се наблюдава транзитивна зависимост между предоставените функционални зависимости, тъй като атрибутът F не е пряко зависим от кандидат-ключа AB . Вместо това, атрибут F е транзитивно зависим от кандидат-ключа AB чрез атрибут D. До атрибут D има някаква стойност, която можем да достигнем до атрибутна стойност на F, от кандидат-ключа AB. В случай, че стойността на атрибут D е NULL, никога няма да намерим / търсим стойността на F с помощта на кандидат-ключа AB. Това е причината, поради която 3NF изисква да премахне транзитивната зависимост от отношенията.

Така че, за да премахнем тази транзитивна зависимост, трябва да разделим връзката R. Докато делим една връзка, винаги поставяйте ключа на кандидата и всички атрибути, които зависят от този кандидат ключ в първата връзка. В следващото разделено отношение ще поставим атрибута, който причинява транзитивна зависимост, както и атрибутите, които зависят от него във втората връзка.

Сега таблиците R1 и R2 са в 3NF, тъй като няма частични и преходни зависимости. Отношението R1 (A, B, C, D, E) има кандидат-ключ AB, докато отношение R2 (D, E) има D като свой кандидат-ключ.

Определение на BCNF

BCNF се счита за по-силен от 3NF. Отношението R да бъде в BCNF трябва да бъде в 3NF . И там, където във връзка с R има нетривиална функционална зависимост A -> B, тогава A трябва да е суперъгълник на връзката R. Както знаем, Super ключът е ключ, който има един атрибут или набор от атрибути, които определят целия атрибути на една връзка.

Нека сега да преминем към пример, за да разберем BCNF по-добре. Да предположим, че имаме отношение R (A, B, C, D, F), което има следните функционални зависимости.

Като наблюдаваме връзката R, можем да кажем, че A и BF са кандидат-ключове на отношение R, тъй като те сами могат да търсят стойността на всички атрибути във връзката R. Така че A, B, F са основните атрибути, докато C и D са основни атрибути. Не се наблюдава транзитивна зависимост в функционалните зависимости, представени по-горе. Следователно, таблицата R е в 3NF.

Но една функционална зависимост, т.е. D -> F, нарушава дефиницията на BCNF, според която, ако D -> F съществува, тогава D трябва да бъде супер ключът, което тук не е така. Така ще разделим връзката R.

Сега таблиците R1 nd R2 са в BCNF. Връзката R1 има два кандидат- ключа A и B, тривиалната функционална зависимост на R1, т.е. A-> BCD и B -> ACD, задържа BCNF като A и B са супер ключовете за отношение. Отношението R2 има D като свой кандидат ключ и функционалната зависимост D -> F също се отнася за BCNF, тъй като D е супер ключ.

Ключови разлики между 3NF и BCNF

  1. 3NF заявява, че не атрибутът non-prime трябва да бъде транзитивно зависим от кандидат-ключа на отношението. От друга страна, BCNF заявява, че ако тривиалната функционална зависимост X -> Y съществува за дадена връзка; тогава X трябва да е супер ключ.
  2. 3NF може да се получи без да се жертва зависимостта на връзката. Въпреки това, зависимостта може да не бъде запазена, докато се получава BCNF.
  3. 3NF може да се постигне без загуба на информация от старата таблица, докато при получаване на BCNF може да загубим някаква информация от старата таблица.

Заключение:

BCNF е много рестриктивен от 3NF, който помага за нормализирането на таблицата повече. Връзката в 3NF има минимална остатъчна излишък, която допълнително се премахва от BCNF.

Top