- •Практична робота № 10 Метод нормальних форм
- •Вихідні відношення
- •Завдання 1. Сформуйте вихідне відношення бази даних, у якій буде зберігатися наступна інформація:
- •Будинок
- •Будинок
- •Нормалізація відношень
- •Завдання 2. Виконати приведення відношення, сформованого при виконанні попереднього завдання, до 3нф.
Нормалізація відношень
Наступним кроком проектування є нормалізація відношень. Нормалізація відношень – це поступовий процес розкладання початкових відношень БД на інші, менші і простіші відношення.
Відношення реляційної бази даних містять як структурну, так і семантичну (описову) інформацію. Структурна інформація задається схемою відношення, а семантична виражається функціональними зв’язками між атрибутами, що відомі та враховуються в схемі. Склад атрибутів відношень бази даних повинен задовольняти двом основним вимогам:
-
між атрибутами не повинно бути небажаних функціональних залежностей;
-
групування атрибутів повинне забезпечувати мінімальне дублювання даних, забезпечувати їх обробку й оновлення.
В залежності від того, наскільки відношення задовольняють цим вимогам, прийнято виділяти наступну послідовність нормальних форм:
-
перша нормальна форма (1НФ);
-
друга нормальна форма (2НФ);
-
третя нормальна форма (3НФ);
-
нормальна форма Бойса-Кодда (БКНФ);
-
четверта нормальна форма (4НФ);
-
п’ята нормальна форма (5НФ);
Основні властивості нормальних форм:
-
кожна наступна нормальна форма в деякому розумінні краще попередньої;
-
при переході від попередньої до наступної нормальної форми властивості попередніх нормальних форм зберігаються.
Відношення знаходиться в 1НФ, якщо всі його атрибути є простими (мають єдине значення). Оскільки вимога першої нормальної форми є базовою вимогою класичної реляційної моделі даних, то вихідний набір відношень уже відповідає цій вимозі. Іншими словами, кожна таблиця в реляційній БД задовольняє умові, відповідно до якої в позиції на перетині кожного рядка і стовпця таблиці завжди знаходиться єдине атомарне значення, і ніколи не може бути множини таких значень. Тобто, ненормалізовані таблиці (таблиці, що містять повторювані групи), навіть не допускаються в реляційній БД. Отже будь-яке вихідне відношення знаходиться в першій нормальній формі.
Переведення відношення у наступну нормальну форму здійснюється методом "декомпозиції без втрат", яка повинна забезпечувати однаковий результат при виконанні запиту до вихідного відношення та до відношень отриманих у результаті декомпозиції. Основною операцією методу нормальних форм є операція проекції. Припустимо, що у відношенні R(A, B, C, D, E, …) видалення функціональної залежності CD дозволить перевести її в наступну нормальну форму. Для вирішення цього завдання виконують декомпозицію відношення R на два нових відношення R1(A, B, C, E, …) і R2(C, D). Відношення R2 є проекцією відношення R на атрибути C і D.
Відношення знаходиться в 2НФ, якщо воно знаходиться в 1НФ і кожен його неключовий атрибут функціонально повно залежить від первинного ключа. Перехід до 2НФ дозволяє позбутися явної надлишковості даних. Для переведення відношення в 2НФ необхідно, використовуючи операцію проекції, розкласти його на декілька відношень наступним чином:
-
побудувати проекцію без атрибутів, що знаходяться в частковій функціональній залежності від первинного ключа;
-
побудувати проекції на частини первинного ключа й атрибути, що залежать від цих частин.
Відношення знаходиться в 3НФ, якщо воно знаходиться в 2НФ і кожен його неключовий атрибут нетранзитивно залежить від первинного ключа. Тобто, відношення знаходиться в 3НФ, якщо всі неключові атрибути відношення взаємно незалежні та повністю залежать від первинного ключа. Транзитивні залежності викликають надлишкове дублювання інформації у відношенні. Для переведення відношення в 3НФ необхідно ліквідувати транзитивні залежності використовуючи операцію проекції на атрибути, що є причиною транзитивних залежностей. При цьому отримують кілька відношень, кожне з яких знаходиться в 3НФ.
Відношення знаходиться в нормальній формі Бойса-Кодда (НФБК), якщо воно знаходиться в 3НФ і в ньому відсутні залежності ключів від неключових атрибутів, тобто якщо будь-який атрибут, від якого функціонально залежить деякий інший атрибут є ключем. Перехід до БКНФ здійснюється шляхом ліквідації функціональної залежності частини складеного ключа від неключового атрибута. При цьому вихідне відношення розкладається на два відношення, які знаходяться у БКНФ і з’єднання яких за визначеним атрибутом дасть вихідне відношення.
Звичайно в теорії реляційних баз даних відомі й інші, більш досконалі нормальні форми – 4НФ і 5НФ. Однак на практиці вони практично не використовуються, тому що можуть призвести до виникнення протиріч у БД. Цей недолік проявляється не завжди і при вирішенні деяких завдань 4НФ і 5НФ є незамінними.
На практиці побудова схем відношень, які знаходяться в 3НФ, у більшості випадків є достатньою і приведенням до них процес проектування реляційної БД завершується. Але якщо у відношенні є залежність атрибутів складеного ключа від неключових атрибутів, то переходять до підсиленої 3НФ, яку називають нормальною формою Бойса-Кодда.
Таким чином, процес нормалізації відношень послідовно видаляє з вихідного (початкового) відношення наступні функціональні залежності:
-
часткові залежності неключових атрибутів від ключа;
-
транзитивні залежності неключових атрибутів від ключа;
-
залежності ключів від неключових атрибутів;
-
незалежні багатозначні залежності.
В результаті нормалізації виробляється деякий набір схем відношень, які володіють кращими властивостями. Остаточна мета нормалізації – одержання такого проекту бази даних, у якому кожен факт з’являється лише в одному місці, тобто виключена надлишковість інформації. Це робиться не стільки з метою економії пам’яті, оскільки для виключення можливої суперечливості збережених даних.