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

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.