П'я́та норма́льна фо́рма (5НФ), також відома як проєкційно-з'єднувана нормальна форма (ПЗ/НФ) — ступінь нормалізації баз даних, утворений для усунення надлишковості в реляційних базах даних, які містять багатозначні факти, шляхом відокремлення семантично пов'язаних кратних взаємозв'язків. Відношення знаходиться в 5НФ тоді і тільки тоді, коли кожна нетривіальна залежність з'єднання визначається потенційним ключем.
Залежність з'єднання *{A, B, … Z} на R визначається потенційним ключем R тоді і тільки тоді, коли кожен з A, B, …, Z є суперключем для R.[1]
Приклад
Розглянемо такий приклад:
Наявність товару у крамарів за брендами
Крамар
|
Бренд
|
Тип товару
|
Лесь Загородній
|
Акме
|
Порохотяг
|
Лесь Загородній
|
Акме
|
Хлібниця
|
Василь Куйбіда
|
Робасто
|
Ножиці садові
|
Василь Куйбіда
|
Робасто
|
Порохотяг
|
Василь Куйбіда
|
Робасто
|
Хлібниця
|
Василь Куйбіда
|
Робасто
|
Парасоля
|
Любим Жадько
|
Робасто
|
Порохотяг
|
Любим Жадько
|
Робасто
|
Прозорна труба
|
Любим Жадько
|
Акме
|
Порохотяг
|
Любим Жадько
|
Акме
|
Ліхтар
|
Любим Жадько
|
Німбус
|
Змішувач
|
Предикатом таблиці є: товари типу визначеного через Тип товару, зроблені брендом визначеним через Бренд, є в наявності у крамаря визначеного через Крамар.
За відсутності яких-небудь правил з обмеження правильних сполучень Крамаря, Бренду та Типу товару, всі три атрибути в попередній таблиці необхідні для відтворення окремої ситуації.
Припустимо, однак, що прийняте таке правило: Крамар займається певними Брендами і певними типами товарів. Якщо він займається брендом B і типом товару P, тоді (припускаємо, що бренд B виробляє тип товару P), крамар має пропонувати продукти типу P вироблені брендом B. Відношення не знаходиться в 5НФ, оскільки в ньому присутня нетривіальна залежність з'єднання *{{Крамар, Бренд}, {Бренд, Товар}, {Крамар, Товар}}, однак підмножини {Крамар, Бренд}, {Бренд, Товар}, {Крамар, Товар} не є суперключами.
В цьому випадку, можливо розділити таблицю на три:
Типи товарів за крамарями
Крамар
|
Тип товару
|
Лесь Загородній
|
Порохотяг
|
Лесь Загородній
|
Хлібниця
|
Василь Куйбіда
|
Ножиці садові
|
Василь Куйбіда
|
Порохотяг
|
Василь Куйбіда
|
Хлібниця
|
Василь Куйбіда
|
Парасоля
|
Любим Жадько
|
Прозорна труба
|
Любим Жадько
|
Порохотяг
|
Любим Жадько
|
Ліхтар
|
Любим Жадько
|
Змішувач
|
Бренди за крамарями
Крамар
|
Бренд
|
Лесь Загородній
|
Акме
|
Василь Куйбіда
|
Робасто
|
Любим Жадько
|
Робасто
|
Любим Жадько
|
Акме
|
Любим Жадько
|
Німбус
|
Тип товару за брендом
Бренд
|
Тип товару
|
Акме
|
Порохотяг
|
Акме
|
Хлібниця
|
Акме
|
Ліхтар
|
Робасто
|
Ножиці садові
|
Робасто
|
Порохотяг
|
Робасто
|
Хлібниця
|
Робасто
|
Парасоля
|
Робасто
|
Прозорна труба
|
Німбус
|
Змішувач
|
Зауважимо, що таке розбиття допомагає усунути надлишковість. Уявімо, що Лесь Загородній починає продавати товари Робасто. За попереднього дизайну ми мали б додати два рядки, бо Лесь Загородній може торгувати двома типами товарів Робасто: хлібницями і порохотягами. З новим розбиттям ми маємо додати лише один запис (в «Бренди за крамарями»).
Використання
Інколи зустрічається ситуація, коли таблиця в 4НФ не знаходиться в 5НФ. Це ситуації, в яких діють складні обмеження з дійсного світу, що накладаються на правильні сполучення значень атрибутів таблиці в 4НФ і не враховані в її структурі. Якщо така таблиця не нормалізована до 5НФ, тягар підтримання логічних зв'язків покладається на застосування, яке займається редагуванням таблиці; існує підвищений ризик порушення логічної цілісності. 5НФ усуває можливість такої нецілісності.
Примітки