- •1. Критерії якості логічних моделей бд
- •2. Універсальне відношення як основа реляційного представлення даних
- •3. Проектування реляційних бд із застосуванням нормалізації. Поняття нормальної форми
- •4. Функціональні залежності
- •5. Різновиди нормальних форм. Перша нормальна форма
- •6. Друга нормальна форма. Приведення моделі бд до другої нормальної форми.
- •7. Третя нормальна форма. Приведення моделі бд до третьої нормальної форми
- •8. Алгоритм нормалізації (приведення до 3нф)
- •9. Переваги та недоліки різних ступенів нормалізації
- •10. Коректність процедури нормалізації. Теорема Хеза
8. Алгоритм нормалізації (приведення до 3нф)
Отже, алгоритм нормалізації (тобто алгоритм приведення відношень до 3НФ) описується в такий спосіб.
Крок 1 (Приведення до 1НФ). На першому кроці задається одне чи кілька відношень, що відображують поняття предметної області. За моделлю предметної області (не за зовнішнім виглядом отриманих відношень!) виписуються виявлені функціональні залежності. Усі відношення автоматично знаходяться в 1НФ.
Крок 2 (Приведення до 2НФ). Якщо в деяких відношеннях виявлена залежність атрибутів від частини складеного ключа, то проводимо декомпозицію цих відносин на кілька відносин у такий спосіб: ті атрибути, що залежать від частини складеного ключа виносяться в окреме відношення разом з цією частиною ключа. У вихідному відношенні залишаються всі ключові атрибути:
Вихідне відношення: R (K1, K2, A1, …, An, B1, …, Bm)...
Ключ: {K1, K2}- складений.
Функціональні залежності:
{K1, K2}®{A1,…,An,B1,…,Bm}-залежність всіх атрибутів від ключа відношення.
{K1}®{A1,…,An}-залежність деяких атрибутів від частини складеного ключа.
Декомпновані відношення:
R1 (K1, K2, B1, …, Bm) - залишок від вихідного відношення. Ключ {K1, K2}.
R2 (K1, A1, …, An) - атрибути, винесені з вихідного відношення разом з частиною складеного ключа. Ключ K1.
Крок 3 (Приведення до 3НФ). Якщо в деяких відношеннях виявлена залежність деяких неключових атрибутів інших неключових атрибутів, то проводимо декомпозицію цих відношень у такий спосіб: ті неключові атрибути, що залежать від інших неключових атрибутів виносяться в окреме відношення. У новому відношенні ключем стає детермінант функціональної залежності:
Вихідне відношення:
R (K1, K2, A1, …, An, B1, …, Bm).
Ключ: K.
Функціональні залежності:
{K} ® {A1, …, An, B1, …, Bm}- залежність всіх атрибутів від ключа відношення.
{A1, …, An}® {B1, …, Bm}...
- залежність деяких неключових атрибутів від інших неключових атрибутів.
Декомпоновані відношення:
R1 (K, A1, …, An) - залишок від вихідного відношення. Ключ K.
R2 (A1, …, An, B1, …, Bm) - атрибути, винесені з вихідного відношення разом з детермінантом функціональної залежності. Ключ {A1, …, An}...
Зауваження. На практиці, при створенні логічної моделі даних, як правило, не слідують прямо наведеному алгоритму нормалізації. Досвідчені розробники звичайно відразу будують відношення в 3НФ. Крім того, основним засобом розробки логічних моделей даних є різні варіанти ER-діаграм. Особливість цих діаграм у тім, що вони відразу дозволяють створювати відношення в 3НФ. Проте, наведений алгоритм важливий по двох причинах. По-перше, цей алгоритм показує, які проблеми виникають при розробці слабко нормалізованих відносин. По-друге, як правило, модель предметної області ніколи не буває правильно розроблена з першого кроку. Експерти предметної області можуть забути про що-небудь згадати, розробник може неправильно зрозуміти експерта, під час розробки можуть змінитися правила, прийняті в предметній області, і т.д. Усе це може призвести до появи нових залежностей, що бути відсутні в початковій моделі предметної області. Отут саме і необхідно використовувати алгоритм нормалізації хоча б для того, щоб переконатися, що відношення залишилися в 3НФ і логічна модель не погіршилася.
На практиці третя нормальна форма схем відношень достатня в більшості випадків, і приведенням до третьої нормальної форми процес проектування реляційної бази даних звичайно закінчується.
При відсутності багатозначної залежності, але наявності інших залежностей атрибутів, крім залежності від ключа, 3NF не гарантує відсутності аномалій операцій включення, відновлення і видалення. У цьому випадку застосовують посилену 3NF Бойса-Кодда (BCNF).
