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

Перша нормальна форма

Відношення знаходиться у першій нормальній формі (1NF), якщо:

  • кожний рядок таблиці має унікальний ключ;

  • рядки не впорядковані;

  • атрибути не впорядковані (можна переставляти стовпці);

  • відсутні структурні атрибути - всі атрибути «атомарні»;

  • нема рядків, які повторюються.

Друга нормальна форма

Розглянемо наступний приклад схеми відношень: СПІВРОБІТНИКИ-ВІДДІЛИ-ПРОЕКТИ (СПІВРОБІТНИК_НОМЕР, СПІВРОБІТНИК_ЗАРПЛАТНЯ, ВІДДІЛ_НОМЕР, ПРОЕКТ_НОМЕР, СПІВРОБІТНИК_ЗАВДАННЯ)

Первинний ключ:  СПІВРОБІТНИК_НОМЕР, ПРОЕКТ_НОМЕР

Функціональні залежності:  СПІВРОБІТНИК_НОМЕР (r) СПІВРОБІТНИК_ЗАРПЛАТНЯ  СПІВРОБІТНИК_НОМЕР (r) ВІДДІЛ_НОМЕР  ВІДДІЛ_НОМЕР (r) СПІВРОБІТНИК_ЗАРПЛАТНЯ  СПІВРОБІТНИК_НОМЕР, ПРОЕКТ_НОМЕР (r) СПІРОБІТНИК_ЗАВДАННЯ

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

Визначення 6. Друга нормальна форма (в цьому визначенні передбачається, що єдиним ключем відношення є первинний ключ). Відношення R знаходиться у другій нормальній формі (2NF) в тому і тільки в тому випадку, коли перебуває в 1NF, і кожен неключовий атрибут повністю залежить від первинного ключа.

Можна провести наступну декомпозицію відношення СПІВРОБІТНИКИ-ВІДДІЛИ-ПРОЕКТИ в два відношення СПІВРОБІТНИКИ-ВІДДІЛИ і СПІВРОБІТНИКИ-ПРОЕКТИ:  СПІВРОБІТНИКИ-ВІДДІЛИ (СПІВРОБІТНИК_НОМЕР, СПІВРОБІТНИК_ЗАРПЛАТНЯ, ВІДДІЛ_НОМЕР)

Первинний ключ:  СПІРОБІТНИК_НОМЕР

Функціональні залежності:  СПІВРОБІТНИК_НОМЕР (r) СПІВРОБІТНИК_ЗАРПЛАТНЯ  СПІВРОБІТНИК_НОМЕР (r) ВІДДІЛ_НОМЕР  ВІДДІЛ_НОМЕР (r) СПІВРОБІТНИК_ЗАРПЛАТНЯ

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

Первинний ключ:  СПІВРОБІТНИК_НОМЕР, ПРОЕКТ_НОМЕР

Функціональні залежності:  СПІВРОБІТНИК_НОМЕР, ПРОЕКТ_НОМЕР (r) CПІВРОБІТНИК_ЗАВДАННЯ

Кожне з цих двох відношень знаходиться в 2NF, і в них усунені зазначені вище аномалії (легко перевірити, що всі зазначені операції виконуються без проблем).

Якщо припустити наявність декількох ключів, то визначення 6 прийме наступний вигляд:

Визначення 6~. Відношення R знаходиться у другій нормальній формі (2NF) в тому і тільки в тому випадку, коли воно знаходиться в 1NF, і кожен неключовий атрибут повністю залежить від кожного ключа R.

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

35. 3НФ, BCNF, 4НФ, 5НФ.

7.4. 3НФ, BCNF, 4НФ, 5НФ