Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 6 Нормализация (Укр).doc
Скачиваний:
13
Добавлен:
19.11.2019
Размер:
1.49 Mб
Скачать

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НФ відношення буде піддано аномаліям відновлення. Для усунення деяких з них необхідно перетворити дане відношення в другу нормальну форму.