Друга нормальна форма (2НФ, 2NF) — нормальна форма, що використовується для нормалізації баз даних. 2НФ первісно була визначена 1971 року Едгаром Коддом.Codd, E.F. "Further Normalization of the Data Base Relational Model." (Presented at Courant Computer Science Symposia Series 6, "Data Base Systems," New York City, May 24th-25th, 1971.) IBM Research Report RJ909 (August 31st, 1971). Republished in Randall J. Rustin (ed.), Data Base Systems: Courant Computer Science Symposia Series 6. Prentice-Hall, 1972. Щоб перебувати в другій нормальній формі, таблиця, що перебуває в першій нормальній формі, має відповідати додатковим критеріям. А саме: 1НФ таблиця перебуватиме в 2НФ тоді й лише тоді, коли для будь-якого потенційного ключа K і будь-якого атрибута A, який не є частиною потенційного ключа, A залежить саме від цілого потенційного ключа, а не від його частини.
Тобто, 1НФ таблиця перебуває в 2НФ тоді й тільки тоді, коли всі її неключові атрибути функціонально залежні від потенційного ключа в цілому.
У разі, якщо 1НФ таблиця не має складних потенційних ключів (таких, що складаються більш ніж з одного атрибута), тоді вона автоматично перебуватиме в 2НФ.
Приклад Розглянемо таблицю, що описує вміння працівників:
+ Вміння працівників Працівник Вміння Поточне місце роботиПалійДрукуванняБузковий провулок, 7ПалійСтенографіяБузковий провулок, 7ПалійМосяжництвоБузковий провулок, 7СіркоГончарствоПроспект Троянд, 49МамайАлхіміяПроспект Троянд, 49МамайПілотуванняПроспект Троянд, 49БогунГончарствоПроспект Троянд, 49
Ані {Працівник} ані {Вміння} не є потенційними ключами для таблиці. «Працівник» може мати декілька вмінь, а «Вміння» може з'являтись у більше ніж одного Працівника. Саме складний ключ {Працівник, Вміння} підходить як потенційний ключ для таблиці.
Інші атрибути, «Поточне місце роботи», залежні від частини потенційного ключа, від Працівника. Тобто таблиця не в 2НФ. Існує надлишковість у представленні атрибута «Поточне місце роботи»: тричі повторюється те, що Палій працює на Бузковому провулку, 7, і двічі, що Мамай працює на проспекті Троянд, 49. Ця надлишковість робить таблицю вразливою для аномалій оновлення: це, наприклад, можливість оновити місце роботи Палія на його записах про «Друкування» і «Стенографію» і не оновити запис про «Мосяжництво». Отримані дані будуть припускати суперечливі відповіді на питання «Де працює Палій?»
Варіант у 2НФ для цього набору даних буде містити дві таблиці: «Працівник» з потенційним ключем {Працівник}, «Вміння працівників» з потенційним ключем {Працівник, Вміння}:
+ Працівник Працівник Поточне місце роботи Палій Бузковий провулок, 7 Сірко Проспект Троянд, 49 Мамай Проспект Троянд, 49 Богун Проспект Троянд, 49 + Вміння працівників Працівник ВмінняПалійДрукуванняПалійСтенографіяПалійМосяжництвоСіркоГончарствоМамайАлхіміяМамайПілотуванняБогунГончарство
Жодна з цих таблиць не постраждає від аномалій оновлення.
Однак, не всі таблиці в 2НФ унебезпечені від аномалій оновлення. Приклад таблиці в 2НФ, яка може постраждати від аномалій оновлення:
+ Переможець змагання Змагання Рік Переможець Дата народження переможцяСпівуче поле1998Іван Швидкосвист14 березня 1977Майстерня талантів1998Степан Гуцало21 липня 1975Осінній лист1999Яромир Грабар28 вересня 1968 День вареників1999Степан Гуцало21 липня 1975Вище неба1999Іван Швидкосвист14 березня 1977
Попри те, що «Переможець» і «Дата народження переможця» визначається через цілий ключ {Змагання / Рік} і не є його частиною, саме поєднання «Переможець» / «Дата народження переможця» створює надлишковість. Це призводить до аномалій оновлення: якщо оновлення не потурбувалось про цілісність, можемо отримати переможця з двома різними датами народження.
Проблема полягає в транзитивній залежності атрибута «Дата народження переможця». «Дата народження переможця» залежить від «Переможець», який в свою чергу залежить від ключа.
Проблема адресована до третьої нормальної форми (3НФ).
2НФ і потенційні ключі Таблиці, в яких немає часткових функціональних залежностей від первинного ключа зазвичай, але не завжди, знаходяться в 2НФ. У додаток до первинного ключа, таблиця може містити інші потенційні ключі; необхідно встановити, що немає неключових атрибутів, які мають часткову залежність від будь-якого потенційного ключа.
Кілька потенційних ключів зустрічаються в наступній таблиці:
+ Моделі електричних зубних щіток Виробник Модель Повна назва Країна виробникForteX-PrimeForte X-PrimeІталіяForteUltracleanForte UltracleanІталіяDent-o-FreshEZbrushDent-o-Fresh EZBrushСШАKobayashiST-60Kobayashi ST-60ЯпоніяHochToothmasterHoch ToothmasterНімеччинаHoch X-PrimeHoch X-PrimeНімеччина
Навіть якщо проектувальник визначить первинний ключ як {Повна назва}, таблиця не в 2НФ. {Виробник, Модель} також потенційний ключ, і «Країна виробник» залежить від його підмножини «Виробник». Для переведення в 2НФ необхідно перейти до двох таблиць:
+ Виробники електричних зубних щіток Виробник Країна виробникForteІталіяDent-o-FreshСШАKobayashiЯпоніяHochНімеччина
+ Моделі електричних зубних щіток Виробник Модель Повна назваForteX-PrimeForte X-PrimeForteUltracleanForte UltracleanDent-o-FreshEZbrushDent-o-Fresh EZBrushKobayashiST-60Kobayashi ST-60HochToothmasterHoch ToothmasterHoch X-PrimeHoch X-Prime
Примітки
Посилання Базові знання з нормалізації баз даних Майк Чеппл (About.com). Введення в нормалізацію баз даних Майк Хіллер. Нормалізація ITS, University of Texas.