logo

Нормальна форма Бойса-Кодда (BCNF)

Попередні умови: Перша нормальна форма , Друга нормальна форма , Третя нормальна форма

Застосування загальних визначень 2NF і 3NF може виявити додаткову надмірність, спричинену залежностями, які порушують один або більше ключів-кандидатів. Однак, незважаючи на ці додаткові обмеження, все ще можуть існувати залежності, які призведуть до появи надмірності у зв’язках 3NF. Ця слабкість у 3NF призвела до появи більш сильної нормальної форми, яка називається в Нормальна форма Бойса-Кодда (Кодд, 1974) .



Хоча 3NF є адекватною нормальною формою для реляційних баз даних, все ж ця (3NF) нормальна форма може не усунути 100% надлишковість через функціональну залежність X−>Y, якщо X не є кандидатом на ключ даного відношення. Це можна вирішити за допомогою нормальної форми Бойса-Кодда (BCNF).

Нормальна форма Бойса-Кодда (BCNF)

Нормальна форма Бойса-Кодда (BCNF) базується на функціональних залежностях, які враховують усі потенційні ключі у відношенні; однак BCNF також має додаткові обмеження порівняно із загальним визначенням 3NF.

Правила BCNF

Правило 1: Таблиця має бути у 3-й нормальній формі.



Правило 2: X має бути суперключем для кожної функціональної залежності (FD) X−>Y у даному відношенні.

Примітка: Щоб перевірити, чи є відношення BCNF, ми ідентифікуємо всі детермінанти та переконаємося, що вони є ключами-кандидатами.

BCNF в СУБД



Ви натрапили на подібну ієрархію, відому як Нормальна форма Хомського в теорії обчислень. Тепер уважно вивчіть наведену вище ієрархію. Можна зробити висновок, що кожне відношення в BCNF також є в 3NF . Іншими словами, відношення в 3NF не повинно бути в BCNF. Поміркуйте над цим твердженням деякий час.

Щоб визначити найвищу нормальну форму даного відношення R із функціональними залежностями, першим кроком є ​​перевірка, чи виконується умова BCNF. Якщо виявлено, що R належить до BCNF, можна сміливо зробити висновок, що це відношення також існує 3NF , 2NF, і 1NF як показує ієрархія. 1NF має найменше обмежувальне обмеження – воно вимагає лише відношення R, щоб мати атомарні значення в кожному кортежі. 2NF має трохи більш обмежувальні обмеження.

3NF має більш жорстке обмеження, ніж перші дві нормальні форми, але є менш обмежувальним, ніж BCNF. Таким чином, обмеження зростають, коли ми переходимо вниз по ієрархії.

Приклади

Тут ми збираємося обговорити деякі основні приклади, які дозволять вам зрозуміти властивості BCNF. Тут ми обговоримо кілька прикладів.

Приклад 1

Розглянемо студентську базу, в якій вказані дані студента.

This_ID This_Branch Stu_Course Номер_філії Stu_Course_No
101 Комп'ютерні науки та інженерія СУБД B_001 201
101 Комп'ютерні науки та інженерія Комп'ютерні мережі B_001 202
102 Електроніка та комунікаційна техніка Технологія НВІС B_003 401
102 Електроніка та комунікаційна техніка Мобільний зв'язок B_003 402

Функціональна залежність вищезазначеного така:

Stu_ID −>Stu_Branch Stu_Course −> {Branch_Number, Stu_Course_No}>

Ключі-кандидати у наведеній вище таблиці: {This_ID, This_Course}

Чому цієї таблиці немає в BCNF?

Наведена вище таблиця не є BCNF, тому що, як ми бачимо, ні Stu_ID, ні Stu_Course не є суперключем. Оскільки правила, згадані вище, чітко говорять, що для того, щоб таблиця була в BCNF, вона повинна відповідати властивості, що для функціональної залежності X−>Y, X має бути в Super Key, і тут ця властивість не працює, тому ця таблиця не в BCNF .

Як задовольнити BCNF?

Щоб задовольнити цю таблицю в BCNF, ми повинні розкласти її на інші таблиці. Ось повна процедура, за допомогою якої ми перетворюємо цю таблицю в BCNF. Давайте спочатку розділимо цю основну таблицю на дві This_Branch і Stu_Course Таблиця.

Таблиця Stu_Branch

This_ID This_Branch
101 Комп'ютерні науки та інженерія
102 Електроніка та комунікаційна техніка

Ключ-кандидат для цієї таблиці: This_ID .

об'єкт для jsonobject java

Stu_Course Таблиця

Stu_Course Номер_філії Stu_Course_No
СУБД B_001 201
Комп'ютерні мережі B_001 202
Технологія НВІС B_003 401
Мобільний зв'язок B_003 402

Ключ-кандидат для цієї таблиці: Stu_Course .

Stu_ID до Stu_Course_No Table

This_ID Stu_Course_No
101 201
101 202
102 401
102 402

Ключ-кандидат для цієї таблиці: {Stu_ID, Stu_Course_No}.

Після декомпозиції на наступні таблиці, тепер це в BCNF, оскільки він передає умову Super Key, що у функціональній залежності X−>Y, X є Супер ключ.

Приклад 2

Знайти найвищу нормальну форму відношення R(A, B, C, D, E) з FD, заданим як:

{ BC->D, AC->BE, B->E }>

Пояснення:

  • Крок 1: Як ми бачимо, (AC)+ ={A, C, B, E, D}, але жодна з його підмножин не може визначити всі атрибути відношення, тому AC буде ключем-кандидатом. A або C не можуть бути отримані з будь-якого іншого атрибута відношення, тому буде лише 1 ключ-кандидат {AC}.
  • Крок 2: Простими атрибутами є ті атрибути, які є частиною ключа-кандидата {A, C} у цьому прикладі, а інші будуть непростими {B, D, E} у цьому прикладі.
  • Крок 3: Відношення R знаходиться в 1-й нормальній формі, оскільки реляційна СУБД не допускає багатозначних або складених атрибутів.

Відношення знаходиться у другій нормальній формі, оскільки BC->D знаходиться у другій нормальній формі (BC не є правильною підмножиною ключа-кандидата AC), а AC->BE знаходиться у 2-й нормальній формі (AC є ключем-кандидатом), а B->E знаходиться у другій нормальній формі (B не є правильною підмножиною ключа-кандидата AC).

Відношення є ні у 3-й нормальній формі, тому що в BC->D (ані BC не є суперключем, ані D не є простим атрибутом) і в B->E (ані B не є суперключем, ані E не є простим атрибутом), але щоб задовольнити 3-й нормаль для , або LHS FD має бути суперключем, або RHS має бути основним атрибутом. Таким чином, найвищою нормальною формою відношення буде друга нормальна форма.

Примітка: Простий атрибут не може транзитивно залежати від ключа у відношенні BCNF.

Розглянемо ці функціональні залежності деякого відношення R

AB ->C C ->B AB ->B>

Припустимо, відомо, що єдиним кандидатом на ключ R є AB. Потрібне уважне спостереження, щоб зробити висновок, що наведена вище залежність є транзитивною залежністю, оскільки основний атрибут B транзитивно залежить від ключа AB до C. Тепер перший і третій FD знаходяться в BCNF, оскільки вони обидва містять ключ-кандидат (або просто КЛЮЧ) з лівого боку. Друга залежність, однак, не в BCNF, але точно в 3NF через наявність основного атрибута в правій частині. Отже, найвищою нормальною формою R є 3NF, оскільки всі три FD задовольняють необхідні умови, щоб бути в 3NF.

Приклад 3

Наприклад, розглянемо співвідношення R(A, B, C)

A ->до н.е., B -> A>>

A і B є суперключами, тому наведене вище відношення знаходиться в BCNF.

Примітка: Розкладання BCNF завжди може бути неможливим за умови з’єднання без втрат. Наприклад, відношення R (V, W, X, Y, Z), з функціональними залежностями:

V, W ->X Y, Z -> X W -> Y>

Це не задовольнятиме декомпозицію BCNF із збереженням залежності.

Примітка: Надлишки іноді все ще присутні у відносинах BCNF, оскільки не завжди можливо їх повністю усунути.

Існують також деякі нормальні форми вищого порядку, такі як 4-та нормальна форма та 5-та нормальна форма.

Для отримання додаткової інформації зверніться до 4-ї та 5-ї нормальних форм.