Проектування баз даних
35


перебуває в ЗНФ, якщо зміна значення будь-якого його атрибута (крім

тих, що входять до первинного ключа) не призведе до необхідності зміни

інших полів.

Існує ще підсилена ЗНФ — нормальна форма Бойса - Кодда (БКНФ). БКНФ вивчає залежності ключових атрибутів від неключових; якщо

такі залежності існують, то їх потрібно вилучити.

Розглянемо приклад відношення АВТОМОБІЛЬ (модель автомобіля,

кількість циліндрів у двигуні, країна-виготовлювач). У цьому відношенні

існують такі залежності:

Отож, ключовий атрибут «модель автомобіля» залежить від неключово­го атрибута «країна-виготовлювач». Тому при зведенні до БКНФ початкове відношення буде розбито на такі відношення:

АВТОМОБІЛЬ (модель автомобіля, кількість циліндрів у двигуні);

ВИРОБНИК (країна-виготовлювач, модель автомобіля).

Відношення перебуває в БКНФ, якщо воно перебуває в ЗНФ і в ньому відсутні залежності ключів від неключових атрибутів. Відношення, яке з перебуває в БКНФ, завжди є відношенням у ЗНФ. Але, навпаки, відно­шення в ЗНФ не завжди можна привести до нормальної форми Бойса -Кодда, не втративши залежності між його атрибутами.

Розглянемо ще такий приклад. Нехай задано відношення К(місто, адре­са, індекс), у якому є такі залежності:

Зведення відношення до ЗНФ дасть два відношення: R.1 (місто, адреса). R2 (адреса, індекс). Вони перебувають у ЗНФ, але не є відношеннями в НФБК, оскільки у відношенні R існує залежність індекс —> місто, тобто відношення в ЗНФ не завжди є відношенням у НФБК. Якщо ми зведемо це відношення до НФБК, то отримаємо відношення R1 (місто, адреса), R2 (індекс, місто), в яких будуть відображені не всі залежності початкового ві­дношення. Так, не буде відображено залежності індекс —> адреса, а саме індекс позначає відділення зв'язку, що обслуговує адресатів якоїсь вулиці певного міста. Отож, зведення до НФБК може призвести до втрати важливих для початкового відношення залежностей, а об'єднання отриманих і результаті такої декомпозиції відношень не дасть початкового відношення Тому при зведенні до НФБК необхідно ретельно вивчати всі залежності г виконувати його лише тоді, коли виконується така вимога: «об'єднання без втрат».

Відношення перебуває в БКНФ, якщо для всіх нетривіальних залежнос­тей Х —> Y у R, Х — надключ. Залежність Х —> XI є тривіальною, якщо, X) X. Надключ — це атрибут Х відношення R такий, що для кожного А в Ці Х —> А. Відношення в БКНФ завжди є відношенням у ЗНФ, але не завжди відношення в ЗНФ є відношенням у БКНФ.

Нормальна форма Бойса - Кодда має такі самі переваги, що й ЗНФ, то­бто виключає можливість виникнення аномалій, пов'язаних з виконанням операцій поповнення, вилучення та заміни даних, а також усуває надлишковість даних.

На четвертому кроці нормалізації проводиться аналіз на присут­ність багатозначних залежностей у відношенні. Якщо вони є, викону­ють декомпозицію відношення. Багатозначна залежність є різновидом 1 функціональної залежності, їй відповідає співвідношення 1:Б між атри­бутами. Атрибут А багатозначно визначає атрибут В у відношенні R (А, і В, С), якщо В залежить лише від А при будь-яких його 1 комбінаціях з іншими атрибутами відношення R. Графічно це познача­ють так: А —>> В.

Якщо залежність А -» В єдина у відношенні R, то відношення пере­буває в ЗНФ.

Якщо у відношенні присутні А —» В і А -» С, то відношення потріб­но розкласти на два інших відношення: R (А, В) і R (А, С).

Розглянемо приклад. Нехай задано відношення СПІВРОБІТНИК (табельний номер, державна нагорода, прізвище, ім'я та по батькові члена сім'ї, код родинних відносин).

У цьому відношенні виконуються багатозначні залежності:

табельний номер —» державна нагорода, табельний номер —» прізвище, ім'я та по батькові члена сім'ї. Для того щоб виключити надлишкове дублювання, початкове відно­шення необхідно розкласти на два відношення: ВИНАГОРОДИ (табельний номер, державна нагорода), СІМ'Я (табельний номер, ім'я та по батькові члена сім'ї, код родинних відносин).