Четверта нормальна форма
Четверта нормальна форма (4НФ) — нормальна форма застосовна в нормалізації баз даних. Введена Рональдом Фейджином в 1977. 4НФ — наступний рівень нормалізації після нормальної форми Бойса — Кодда. Тоді як друга, третя, і нормальна форма Бойса — Кодда опікуються функціональною залежністю, 4НФ опікується загальнішим типом залежності, відомим як багатозначна залежність. Таблиця перебуває в 4НФ тоді й лише тоді, коли для кожної її багатозначної залежності X →→ Y, X — суперключ, тобто X або потенційний ключ, або його надмножина.[1]
Приклад
Розглянемо такий приклад:
Корчма | Тип вареників | Район доставки |
---|---|---|
Тарас Бульба | Із сиром | Молдаванка |
Тарас Бульба | Із сиром | Таїрово |
Тарас Бульба | Із сиром | Центр |
Тарас Бульба | З вишнями | Молдаванка |
Тарас Бульба | З вишнями | Таїрово |
Тарас Бульба | З вишнями | Центр |
За рогом | З грибами | Центр |
За рогом | З вишнями | Центр |
Тяжкі пропойці | Із сиром | Молдаванка |
Тяжкі пропойці | Із сиром | Таїрово |
Тяжкі пропойці | З грибами | Молдаванка |
Тяжкі пропойці | З грибами | Таїрово |
Кожний рядок показує куди корчма може доставити певний тип вареників.
В таблиці відсутні неключові атрибути, бо єдиний ключ це {Корчма, Тип вареників, Район доставки}. Тож таблиця знаходиться в усіх нормальних формах до НФБК. Однак, якщо ми припустимо, що типи вареників пропоновані рестораном не залежать від району доставки, тоді таблиця не знаходиться в 4НФ. Проблема в тому, що таблиця має дві нетривіальні багатозначні залежності від атрибута «Корчма» (який не є суперключем). Залежності такі:
- {Корчма} →→ {Тип вареників}
- {Корчма} →→ {Район доставки}
Ці нетривіальні багатозначні залежності на неключовому атрибуті відображають факт незалежності типів вареників, що пропонує корчма від районів в яких здійснюється доставка цією корчмою. Це призводить до надлишковості в таблиці: наприклад, ми тричі кажемо, що корчма «Тарас Бульба» пропонує варениками з вишнями, і якщо корчма «Тарас Бульба» почне пропонувати вареники з квасолею тоді нам буде необхідно додати декілька рядків, по одному для кожного району доставки. Навіть більше, нічого не заважає нам зробити це невірно: ми можемо додати рядки вареників з квасолею для всіх районів крім одного, звідси помилка багатозначної залежності {Корчма} →→ {Тип вареників}.
Для унеможливлення цих аномалій, ми маємо розмістити дані про типи пропонованих вареників в різні таблиці із даними про райони доставки, створивши дві таблиці, обидві в 4НФ:
Корчма | Тип вареників |
---|---|
Тарас Бульба | Із сиром |
Тарас Бульба | З вишнями |
За рогом | З грибами |
За рогом | З вишнями |
Тяжкі пропойці | Із сиром |
Тяжкі пропойці | З грибами |
Корчма | Район доставки |
---|---|
Тарас Бульба | Молдаванка |
Тарас Бульба | Таїрово |
Тарас Бульба | Центр |
За рогом | Центр |
Тяжкі пропойці | Молдаванка |
Тяжкі пропойці | Таїрово |
На відміну від випадку, коли типи вареників пропоновані рестораном змінюються залежно від районів доставки, вихідна таблиця буде задовольняти умовам 4НФ.
Рональд Фейджин показав, що досягти виконання 4НФ можливо завжди.[2] Теорема Ріссанена (про незалежність проекцій) теж застосовна до багатозначних залежностей.
4НФ в практиці
Стаття Маргарет Ву 1992 зауважує, що навчання з нормалізації баз даних зазвичай завершують безпосередньо перед 4НФ, можливо, через віру в те, що таблиці не в 4НФ (але такі, що знаходяться в попередніх) рідко зустрічаються в бізнес застосунках. А втім, ця віра може бути не точною. Ву звітує, що при вивченні сорока баз даних організацій, понад 20% містили одну або більше таблиць, що порушували 4НФ і при цьому відповідали умовам усіх нижніх форм.[3]
Примітки
- "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. ACM Transactions on Database Systems 2 (1): 267. doi:10.1145/320557.320571. Архів оригіналу за 29 листопада 2007. Процитовано 1 квітня 2011.
- Fagin, p. 268
- Wu, Margaret S. (March 1992). The Practical Need for Fourth Normal Form. ACM SIGCSE Bulletin 24 (1): 19–23. doi:10.1145/135250.134515.