Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
бд.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.92 Mб
Скачать

Четверта нормальна форма

Визначення 10. Багатозначні залежності. У відношенні R (A, B, C) існує багатозначна залежність R.A (r) (r) R.B в тому і тільки в тому випадку, якщо множина значень B, відповідна парі значень A і C, залежить тільки від A і не залежить від С (табл. 7.2.).

Таблиця 7.2. Багатозначні залежності у відношенні СПІВРОБІТНИКИ_ПРОЕКТИ_ДІТИ

Співробітник ПІБ

Проект номер

Іноземна мова

Дитина співробітника

Яровий

1

Китайська

Оксана

Яровий

1

Іспанська

Оксана

Яровий

1

Китайська

Захар

Яровий

1

Іспанська

Захар

Розглянемо другий приклад з наступною схемою відношення:

ПРОЕКТИ (ПРОЕКТ_НОМЕР, ПРОЕКТ_СПІВРОБІТНИК, ПРОЕКТ_ЗАВДАННЯ)

Відношення ПРОЕКТИ містить номери проектів, для кожного проекту список співробітників, які можуть виконувати проект, і список завдань, передбачених проектом. Співробітники можуть брати участь в декількох проектах, і різні проекти можуть включати однакові завдання.

Кожен кортеж відношення пов'язує певний проект зі співробітником, який бере участь у цьому проекті, і завданням, який співробітник виконує в рамках даного проекту (ми припускаємо, що будь-який співробітник, який бере участь в проекті, виконує всі завдання, передбачені цим проектом). Внаслідок сформульованих вище умов єдиним можливим ключем відношення є складний ключ ПРОЕКТ_НОМЕР, ПРОЕКТ_СПІВРОБІТНИК, ПРОЕКТ_ЗАВДАННЯ, і немає ніяких інших детермінантів. Отже, відношення ПРОЕКТИ знаходиться в BCNF. Але при цьому воно має недоліки: якщо, наприклад, деякий співробітник приєднується до даного проекту, необхідно вставити у відношення ПРОЕКТИ стільки кортежів, скільки завдань в ньому передбачено.

Відносно ПРОЕКТИ існують наступні дві багатозначні залежності:  ПРОЕКТ_НОМЕР (r) (r) ПРОЕКТ_СПІВРОБІТНИК  ПРОЕКТ_НОМЕР (r) (r) ПРОЕКТ_ЗАВДАННЯ

Легко показати, що в загальному випадку відносно R (A, B, C) існує багатозначна залежність R.A (r) (r) R.B в тому і тільки в тому випадку, коли існує багатозначна залежність R.A (r) (r) R.C.

Подальша нормалізація відношень, подібних відношенню ПРОЕКТИ, грунтується на наступній теоремі:

Теорема Фейджина. Відношення R(A, B, C) можна спроектувати без втрат у відношення R1(A, B) і R2(A, C) в тому і тільки в тому випадку, коли існує MVD A (r) (r) B | C.

Під проектуванням без втрат розуміється такий спосіб декомпозиції відношення, при якому початкове відношення повністю і без надмірності відновлюється шляхом природного з'єднання отриманих відношень.

Визначення 11. Четверта нормальна форма. Відношення R знаходиться в четвертій нормальній формі (4NF) в тому і тільки в тому випадку, якщо відношення знаходиться у 3NF та в разі існування багатозначною залежності A (r) (r) B всі інші атрибути R функціонально залежать від A.

У нашому прикладі можна зробити декомпозицію відношення ПРОЕКТИ в два відношення ПРОЕКТИ-СПІВРОБІТНИКИ і ПРОЕКТИ-ЗАВДАННЯ:

ПРОЕКТИ-СПІВРОБІТНИКИ (ПРОЕКТ_НОМЕР, ПРОЕКТ_СПІВРОБІТНИК)

ПРОЕКТИ-ЗАВДАННЯ (ПРОЕКТ_НОМЕР, ПРОЕКТ_ЗАВДАННЯ)

Обидва ці відношення знаходяться в 4NF і вільні від зазначених аномалій.

У звичайної людини при проектуванні отримується 4NF, в тому випадку, якщо не пов'язуються логічно незв'язані функціональні залежності в одній таблиці.