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

Шоста нормальна форма (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], наприклад, використовуючи якірне моделювання. Хоча використання 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
ТипМінімум практикиМаксимум практики
резидент02
стажист35
спеціаліст645

Тепер можна бачити, що перехід від 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 серпня 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.

Література

  • Date, C.J. (2006). The relational database dictionary: a comprehensive glossary of relational terms and concepts, with illustrative examples. O'Reilly Series Pocket references. O'Reilly Media, Inc. с. 90. ISBN 978-0-596-52798-3.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.