Попередній
Визначення нормальної форми (яка з презентації «подальшої нормалізації бази даних Relational Model» в 1971 відомий як першої нормальної формі ) і по визначенню реляційної парадигми сама по собі була опублікована в 1970 році в науковій роботі , що при умови сильної основа для практики адміністрування баз даних, тобто, «Реляційна модель даних для великих Shared банків даних» (RM для стислості) , створений доктором Е. Ф. Кодда , який є одержувачем премії Тьюринга і повноваження щодо реляційної бази.
Так, існує багато пояснень, інтерпретацій, експозицій, відхилень та думок щодо тексту доктора Кодда, але я особисто вважаю за краще дотримуватися оригіналу джерела і настійно пропоную проаналізувати його самостійно, щоб можна було зробити власні висновки.
Я, звичайно, не розумію РМ у всій повноті, але те, що я розумію, дозволяє мені оцінити його досконалість, бачення, намір та масштаби, і хоча десятиліттями пізніше можна зазначити, що він має кілька незначних неточностей, вони не зменшуються, у будь-якому разі її геніальність та витонченість. У своїй галузі RM витримала випробування часом унікальним чином і залишається незрівнянною.
Акт наголошування вищезгаданих нарікань був би - використовуючи благодійний термін - несправедливим, оскільки, дивлячись на це з великої відстані, цей насіннєвий матеріал вимагав декількох уточнень та розширень, так, але головна частина роботи була твердою, сама концепція (і, справді, доктор Кодд зробив більшість - якщо не всі - таких удосконалень та розширень).
Я продовжую постійно читати RM, щоб зміцнити своє розуміння цього виняткового джерела знань (і моя пошана до цього постійно зростає з кожним перечитанням); мета - стати на плечі гігантів.
Відносини та таблиці
Важливо зазначити, що оскільки відносини є абстрактними ресурсами, доктор Кодд передбачав корисність їх представлення у табличній формі (спочатку він використовував термін "представлення масиву", але згодом використовував "таблицю" або "r-таблицю"), так що користувачі, дизайнери та адміністратори реляційної бази даних (RDB) можуть звернутися до них більш звичним або конкретним чином. Тому в контексті реалізації RDB доцільно використовувати таблицю як скорочення для зв'язку, поки згадана таблиця означає фактичне відношення. Ця особливість є - досить очевидною - досить істотною, оскільки, перш ніж оцінювати, чи таблиця представляє відношення, яке відповідає першій нормальній формі (1NF), вона повинна представляти саме відношення.
RM, природно, містить ті якості, які повинна мати таблиця, щоб визначити, чи насправді вона зображує відношення, але я запропоную тут неформальну та невибагливу інтерпретацію щодо них (ще одна, так!):
- Він повинен мати ім’я (кожне конкретне відношення в структурі бази даних повинно відрізнятися від решти).
- Кожен з його рядів повинен зображати рівно один кортеж відповідного відношення.
- Порядок її рядків не має значення взагалі.
- Кожен з його стовпців повинен мати ім’я, яке означає значення саме одного домену відповідного відношення, і вказане ім'я повинно відрізнятися від імен решти стовпців таблиці (стовпець повинен бути однозначно диференційований і повинен містити відмінне значення і так, роль, яку відіграють модельєр баз даних та бізнес-експерти для визначення кожної важливої сфери з точністю, першорядна)
- Порядок його стовпців не має ніякого значення.
- Усі його ряди повинні мати однакову кількість стовпців.
- Він повинен мати принаймні один стовпчик або одну комбінацію стовпців, яка однозначно ідентифікує кожен кортеж, зображений за допомогою рядків; таким чином, всі рядки повинні бути різними (так, це підкреслює важливість наявності хоча б одного КЛЮЧОВОГО КЛЮЧУ, а коли є два або більше КЛЮЧІВ, один слід визначати як ПЕРВІЙНИЙ на основі прагматичних причин, тоді як решта можуть бути вважається ВІДПОВІДНИМ, але так, перш ніж приймати рішення, кожен з КЛЮЧІВ був "кандидатом" на визначення як ПЕРВИЧНИЙ).
Маючи таблицю, яка фактично являє собою відношення, є критичною, оскільки, коли вона піддається операціям маніпуляції реляційного типу, тоді результат, знову ж таки, є таблицею, яка представляє відношення. Таким чином, поведінка зазначеної таблиці передбачувана .
Атомні домени (стовпці)
У перших розділах РМ доктор Кодд представляє кілька зразків відносин, щоб ввести деякі поняття; тож, щоб зрозуміти значення атомного домену , почнемо із наступного уривку з RM, який детально описує деякі відповідні моменти:
Поки ми обговорювали приклади відносин, визначених на простих областях - доменах, елементами яких є атомні (нерозмінні) значення. Неатомні значення можуть бути обговорені в реляційних рамках. Таким чином, деякі області можуть мати відносини як елементи. Ці відносини, у свою чергу, можуть бути визначені у непростих доменах тощо.
Таким чином, можна сказати, що кожне з вищезгаданих описувальних відносин відповідає одному з двох видів, скажімо, або роду A або роду B :
Вид A групи лише відносини (таблиці), структуровані з доменами (стовпцями), які містять виключно прості значення у кожному з їх кортежів (рядків), тобто такі домени (стовпці) не містять відносин (таблиць) як значень, які в цей контекст означає, що значення є атомними, оскільки їх не можна послідовно розкласти на нові відносини (таблиці). Отже, відносини цього класу є нормалізованими , тобто вони відповідають 1NF, їх форма бажана.
Вид B винятково інтегрований відносинами (таблицями), які мають один або більше доменів (стовпців), які містять відносини як значення у кожному відповідному кортежі (рядку), і це означає, що ці значення неотомічні, оскільки вони можуть бути згодом розбиті на нові відносини (таблиці), тобто їх можна розкласти . Таким чином, відносини такого роду є ненормалізованими, тобто вони зачіпають 1NF, вони знаходяться в небажаній формі.
Нормалізація
Доктор Кодд представляє розділ про нормалізацію роботи в RM з наступним пунктом:
Відношення, домени яких просто всі, може бути представлене в сховищі двовимірним однорідним масивом стовпців такого типу, про які йшлося вище. Деякі складніші структури даних необхідні для зв'язку з одним або кількома непростими доменами. З цієї причини (та інших, які будуть наведені нижче) можливість усунення непростих доменів варто вивчити! Насправді існує дуже проста процедура усунення, яку ми назвемо нормалізацією.
Потім він продовжує показувати:
Група відносин, де людина ненормалізований (має домени, які містять відносини як значення, тобто вони неотомічні; тобто вони непрості)
Група відносин, які є нормалізованими (тобто такі, які були розкладені; тобто такі, які відносять цінні домени, були розбиті на прості, що означає, що вони атомні)
А потім він описує процедуру отримання нормалізованих відносин від ненормалізованих.
У цьому відношенні відносини, які він використовував для ілюстрації нормування та опис вправи, є цілком зрозумілими, і я рекомендую ще раз проаналізувати їх самостійно (і я сподіваюся, що це спонукає деяких читачів брати участь у тексті).
Послідовно він вказує:
Можливі подальші операції нормалізуючого виду. Вони не обговорюються в цій роботі.
І зазначені операції, тобто друга і третя нормальна форма (2NF і 3NF), фактично детально описані в «Подальшій нормалізації реляційної моделі бази даних», і як було сказано вище, після презентації (та подальшого друку та публікації) цього документу , первісна нормальна форма стала називатися першою нормальною формою.
Як зауважує практик, наявність ненормалізованих відносин (таблиць) вносить (майже завжди непотрібне) згортання в реалізацію RDB.
Відношення, що задовольняє 1NF, полегшує визначення обмежень та операцій з маніпулювання даними, які можуть бути реалізовані за допомогою підмовлення даних, що є менш складним, ніж необхідне для ненормалізованих відносин (таблиць), на що доктор Кодд вказує у наступних рядках:
Прийняття реляційної моделі даних, як описано вище, дозволяє розробити універсальний підязик даних на основі застосованого предикатного числення. Обчислення предикатів першого порядку достатньо, якщо збір відносин у нормальній формі. Така мова могла б забезпечити міркування мовної сили для всіх інших запропонованих мов даних, і сама була б сильним кандидатом для вбудовування (з відповідною синтаксичною модифікацією) у різні мови хостів (програмування, орієнтування на команду чи проблеми). […]
[…]
Універсальність підмовного мовлення даних полягає в його описовій здатності (а не в обчислювальній здатності).
Здивування
З моєї точки зору, здивування виникло через (a) вищезазначене перевищення інтерпретацій, пояснень тощо, близько 1NF та самої РМ, і через (b) подальших спроб переробити 1NF, що стверджує, що стосунки мають з доменами, які містять значення, які, у свою чергу, стосуються, відповідають 1NF, якщо вони є одним єдиним значенням для кожного відповідного кортежу.
Моє перейняти ваші інші точки
Між рядками не повинно бути ніяких зв’язків, окрім того, що вони відповідають однаковим заголовкам.
Я не впевнений, чи правильно я розумію намір цього твердження, але, крім відповідності тим самим заголовкам, має бути з'єднання між (кортежами) рядками відношення (таблиця), оскільки кожен з них повинен бути твердженням про особливе виникнення конкретного типу суб'єкта господарювання (визначеного в контексті бізнес-контексту), яке стосується (таблиця).
Між стовпцями також не повинно бути взаємин, але я вважаю, що це є предметом вищих нормальних форм.
Я не знаю, чи правильно я тлумачу значення цього твердження, але, власне, і відповідно до моєї відповіді на попередній аспект, між доменами (стовпцями) відносини (таблиці) також повинен бути взаємозв'язок , саме тому це співвідношення (істотна структура реляційної моделі та конкретна реалізація RDB).
Як приклад, стосовно гіпотетичного відношення (таблиця)
Salary (PersonNumber, EffectiveDate, Amount)
кортеж (ряд)
передав би сенс
The Salary payed to the Person identified by PersonNumber x, on EffectiveDate y corresponds to the Amount of z
Тому кожен кортеж (рядок) Salary
співвідношення (таблиці) повинен відповідати структурі твердження, показаному вище, і різниця буде заміною значень відповідного домену (стовпця), але має існувати залежність між (a) всі Salary
домени (стовпці), а також між (b) всі відповідні їм значення стосовно кожного кортежу (рядка); такі відносини незамінні.
Вищі нормальні форми (2NF та 3NF) корисні для позбавлення від функціональних залежностей між доменами (стовпцями) відношення (таблиця), вони допомагають уникнути небажаних зв’язків між доменами (стовпцями), оскільки зазначені небажані з'єднання дозволяють ввести аномалії оновлення . І 2NF, і 3NF корисні для перевірки надійності структури відносин (таблиць) у певній реалізації RDB.