Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 6 Нормализация (Укр).doc
Скачиваний:
14
Добавлен:
19.11.2019
Размер:
1.49 Mб
Скачать

6.10. Четверта нормальна форма (4нф)

Як було сказано вище, НФБК дозволяє усунути будь-які аномалії, викликані функціональними залежностями. Однак у ході досліджень був виявлений ще один тип залежності - багатозначна залежність (multi - valued dependency - MVD), що при проектуванні відносин також може викликати проблеми, зв'язані з надмірністю даних (Fagin, 1977). У цьому розділі коротко описується багатозначна залежність і .зв'язок цього типу залежності з четвертою нормальною формою відносин (4НФ).

6.10.1. Багатозначна залежність

Можливість існування у відношенні багатозначних залежностей виникає внаслідок приведення вихідних таблиць до 1НФ, для якої не допускається наявність деякого набору значень на перетинанні одного рядка й одного стовпця. Наприклад, при наявності у відношенні двох багатозначних атрибутів для досягнення несуперечливого стану рядків необхідно повторити в них кожне значення одного з атрибутів у сполученні з кожним значенням іншого атрибута. Подібний тип обмеження породжує багатозначну залежність і приводить до надмірності даних. Розглянемо представлене в табл. 6.28 відношення Branch_Staff_Client, у якому містяться імена співробітників (SName) і клієнтів (CName) визначеного відділення компанії (Branch_No).

У цьому прикладі у відділенні компанії з номером 'ВЗ' працюють співробітники з іменами 'Ann Beach' і 'David Ford'. Крім того, у ньому зареєстровані клієнти з іменами 'Aline Stewart' і 'Mike Richie'. Однак, якщо в даному відділенні компанії між співробітниками і клієнтами немає ніякої прямої зв'язку, те необхідно створити рядок для кожної комбінації співробітника і клієнта - тільки це дозволить мати гарантії, що відношення знаходиться в несуперечливому стані. Ця вимога відбиває наявність у відношенні Branch_Staff_Client багатозначної залежності. Інакше кажучи, у даному відношенні існує багатозначна залежність, тому що в ньому міститься два незалежні зв'язки типу 1:М.

Багатозначна залежність У випадку багатозначної залежності, що існує між атрибутами А, В и С деякого відношення, для кожного значення А мається набір значень атрибута В и набір значень атрибута С. Однак вхідні в ці набори значення атрибутів В и С не залежать друг від друга.

Багатозначна залежність між атрибутами А, В и С деякого відношення далі буде позначатися в такий спосіб:

А -> У

А -> З

Наприклад, визначимо багатозначну залежність, що має місце у відношенні Branch_Staff_Client, представленому в табл. 6.28.

Branch_No -> SName

Branch_No -> CName

Багатозначна залежність може бути додатково визначена як тривіальна чи нетривіальна. Наприклад, багатозначна залежність. А -> У деякого відношення R визначається як тривіальна, якщо атрибут У є підмножиною атрибута А чи A U У = R.

І навпаки, багатозначна залежність визначається як нетривіальна, якщо жодне, ні інша умова не виконується. Тривіальна МЗЗ не накладає ніяких обмежень на дане відношення, а нетривіальна - накладає.

Багатозначна залежність у представленому в табл. 6.28 відношенні Branch_Staff_Client є нетривіальної, тому що в цьому відношенні жодне, ні інша умова не задовольняється. Отже, на відношення Branch_Staff_Client через наявність нетривіальної МЗЗ накладається обмеження, що приводить до появи повторюваних рядків, необхідних для того, щоб гарантувати несуперечність зв'язку між атрибутами SName і CName.

Хоча відношення Branch_Staff_Client знаходиться в НФБК (оскільки є тільки один потенційний ключ), воно усе ще залишається погано структурованим через надмірність даних, викликаної присутністю нетривіальної МЗЗ. Очевидно, що доцільніше було б визначити більш строгу форму НФБК, що виключала б створення таких реляційних структур, як відношення Branch Staff Client.