- •6.1. Мета нормалізації Нормалізація - метод створення набору відносин із заданими властивостями на основі вимог до даних, встановленим у деякій організації.
- •6.2. Надмірність даних і аномалії відновлення
- •6.2.1. Аномалії вставки
- •6.2.2. Аномалій видалення
- •6.2.3. Аномалії відновлення
- •Властивості з'єднання без втрат і збереження залежності
- •6.3. Функціональні залежності Функціональна залежність (functional dependency) описує зв'язок між атрибутами і є одним з основних понять нормалізації.
- •6.3.1. Визначення функціональної залежності
- •Детермінант. Детермінантом функціональної залежності називається чи атрибут група атрибутів, розташована на діаграмі функціональної залежності ліворуч від символу стрілки.
- •Приклад 6.1. Функціональні залежності
- •Приклад 6.2. Функціональні залежності відносини Staff_Branch
- •6.4. Процес нормалізації
- •6.5. Перша нормальна форма (1 нф)
- •Приклад 6.3. Перша нормальна форма (1нф)
- •6.6. Друга нормальна форма (2нф)
- •6.6.2. Визначення другої нормальної форми
- •Приклад 6.4. Друга нормальна форма (2нф)
- •6.7. Третя нормальна форма (знф)
- •6.7.1. Транзитивна залежність
- •Приклад 6.5. Третя нормальна форма (3нф)
- •6.8. Нормальна форма Бойса - Кодда (нфбк)
- •6.8.1. Визначення нормальної форми Бойса - Кодда
- •Нормальна форма Бойса – Кодда (нфбк) Відношення знаходиться в нфбк тоді і тільки тоді, коли кожен його детермінант є потенційним ключем.
- •Приклад 6.6. Нормальна форма Бойса-Кодда (нфбк)
- •6.9. Огляд процесу нормалізації (від 1 нф до нфбк)
- •Перша нормальна форма (1 нф)
- •Друга нормальна форма (2нф)
- •Третя нормальна форма (знф)
- •Нормальна форма Бойса - Кодда (нфбк)
- •6.10. Четверта нормальна форма (4нф)
- •6.10.1. Багатозначна залежність
- •6.10.2. Визначення четвертої нормальної форми Четверта нормальна форма (4нф) Відношення в нормальній формі Бойса-Кодда, що не містить нетривіальних багатозначних залежностей.
- •6.11. П'ята нормальна форма (5нф)
- •6.11.2. Визначення п'ятої нормальної форми (5нф) п'ята нормальна форма (5нф) Відношення без залежностей з'єднання.
- •Питання
6.5. Перша нормальна форма (1 нф)
Перед обговоренням першої нормальної форми доцільно попередньо, дати визначення того стану, що передує їй.
Ненормалізована форма (ННФ) - таблиця, що містить одну чи кілька повторюваних груп даних.
Перша нормальна форма (1НФ) - відношення, у якому на перетинанні кожного рядка і кожного стовпця міститься тільки одне значення.
У цій главі процес нормалізації починається з перетворення даних з формату джерела (наприклад, з формату стандартної форми введення даних) у формат таблиці з рядками і стовпцями. На вихідному етапі таблиця знаходиться в ненормалізованій формі (ННФ) і часто називається ненормалізованою таблицею. Для перетворення ненормалізованої таблиці в першу нормальну форму (1НФ) у вихідній таблиці варто знайти й усунути всі повторювані групи даних. Повторюваною групою називається група, що складається з одного і більш атрибутів таблиці, у якій можливе наявність декількох значень для єдиного значення ключового атрибута таблиці. Зверніть увагу на те, що в даному контексті термін "ключ" так само відноситься і до одного атрибута, і до групи атрибутів, що єдиним образом ідентифікують кожен рядок ненормалізованої таблиці. Існує два підходи виключення повторюваних груп з ненормалізованих таблиць.
У першому підході повторювані групи усуваються шляхом уведення відповідних даних у порожні стовпці рядків з повторюваними даними. Інакше кажучи, порожні місця при цьому заповнюються дублікатами неповторюваних даних. Цей підхід часто називають "вирівнюванням" ("flattening") таблиці. Отримана в результаті цих дій таблиця, що тепер буде називатися відношенням, містить атомарні (чи єдині) значення на перетинанні кожного рядка з кожним стовпцем, а тому знаходиться в першій нормальній формі. У результаті такого підходу в отримане відношення вноситься деяка надмірність даних, що у ході подальшої нормалізації буде усунута.
В другому підході один чи атрибут група атрибутів призначаються ключем ненормалізованої таблиці, а потім повторювані групи вилучаються і містяться в окремі відносини разом з копіями ключа вихідної таблиці. Далі в нових відносинах установлюються первинні ключі. Іноді Ненормалізовані відносини можуть містити одну чи, кілька повторюваних груп усередині повторюваних груп першого порядку. У таких випадках даний прийом застосовується доти, поки повторюваних груп зовсім не залишиться. Отриманий набір відносин буде, знаходитися в першій нормальній формі тільки тоді, коли в жодному з них не буде повторюваних груп атрибутів.
Хоча обоє цих підходу однаково коректні, слід зазначити, що при використанні другого підходу отримані відносини знаходяться як мінімум у 1НФ і мають меншу надмірність даних. При виборі першого підходу вирівняне 1НФ - відношення декомпозується в ході подальшої нормалізації на ті ж відносини, що могли б бути отримані за допомогою другого підходу. У цьому розділі використання обох цих підходів демонструється на прикладі навчального проекту DreamHome.
Приклад 6.3. Перша нормальна форма (1нф)
П
оказана
на мал. 6.4 форма "Customer Rental Details" з
навчального проекту DreamHome містить
зведення про об'єкти нерухомості,
орендованих клієнтом по імені 'John Kay'.
Для спрощення цього приклада припустимо,
що клієнт орендує деякий об'єкт тільки
один раз і не може орендувати одночасно
відразу кілька об'єктів. Дані про об'єкти,
орендованих двома клієнтами, 'John Кау' і
'Aline Stewart' перетворяться з форми "Customer
Rental Details" у таблицю з рядками і
стовпцями, формат якої представлений
у табл. 6.4. Ця вихідна таблиця даних являє
приклад ненормалізованої таблиці (ННФ).
Я
к
ключовий атрибут ненормалізованої
таблиці Customer Rental (Клієнти-орендарі)
виберемо атрибут Customer_No (Номер клієнта).
Далі знайдемо в ній групи зведень про
об'єкти, що можуть повторюватися в різних
клієнтів. Структура повторюваної групи
має наступний вид:
Повторювана група = (Property_No, Paddress, RentStart, RentFinish, Rent, Owner_No, OName)
Через наявність цієї повторюваної групи на перетинанні деяких рядків И стовпців таблиці знаходиться відразу кілька значень. Наприклад, два значення, PG4 і PG16, номера об'єкта (атрибут Property_No) присутні в рядку клієнта John Kay. Щоб перетворити ненормалізовану таблицю в першу нормальну форму необхідно домогтися того, щоб на перетинанні кожного рядка і кожного стовпця знаходилося єдине значення. Ця мета досягається шляхом усунення повторюваних груп.
П
ри
використанні першого підходу, що
повторюється група (зведення про об'єкт
нерухомості) усувається за допомогою
введення в кожен рядок з описом об'єкта
нерухомості відповідних зведень про
клієнта. Отримане в результаті цих дій
відношення Customer_Rental, що знаходиться в
першій нормальній формі, представлене
в табл. 6.5. Потенційні ключі цього
відношення є складеними і включають
наступні групи атрибутів: (Customer_No,
Property_No), (Customer_No, RentStart), (Property_No, RentStart). Як
первинний ключ цього відношення виберемо
групу (Customer_No, Property Але) і для більшої
ясності розмістимо атрибути даного
первинного ключа поруч, з лівої сторони
відносини. (У нашому прикладі передбачається,
що атрибут RentFinish не може бути використаний
в якості компонента потенційного ключа.)
Відношення Customer_Rental визначається в такий спосіб:
Customer Rental (Customer_No, Property_No CName, PAdress, RentStart, RentFinish, Rent., Owner No, OName)
Відношення Customer_Rental знаходиться в першій нормальній формі, оскільки на перетинанні кожного рядка і кожного стовпця мається єдине значення. Це відношення містить дані про клієнтів, орендованих об'єктах нерухомості і їхніх власників, що кілька разів повторюються. Таким чином, відношення Customer_Rental характеризується значною надмірністю даних. При фізичній реалізації це 1НФ - відношення буде піддано аномаліям відновлення, описаним у розділі 6.2. Щоб уникнути цього дане відношення потрібно перетворити в другу нормальну форму, як описується в наступному розділі. При використанні другого підходу Повторювана група (зведення про орендовані об'єкти нерухомості) віддаляється з даного відношення і міститься в інше відношення разом з копією вихідного ключового атрибута (Customer_No), як показано в табл. 6.7. (Залишок вихідного відношення представлений у табл. 6.6.) Потім для нового відношення вибирається власний первинний ключ. Формат двох знову створених 1НФ - відношень буде наступним:
Custoner (Customer_No. CName)
Prop Rental Owner (Customer_No, Property_No, PAddress, RentStart, RentFinish, Rent, Owner No, OName)
Таблиця 6.6. Альтернативне представлення першої нормальної форми (1НФ) - відношення Customer
Custome_No CName
CR76 John Kay
CR56 Aline Stewart
Обоє відносини - і Customer, і Prop_Rental_Owner - знаходяться в першій нормальній формі, оскільки на перетинанні кожного рядка і кожного стовпця знаходиться єдине значення. Відношення Customer містить дані 6 клієнтах, носіння Prop_Rental_Owner - про орендовані об'єкти нерухомості і їхніх власників. Однак, як видно з табл. 6.7, останнє відношення також має деяку надмірність даних, а тому може постраждати від аномалій відновлення, описаних у розділі 6.3
Для
демонстрації подальшого процесу
нормалізації відносин з переходом від
1НФ до 2НФ буде використовуватися тільки
відношення Customer Rental, представлене в
табл. 6.5. Однак випливає ще раз нагадати,
що обоє приведених підходу коректні і
в остаточному підсумку - при продовженні:
процесу нормалізації аж до НФБК -
п
риведуть
до створення однакових відносин. Читачу
пропонується самостійно виконати
подальшу нормалізацію відносин Customer і
Prop_Rental_Owner.
