П'ята нормальна форма — Вікіпедія

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

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

Приклад

[ред. | ред. код]

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

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

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

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

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

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

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

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

Використання

[ред. | ред. код]

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

Примітки

[ред. | ред. код]
  1. Analysis of normal forms for anchor-tables[недоступне посилання з липня 2019]