Четверта нормальна форма

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

Четверта нормальна форма (4НФ) — нормальна форма застосовна в нормалізації баз даних. Введена Рональдом Фейджином в 1977. 4НФ — наступний рівень нормалізації після нормальної форми Бойса — Кодда. Тоді як друга, третя, і нормальна форма Бойса — Кодда опікуються функціональною залежністю, 4НФ опікується загальнішим типом залежності, відомим як багатозначна залежність. Таблиця перебуває в 4НФ тоді й лише тоді, коли для кожної її багатозначної залежності X →→ Y, Xсуперключ, тобто X або потенційний ключ, або його надмножина.[1]

Приклад

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

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

Райони доставки вареників
Корчма Тип вареників Район доставки
Тарас Бульба Із сиром Молдаванка
Тарас Бульба Із сиром Таїрово
Тарас Бульба Із сиром Центр
Тарас Бульба З вишнями Молдаванка
Тарас Бульба З вишнями Таїрово
Тарас Бульба З вишнями Центр
За рогом З грибами Центр
За рогом З вишнями Центр
Тяжкі пропойці Із сиром Молдаванка
Тяжкі пропойці Із сиром Таїрово
Тяжкі пропойці З грибами Молдаванка
Тяжкі пропойці З грибами Таїрово

Кожний рядок показує куди корчма може доставити певний тип вареників.

В таблиці відсутні неключові атрибути, бо єдиний ключ це {Корчма, Тип вареників, Район доставки}. Тож таблиця знаходиться в усіх нормальних формах до НФБК. Однак, якщо ми припустимо, що типи вареників пропоновані рестораном не залежать від району доставки, тоді таблиця не знаходиться в 4НФ. Проблема в тому, що таблиця має дві нетривіальні багатозначні залежності від атрибута «Корчма» (який не є суперключем). Залежності такі:

  • {Корчма} →→ {Тип вареників}
  • {Корчма} →→ {Район доставки}

Ці нетривіальні багатозначні залежності на неключовому атрибуті відображають факт незалежності типів вареників, що пропонує корчма від районів в яких здійснюється доставка цією корчмою. Це призводить до надлишковості в таблиці: наприклад, ми тричі кажемо, що корчма «Тарас Бульба» пропонує варениками з вишнями, і якщо корчма «Тарас Бульба» почне пропонувати вареники з квасолею тоді нам буде необхідно додати декілька рядків, по одному для кожного району доставки. Навіть більше, нічого не заважає нам зробити це невірно: ми можемо додати рядки вареників з квасолею для всіх районів крім одного, звідси помилка багатозначної залежності {Корчма} →→ {Тип вареників}.

Для унеможливлення цих аномалій, ми маємо розмістити дані про типи пропонованих вареників в різні таблиці із даними про райони доставки, створивши дві таблиці, обидві в 4НФ:

Різновиди в ресторанах
Корчма Тип вареників
Тарас Бульба Із сиром
Тарас Бульба З вишнями
За рогом З грибами
За рогом З вишнями
Тяжкі пропойці Із сиром
Тяжкі пропойці З грибами
Райони доставки ресторанів
Корчма Район доставки
Тарас Бульба Молдаванка
Тарас Бульба Таїрово
Тарас Бульба Центр
За рогом Центр
Тяжкі пропойці Молдаванка
Тяжкі пропойці Таїрово

На відміну від випадку, коли типи вареників пропоновані рестораном змінюються залежно від районів доставки, вихідна таблиця буде задовольняти умовам 4НФ.

Рональд Фейджин показав, що досягти виконання 4НФ можливо завжди.[2] Теорема Ріссанена (про незалежність проєкцій) теж застосовна до багатозначних залежностей.

4НФ в практиці

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

Стаття Маргарет Ву 1992 зауважує, що навчання з нормалізації баз даних зазвичай завершують безпосередньо перед 4НФ, можливо, через віру в те, що таблиці не в 4НФ (але такі, що знаходяться в попередніх) рідко зустрічаються в бізнес застосунках. А втім, ця віра може бути не точною. Ву звітує, що при вивченні сорока баз даних організацій, понад 20% містили одну або більше таблиць, що порушували 4НФ і при цьому відповідали умовам усіх нижніх форм.[3]

Примітки

[ред. | ред. код]
  1. "A relation schema R* is in fourth normal form (4NF) if, whenever a nontrivial multivalued dependency X →→ Y holds for R*, then so does the functional dependency X → A for every column name A of R*. Intuitively all dependencies are the result of keys." Fagin, Ronald (September 1977). Multivalued Dependencies and a New Normal Form for Relational Databases (PDF). ACM Transactions on Database Systems. 2 (1): 267. doi:10.1145/320557.320571. Архів оригіналу (PDF) за 29 листопада 2007. Процитовано 1 квітня 2011.
  2. Fagin, p. 268
  3. Wu, Margaret S. (March 1992). The Practical Need for Fourth Normal Form. ACM SIGCSE Bulletin. 24 (1): 19—23. doi:10.1145/135250.134515.