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