Друга нормальна форма

Друга нормальна форма (2НФ, 2NF) нормальна форма, що використовується для нормалізації баз даних. 2НФ первісно була визначена 1971 року Едгаром Коддом.[1] Щоб перебувати в другій нормальній формі, таблиця, що перебуває в першій нормальній формі, має відповідати додатковим критеріям. А саме: 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Німеччина
HochX-PrimeHoch X-PrimeНімеччина

Навіть якщо проектувальник визначить первинний ключ як {Повна назва}, таблиця не в 2НФ. {Виробник, Модель} також потенційний ключ, і «Країна виробник» залежить від його підмножини «Виробник». Для переведення в 2НФ необхідно перейти до двох таблиць:

Виробники електричних зубних щіток
ВиробникКраїна виробник
ForteІталія
Dent-o-FreshСША
KobayashiЯпонія
HochНімеччина
Моделі електричних зубних щіток
ВиробникМодельПовна назва
ForteX-PrimeForte X-Prime
ForteUltracleanForte Ultraclean
Dent-o-FreshEZbrushDent-o-Fresh EZBrush
KobayashiST-60Kobayashi ST-60
HochToothmasterHoch Toothmaster
HochX-PrimeHoch X-Prime

Примітки

  1. 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.

Посилання

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.