- •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.6. Друга нормальна форма (2нф)
Друга нормальна форма (2НФ) заснована на понятті повної функціональної залежності, що описується нижче.
6.6.1. Повна функціональна залежність
Повна функціональна залежність У деякім відношенні атрибут У називається цілком функціонально залежним від атрибута А, якщо атрибут У функціонально залежить від повного значення атрибута А и не залежить ні від якої підмножини повного значення атрибута А.
Функціональна залежність А --> У є повною функціональною залежністю, якщо видалення якого-небудь атрибута з А приводить до втрати цієї залежності. Частковою функціональною залежністю називається така залежність А -> У, якщо в А є деякий атрибут, при видаленні якого ця залежність зберігається.
Наприклад, розглянемо наступну функціональну залежність:
Staff_No, SName -> Branch_No
Тут кожна пара значень (Staff_No, SName) зв'язана з єдиним значенням Branch_No. Однак ця функціональна залежність не є повної, оскільки Branch_No також функціонально залежить від підмножини (Staff_No, SName), тобто від атрибута Staff_No. Інші приклади повної і частковий функціональної залежностей описуються в наступних розділах.
6.6.2. Визначення другої нормальної форми
Друга нормальна форма застосовується до відносин зі складеними ключами, тобто до таких відносин, первинний ключ яких складається з двох чи більше атрибутів. Справа в тім, що відношення з первинним ключем на основі єдиного атрибута завжди знаходиться, принаймні, у 2НФ. Відношення, що не знаходиться в 2НФ, може страждати від аномалій відновлення, що розглядалися в розділі 6.2. Наприклад, припустимо, що необхідно змінити орендну плату для об'єкта нерухомості з номером 'PG4'. Для цього буде потрібно обновити двох рядків відносини Customer_Rental. Якщо значення орендної плати буде обновлено тільки в одному рядку, то в результаті база даних буде приведена в суперечливий стан.
Друга нормальна форма (2НФ) - відношення, що знаходиться в першій нормальній формі і кожен атрибут якого, що не входить до складу первинного ключа, характеризується повною функціональною залежністю від цього первинного ключа.
Нормалізація 1НФ - відношень з утворенням 2НФ - відношень включає усунення часткових залежностей, що демонструється на прикладі відносини Customer_Removal, представленого в табл. 6.5. Якщо у відношенні між атрибутами існує часткова залежність, то функціонально-залежні атрибути віддаляються з нього і містяться в нове відношення разом з копією їхнього детермінанта.
Приклад 6.4. Друга нормальна форма (2нф)
На мал. 6.5 показані функціональні залежності (від fdl до fd6 ) для відношення Customer_Rental з парою атрибутів (Customer_Nо, Property_No) як первинний ключ. Відношення Customer_Rental володіє наступними функціональними залежностями:
fd1 Customer_No, Property_No --> RentStart, RentFinish Первинний ключ
fd2 Customer_No --> Cname Часткова залежність
fd3 Property_No -->PAddress, Rent, Owner_No, OName Часткова залежність fd4 Owner_No --> OName Транзитна залежність
fd5 Customer_Ho, RentStarf -> Property_No, PAddress, Rent Потенційний ключ
Finish, Rent, Owner_No,OName
f d6 Property_No, RentStart -> Customer_No, CName, RentFinish Потенційний ключ
Рис. 6.5. Функціональні залежності відносини Property_Rental
Після виявлення функціональних залежностей процес нормалізації відносини Customer_Rental продовжується перевіркою його приналежності до другої нормальної форми. Для цього потрібно знайти хоча б один випадок часткової залежності від первинного ключа. Неважко помітити, що атрибут імені клієнта CName частково залежить від первинного ключа, інакше кажучи, він залежить тільки від атрибута Customer_No (ця залежність представлена вище як fd2). Крім того, атрибути об'єкта нерухомості (PAddress, Rent, Owner_No, ОNаме) також частково залежать від первинного ключа, але цього разу тільки від атрибута Property_No (ця залежність представлена вище як fd3). У свою чергу, атрибути орендованих об'єктів нерухомості (RentStarf і RentFinish) цілком функціонально залежать від первинного ключа в цілому, тобто від атрибутів Custoner_No і Property_No (ця залежність представлена вище як fd1).
Зверніть увагу на те, що на мал. 6.5 показане наявність транзитивної залежності (transitive dependence) від первинного ключа (ця залежність представлена вище як fd4). Хоча транзитивна залежність також може послужити причиною аномалій відновлення, проте її присутність у відношенні не порушує обмежень для 2НФ. Такі залежності будуть усунуті при переході до ЗНФ.
Виявлення часткових залежностей усередині відношення Customer Rental позначає, що дане відношення не знаходиться в другій нормальній формі. Для перетворення відносини CustonerRental у 2НФ необхідно створити нові відносини, причому так, щоб атрибути, що не входять у первинний ключ, були переміщені в них разом з копією частини первинного ключа, від якої вони функціонально залежать. Застосування цього правила в нашому випадку приведе до створення трьох нових відносин - Customer, Rental і Property_0wner, що представлені в табл. 6.8, 6.9 і 6.10 відповідно. .Тепер цих три відносини знаходяться в другій нормальній формі, оскільки кожен атрибут, що не входить в.первинний ключ, цілком функціонально залежить від первинного ключа відносини. Ці відносини мають наступний вид:
Customer: (Customer_No, CName)
R ental (Customer_No, Property_No, RentStart, RentFinish).
Property_0wner (Property_No, PAddress, Rent, Owner_No, OName)