П'ята нормальна форма

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

П'я́та норма́льна фо́рма (5НФ), також відома як проекційно-з'єднувана нормальна форма (ПЗ/НФ) — ступінь нормалізації баз даних ,утворена для усунення надлишковості в реляційних базах даних, що містять багатозначні факти, шляхом відокремлення семантично пов'язаних кратних взаємозв'язків. Відношення знаходиться в 5НФ тоді і тільки тоді, коли кожна нетривіальна залежність з'єднання визначається потенційним ключем.

Залежність з'єднання *{A, B, … Z} на R визначається потенційним ключем R тоді і тільки тоді, коли кожен з A, B, …, Z є суперключем для R.[1]

Приклад[ред.ред. код]

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

Наявність товару у крамарів за брендами
Крамар Бренд Тип товару
Лесь Загородній Акме Порохотяг
Лесь Загородній Акме Хлібниця
Василь Куйбіда Робасто Ножиці садові
Василь Куйбіда Робасто Порохотяг
Василь Куйбіда Робасто Хлібниця
Василь Куйбіда Робасто Парасоля
Любим Жадько Робасто Порохотяг
Любим Жадько Робасто Прозорна труба
Любим Жадько Акме Порохотяг
Любим Жадько Акме Ліхтар
Любим Жадько Німбус Змішувач

Предикатом таблиці є: Товари типу визначенного через Тип товару, зроблені брендом визначенним через Бренд, є в наявності у крамаря визначенного через Крамар.

ЗА відсутності яких-небудь правил з обмеження вірних сполучень Крамаря, Бренду і Типу товару, всі три атрибути в попередній таблиці необхідні для відтворення ситуації вірно.

Припустимо, однак, що прийняте таке правило: Крамар займається певними Бренди і певними типами товарів. Якщо він займається брендом B і типом товару P, тоді (припускаємо, що бренд B виробляє тип товару P), крамар має пропонувати продукти типу P вироблені брендом B. Відношення не знаходиться в 5НФ, оскільки в ньому присутня нетривіальна залежність з'єднання *{{Крамар, Бренд}, {Бренд, Товар}, {Крамар, Товар}}, однак підмножини {Крамар, Бренд}, {Бренд, Товар}, {Крамар, Товар} не є суперключами.

В цьому випадку, можливо розділити таблицю на три:

Типи товарів за крамарями
Крамар Тип товару
Лесь Загородній Порохотяг
Лесь Загородній Хлібниця
Василь Куйбіда Ножиці садові
Василь Куйбіда Порохотяг
Василь Куйбіда Хлібниця
Василь Куйбіда Парасоля
Любим Жадько Прозорна труба
Любим Жадько Порохотяг
Любим Жадько Ліхтар
Любим Жадько Змішувач
Бренди за крамарями
Крамар Бренд
Лесь Загородній Акме
Василь Куйбіда Робасто
Любим Жадько Робасто
Любим Жадько Акме
Любим Жадько Німбус
Тип товару за брендом
Бренд Тип товару
Акме Порохотяг
Акме Хлібниця
Акме Ліхтар
Робасто Ножиці садові
Робасто Порохотяг
Робасто Хлібниця
Робасто Парасоля
Робасто Прозорна труба
Німбус Змішувач


Завуважимо, що таке розбиття допомогає усунути надлишковість. Уявімо, що Лесь Загородній починає продавати товари Робасто. За попереднього дизайну ми мали б додати два рядки, бо Лесь Загородній може торгувати двома типами товарів Робасто: хлібницями і порохотягами. З новим розбиттям ми маємо додати лише один запис (в «Бренди за крамарями»).

Використання[ред.ред. код]

Інколи зустрічається ситуація, коли таблиця в 4НФ не знаходиться в 5НФ. Це ситуації, в яких складні обмеження з дійсного світу, що накладаються на вірні сполучення значень атрибутів таблиці в 4НФ не враховані в її структурі. Якщо така таблиця не нормалізована до 5НФ, тягар підтримання логічних зв'язків лягає на застосунок, який займається редагуванням таблиці; і існує підвищений ризик порушення логічної цілісності. 5НФ усуває можливість такої нецілісності.

Примітки[ред.ред. код]