Нека обсъдим различията между 3NF и BCNF с помощта на таблицата за сравнение, показана по-долу.
Сравнителна таблица
Основа за сравнение | 3NF | BCNF |
---|---|---|
понятие | Не атрибутът non-prime трябва да е транзитивно зависим от ключа Кандидат. | За всяка тривиална зависимост във връзка с R, X-> Y, X трябва да бъде супер ключ на връзката R. |
Зависимост | 3NF може да се получи без да се жертват всички зависимости. | Зависимостите не могат да бъдат запазени в BCNF. |
разлагане | Разграждането без загуба може да се постигне в 3NF. | Разграждането без загуби е трудно постижимо в BCNF. |
Определение за 3NF
Счита се, че таблица или връзка са в трета нормална форма само ако таблицата вече е в 2NF и не съществува атрибут non-prime транзитивно зависим от ключа на кандидата на дадено отношение.
Така че, преди да се обърна към процеса на нормализиране на таблица в 3NF, позволете ми да обсъдя ключа на кандидата. Ключ-кандидат е минимален супер ключ, т.е. супер ключ с минимални атрибути, които могат да дефинират всички атрибути на дадено отношение. Така че, в процеса на нормализиране на вашата таблица, първо, вие разпознавате кандидат-ключа на дадена връзка. Атрибутите, които са част от ключа на кандидата, са основни атрибути, а атрибутите, които не са част от ключа на кандидата, са атрибути без премиум .
Сега, ако имаме отношение R (A, B, C, D, E, F) и имаме следната функция за зависимостта R.
Таблицата е в 2NF, тъй като атрибутът non-prime е частично зависим от кандидат ключ
Но се наблюдава транзитивна зависимост между предоставените функционални зависимости, тъй като атрибутът F не е пряко зависим от кандидат-ключа AB . Вместо това, атрибут F е транзитивно зависим от кандидат-ключа AB чрез атрибут D. До атрибут D има някаква стойност, която можем да достигнем до атрибутна стойност на F, от кандидат-ключа AB. В случай, че стойността на атрибут D е NULL, никога няма да намерим / търсим стойността на F с помощта на кандидат-ключа AB. Това е причината, поради която 3NF изисква да премахне транзитивната зависимост от отношенията.
Така че, за да премахнем тази транзитивна зависимост, трябва да разделим връзката R. Докато делим една връзка, винаги поставяйте ключа на кандидата и всички атрибути, които зависят от този кандидат ключ в първата връзка. В следващото разделено отношение ще поставим атрибута, който причинява транзитивна зависимост, както и атрибутите, които зависят от него във втората връзка.
Определение на BCNF
BCNF се счита за по-силен от 3NF. Отношението R да бъде в BCNF трябва да бъде в 3NF . И там, където във връзка с R има нетривиална функционална зависимост A -> B, тогава A трябва да е суперъгълник на връзката R. Както знаем, Super ключът е ключ, който има един атрибут или набор от атрибути, които определят целия атрибути на една връзка.
Нека сега да преминем към пример, за да разберем BCNF по-добре. Да предположим, че имаме отношение R (A, B, C, D, F), което има следните функционални зависимости.
Но една функционална зависимост, т.е. D -> F, нарушава дефиницията на BCNF, според която, ако D -> F съществува, тогава D трябва да бъде супер ключът, което тук не е така. Така ще разделим връзката R.
Ключови разлики между 3NF и BCNF
- 3NF заявява, че не атрибутът non-prime трябва да бъде транзитивно зависим от кандидат-ключа на отношението. От друга страна, BCNF заявява, че ако тривиалната функционална зависимост X -> Y съществува за дадена връзка; тогава X трябва да е супер ключ.
- 3NF може да се получи без да се жертва зависимостта на връзката. Въпреки това, зависимостта може да не бъде запазена, докато се получава BCNF.
- 3NF може да се постигне без загуба на информация от старата таблица, докато при получаване на BCNF може да загубим някаква информация от старата таблица.
Заключение:
BCNF е много рестриктивен от 3NF, който помага за нормализирането на таблицата повече. Връзката в 3NF има минимална остатъчна излишък, която допълнително се премахва от BCNF.