Перейти до вмісту

Шоста нормальна форма

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

Шоста нормальна форма (6НФ) — термін у теорії реляційних баз даних, який використовується двома способами.

6НФ (визначення К. Дейта)

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

Крістофер Дж. Дейт і інші визначили шосту нормальну форму як нормальну форму, засновану на розширенні реляційної алгебри.[1][2][3]

Реляційні оператори на кшталт join узагальнені для підтримки природного трактування інтервальних даних, як-от послідовності дат або моментів часу, наприклад у темпоральних базах даних[4][2][3]. Тоді шоста нормальна форма заснована на цьому узагальненому з'єднанні, як зазначено нижче:

Змінна-відношення R [таблиця] перебуває в шостій нормальній формі (скорочено 6НФ) тоді й тільки тоді, коли вона не задовольняє жодній нетривіальній залежності з'єднання узагалі — де, як раніше, залежність з'єднання є тривіальною тоді й тільки тоді, коли принаймні одна з проєкцій (можливо, U_проєкцій) виконується над множиною всіх атрибутів змінної-відношення [таблиці], що розглядається

— Дейт, Дарвен, [5].

Дейт і інші також дали наступне визначення:

Змінна-відношення R перебуває в шостій нормальній формі (6НФ) тоді й тільки тоді, коли кожна ЗЗ [залежність з'єднання] R є тривіальною — де ЗЗ є тривіальною тоді й тільки тоді, коли один із її компонентів повністю дорівнює її відповідному заголовку.

— Дейт, Дарвен, [6]

Будь-яке відношення в 6НФ перебуває також у 5НФ.

Шоста нормальна форма призначена для декомпозиції змінних-відношень до незвідних компонентів. Хоча це може бути порівняно неважливо для нетемпоральних змінних-відношень, воно може бути важливо при роботі з темпоральними змінними чи іншими інтервальними даними. Наприклад, якщо відношення включає ім'я постачальника, статус і місто, можна також захотіти додати темпоральні дані, як-от час, протягом якого ці значення є, чи були, валідними (наприклад, для історичних даних), але три значення можуть змінюватися незалежно один від одного та за різними ставками. Можна, наприклад, бажати відстежувати історію змін для статусу; перегляд виробничих витрат може виявити, що зміна була спричинена зміною постачальником міста, а отже, вони сплачують за доставку.

Для подальших обговорень на тему «Темпоральна агрегація в SQL» див. також Zimanyi[7]. Для іншого підходу див. TSQL2.[8]

Деякі автори використовують термін шоста нормальна форма по-іншому: як синонім доменно-ключової нормальної форми (ДКНФ). Це використання передує роботі Дейта й інших[9].

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

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

Шоста нормальна форма наразі використовується в деяких сховищах даних, де переваги переважають недоліки[10], наприклад, використовуючи якірне моделювання[en]. Хоча використання 6НФ призводить до розростання таблиць, сучасні бази даних можуть підрізати таблиці від запитів на вибірку (використовуючи процес, званий «ліквідацією таблиці»), де вони не вимагаються, а тому прискорюють запити на доступ лише до деяких атрибутів.

Приклад

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

Для того, щоб таблиця перебувала в 6НФ, вона має спочатку відповідати 5НФ, а потім вимагається, що кожна таблиця задовольняє лише тривіальні залежності з'єднань. Візьмемо простий приклад[11] із таблицею вже в 5НФ: тут, у таблиці користувачів, кожен атрибут є непорожнім, а первинним ключем є ім'я користувача:

Users_table
Ім'я користувача Відділ Статус

Таблиця перебуває в 5НФ, оскільки кожна залежність з'єднання передбачається потенційним ключем. Конкретніше, єдиними можливими залежностями з'єднань є: {ім'я користувача, статус}, {ім'я користувача, відділ}.

Версія 6НФ виглядатиме як це:

Users
Ім'я користувача Статус
Users_dept
Ім'я користувача Відділ

Тим не менше, потрібно дуже подумати перш, ніж намагатися застосувати нормалізацію 6НФ, оскільки вона передбачає драматичне збільшення кількості таблиць і може не відповідати вашим потребам.

Іншим прикладом, у якому можна продемонструвати 6НФ, є те, коли ми поглянемо на зайнятий простір. Для цього ми оберемо галузь охорони здоров'я з такою таблицею:

Таблиця 1
Ім'я медика Посада Тип Роки практики
Сміт Джеймс ортопед спеціаліст 23
Міллер Майкл ортопед стажист 4
Томас Лінда невролог стажист 5
Скотт Ненсі ортопед резидент 1
Аллен Браян невролог спеціаліст 12
Тернер Стівен офтальмолог стажист 3
Коллінз Кевін офтальмолог спеціаліст 7
Кінг Дональд невролог резидент 1
Гарріс Сара офтальмолог резидент 2

Галузь охорони здоров'я містить декілька спеціалізацій до максимального розвитку в цій галузі. Ними є: — резидент — стажист — спеціаліст.

Підвищення до наступної позиції для будь-кого займає декілька років його чи її належного навчання. Якщо лікар практикувався на місці менше за необхідний період, він або вона не здатні просунутися в ранзі. Наприклад: Якщо Майкл Міллер, ортопед-стажист, працював у медичній сфері 3 роки та 11 місяців, він не зможе стати ортопедом-спеціалістом, оскільки мінімальний період для підвищення зі стажиста до спеціаліста складає 4 роки.

Перехід від однієї позиції до іншої заснований на іспиті. Іспит, необхідний для просування від одного ступеня до іншого (наприклад: від стажиста до спеціаліста), можна скласти після періоду в 4 роки.

Наступним кроком у застосуванні 6НФ для Таблиці 1 є усунути всі нетривіальні залежності з'єднання.

Таблиця 2.1
Ім'я медика Посада Роки практики
Сміт Джеймс ортопед 23
Міллер Майкл ортопед 4
Томас Лінда невролог 5
Скотт Ненсі ортопед 1
Аллен Браян невролог 12
Тернер Стівен офтальмолог 3
Коллінз Кевін офтальмолог 7
Кінг Дональд невролог 1
Гарріс Сара офтальмолог 2
Таблиця 2.2
Тип Мінімум практики Максимум практики
резидент 0 2
стажист 3 5
спеціаліст 6 45

Тепер можна бачити, що перехід від 5НФ до 6НФ також зменшує простір, зайнятий таблицею. В дужках позначено, скільки місця займає кожне поле таблиці (в байтах).

Ім'я медика Посада Тип Роки практики
Сміт Джеймс[12] ортопед[11] спеціаліст[11] 23[4]
Міллер Майкл[15] ортопед[11] стажист[12] 4[4]
Томас Лінда[13] невролог[12] стажист[12] 5[4]
Скотт Ненсі[12] ортопед[11] резидент[9] 1[4]
Аллен Браян[12] невролог[12] спеціаліст[11] 12[4]
Тернер Стівен[14] офтальмолог[16] стажист[12] 3[4]
Коллінз Кевін[14] офтальмолог[16] спеціаліст[11] 7[4]
Кінг Дональд[12] невролог[12] резидент[9] 1[4]
Гарріс Сара[13] офтальмолог[16] резидент[9] 2[4]

Таблиця 1 = [366] (байтів)

Можна бачити, що Таблиця 1, яка перебуває в 5НФ, займає загалом 366 байтів. Ця таблиця, переведена в 6НФ, складатиметься з таблиць Таблиця 2.1 і Таблиця 2.2. Останні дві займатимуть разом 326 байтів.

Ім'я медика Посада Практика в роках
Сміт Джеймс[12] ортопед[11] 23[4]
Міллер Майкл[15] ортопед[11] 4[4]
Томас Лінда[13] невролог[12] 5[4]
Скотт Ненсі[12] ортопед[11] 1[4]
Аллен Браян[12] невролог[12] 12[4]
Тернер Стівен[14] офтальмолог[16] 3[4]
Коллінз Кевін[14] офтальмолог[16] 7[4]
Кінг Дональд[12] невролог[12] 1[4]
Гарріс Сара[13] офтальмолог[16] 2[4]

Таблиця 2.1 = [270]

Тип Мінімум практики Максимум практики
резидент[9] 0[4] 2[4]
стажист[12] 3[4] 5[4]
спеціаліст[11] 6[4] 45[4]

Таблиця 2.2 = [56] => Таблиця 2.1 + Таблиця 2.2 = [326] (байтів)

Можна бачити, що, в даному прикладі, 6НФ займає менше за 5НФ (конкретніше, менше на 40 байтів). Перехід на 6НФ зменшує зайнятий простір. Якщо початкова таблиця більша, після переходу на 6НФ, зменшений простір також буде більшим.

На практиці, між іншим, накладні витрати рядка через таке розділення інформації в багатьох таблицях займають більше місця. Проте це не відволікає від підвищеної гнучкості, узгодженості — та складності запитів.

Примітки

[ред. | ред. код]
  1. Date, Darwen та Lorentzos, 2003.
  2. а б Date, Darwen та Lorentzos, 2014.
  3. а б Harrington, 2009, с. 125—126.
  4. Date, Darwen та Lorentzos, 2003, с. 141—160.
  5. Date, Darwen та Lorentzos, 2003, с. 176.
  6. Date, Darwen та Lorentzos, 2014, с. 213.
  7. Zimanyi, 2006.
  8. Snodgrass.
  9. dbdebunk.
  10. Див. вебсайт Anchor Modeling для вебсайту, що описує спосіб моделювання сховищ даних, заснований на шостій нормальній формі
  11. Приклада надано: http://www.anattatechnologies.com/q/2011/07/normalization-6nf/ [Архівовано 25 березня 2017 у Wayback Machine.]

Джерела

[ред. | ред. код]
  • Date, Chris J.; Darwen, Hugh; Lorentzos, Nikos A. (January 2003). Temporal Data and the Relational Model: A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management. Oxford: Elsevier LTD. ISBN 1-55860-855-9.
  • Date, Chris J.; Darwen, Hugh; Lorentzos, Nikos A. (12 August 2014). Time and relational theory - Temporal databases in the relational model and SQL. Elsevier-Morgan Kaufmann. ISBN 9780128006313.
  • Snodgrass, Richard T. TSQL2 Temporal Query Language.
  • Zimanyi, E. (June 2006). Temporal Aggregates and Temporal Universal Quantification in Standard SQL (PDF). ACM SIGMOD Record, volume 35, number 2, page 16. ACM.
  • Date, Chris J. ON DK/NF NORMAL FORM. Архів оригіналу за 6 квітня 2012.
  • Harrington, Jan L. (2009). Relational Database Design and Implementation: Clearly Explained. Elsevier-Morgan Kaufmann. ISBN 9780123747303.

Література

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