- •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.9. Огляд процесу нормалізації (від 1 нф до нфбк)
Основна мета цього розділу - представити короткий огляд усього процесу нормалізації, що був докладно описаний у попередніх розділах. Як ілюстрацію скористаємося ще одним прикладом з навчального проекту DreamHome, що дозволить нам ще раз уважно вивчити весь процес перетворення ненормалізованих даних, аж до приведення їхній до нормальної форми Бойса - Кодда.
Приклад 6.7. Нормалізація від першої нормальної форми до нормальної форми Бойса - Кодда (НФБК)
Компанія DreamHome виконує операції з об'єктами нерухомості з доручення їхніх власників. Як частина цієї діяльності, передбачаються регулярні перевірки стану об'єктів нерухомості, виконувані співробітниками компанії. Для проведення таких перевірок у призначений день співробітнику компанії надається автомобіль. Причому протягом дня один автомобіль може надаватися декільком співробітникам. Співробітник може провести кілька перевірок в один день, однак будь-який об'єкт нерухомості протягом дня може перевірятися тільки один раз. На мал. 6.7 показаний приклад сторінки звіту "Property Inspection Report" з навчального проекту DreamHome, що містить зведення про виконані перевірки стану об'єктів нерухомості. У даному випадку звіт містить зведення про перевірки об'єкта нерухомості під номером 'PG4'. (Відзначимо, що приведений на мал.6.7 варіант звіту є спрощеною версією звіту "Property Inspection Report" з навчального проекту. DreamHome, описаного в розділі 1.7.)
Перша нормальна форма (1 нф)
С початку ми перетворимо у формат таблиці з рядками і стовпцями деякі дані, обрані з двох звітів про перевірку об'єктів нерухомості під номерами 'PG4' і 'PG16'. Отриманій ненормалізованій таблиці привласнимо ім'я Property_Inspection - її вміст представлений у табл. 6.20. Як ключ для цієї ненормалізованої таблиці виберемо атрибут Property_No.
У цій ненормалізованій таблиці легко можна знайти повторювану групу зі зведеннями про перевірку об'єкта нерухомості і співробітниках, що їх проводили. Структура повторюваної групи виглядає так, як показано нижче. (Повторювана група (IDate, ITime, Comments, Staff_No, SName, Car_Reg)
У результаті цього на перетинанні рядка і стовпця можна знайти відразу кілька значень. Наприклад, для одного значення атрибута Property_No ('PG4') приводяться відразу три значення атрибута IDate (18-Oct-96, '22-Apr-97', 'l-Oct-98'). Необхідно перетворити ненормалізовану таблицю в першу нормальну форму, для чого скористаємося першим підходом, описаним у розділі 6.5. Відповідно до цього підходу усунення повторюваних груп (зведення про перевірку об'єкта нерухомості і співробітниках) буде здійснюватися за допомогою введення в кожен рядок необхідних зведень про об'єкти нерухомості (неповторювані дані). У результаті цих дій буде отримана перша нормальна форма відносини Property Inspection, представлена в табл. 6.21
Відношення Property_Inspection має три потенційних ключі: (Property_No, IDate), (Staff_No, IDate, ITime) і (Car_Req, IDate, ITime). Як первинний ключ цього відношення обрана комбінація атрибутів (Property_No, IDate). Для більшої ясності розмістимо поруч атрибути, що утворять первинний ключ, причому з лівої сторони відносини. Відношення Ргорегtу_Inspection визначається в такий спосіб:
Property_Inspection (Property_No, IDate, ITime, PAddress, Comments, Staff_No, SName, Car_Reg)
Відношення Property_Inspection знаходиться в першій нормальній формі, оскільки на перетинанні кожного рядка і кожного стовпця знаходиться тільки одне значення. Це відношення містить дані про перевірку об'єктів нерухомості, причому зведення про об'єкт нерухомості і співробітниках повторюються в них по декілька раз. У результаті відношення Property_Inspectibn характеризується значною надмірністю даних. Крім того, при використанні на практиці це 1НФ відношення буде піддано аномаліям відновлення. Для усунення деяких з них необхідно перетворити дане відношення в другу нормальну форму.