зміну не лише в кортежі бази, а цілий ряд змін, що може розглядатись як аномалія, оскільки характер самої зміни повинен стосуватися лише одного
певного запису БД.
2. Аномалія поповнення. Приймаючи на роботу нового співробітника, необхідно вносити в БД відомості не лише про нього, а й про керівника та тип контракту. Це також можна розглядати як аномалію, тому що не завжди можливо в БД внести відомості про відділ і контракт, оскільки часто співробітників беруть на роботу з випробувальним терміном і лише після його проходження підписують певний вид контракту та визначають відділ, де він працюватиме.
3. Аномалія вилучення. Припустимо, що звільнились усі працівники певного відділу, тоді разом з інформацією про них у БД буде втрачено також інформацію про цей відділ. Якщо ж інформацію про відділ необхідно зберігати якийсь час, то це також може розглядатись як аномалія.
4. Надлишковість. Відомості про керівника відділу та про тип контракту повторюються в ряді кортежів БД Основні проблеми зі зберіганням надлишку інформації пов'язані не лише з неефективним використанням пам'яті, а й із забезпеченням підтримки узгодженості цих даних
Узагальнюючи, слід зазначити, що семантика функціональних залежностей між атрибутами відношення зумовлює сторонні ефекти, що виникають при розширенні та внесенні певних змін до БД. Усунення цих аномалій досягається декомпозицією та зведенням відношення до нормалізованого вигляду.
4.3. ТЕОРІЯ НОРМАЛІЗАЦІЇ ВІДНОШЕНЬ
Нормалізація відношень — це ітераційний зворотний процес декомпозиції початкового відношення на кілька простіших відношень меншої розмірності. Під зворотністю процесу розуміють те, що операція об'єднання відношень, отриманих в результаті декомпозиції, має дати початкове відношення, тобто при виконанні декомпозиції повинна виконуватись умова об'єднання без втрат інформації.
Отриманий в результаті нормалізації склад атрибутів відношень БД повинен відповідати таким вимогам: між атрибутами не має бути небажаних функціональних залежностей, групування атрибутів має забезпечувати мінімальне дублювання даних, їх обробку й поновлення без ускладнень і аномалій.
Водночас отримані в результаті декомпозиції відношення не повинні втратити функціональних залежностей початкового відношення, бо це може призвести до спотворення семантики даного відношення.
Апарат нормалізації також розробив Е.Ф. Кодд. Кожна нормальна форма обмежує тип допустимих залежностей між атрибутами. Кодд виділив три нормальні форми (скорочена назва — 1НФ, 2НФ і ЗНФ). Найбільш досконала з них — ЗНФ. Зараз вже відомі й визначені 4НФ, ЗНФ.
Нормалізацію відношень виконують за кілька кроків. Перша ітерація (перший крок) — зведення відношень до першої нормальної форми (1НФ). Відношення в 1НФ мають відповідати таким вимогам:
усі атрибути відношення мають бути унікальними, тобто не допускається їх дублювання, а також атомарними, тобто неподільними;
усі рядки таблиці повинні мати однакову структуру, тобто одну й ту саму кількість атрибутів з іменами, що збігаються;
імена стовпців мають бути різними, а значення однорідними (однакового формату);
порядок рядків у таблиці не суттєвий.
Розглянемо приклад зведення відношення до 1НФ: МАТЕРІАЛ (код матеріалу, назва матеріалу, одиниця вимірювання, характеристика: тип. сорт, розмір).
У цьому відношенні атрибут «Характеристика» е неатомарним, тому потрібно позбутися складового атрибута й перетворити його в три атомарних атрибути. В результаті зведення до 1 НФ відношення набере вигляду
МАТЕРІАЛ (код матеріалу, назва матеріалу, одиниця вимірювання, тип, сорт, розмір).
Кожне відношення БД уміщує як структурну, так і семантичну інформацію. Структурна інформація задається схемою відношення, а семантична виражає функціональні зв'язки між атрибутами. На другому кроці нормалізації виявляють ключі відношення і будують діаграму функціональних залежностей неключових атрибутів від ключів, аналізують ці залежності з метою вилучення неповних функціональних залежностей. Уведемо поняття функціональної й неповної функціональних залежностей.
Означення 1. Атрибут В залежить від А у відношенні R тоді, коли в кожний момент часу одному й тому самому значенню А відповідає не більше як одне значення В.
Графічно функціональна залежність відображується так:
А —>В. Цій залежності відповідає співвідношення 1:1 між атрибутами (наприклад, як між атрибутами код деталі —> назва деталі, код верстата —> назва верстата).
Коли відношення має складові ключі, то залежність неключових атрибутів від такого ключа може бути повною або частковою. Якщо маємо відношення R(A*, В*, С, D), ключ якого складається з двох атрибутів А і В, тобто є складовим (знаком (*) позначено ключові атрибути), то функціональні залежності в такому відношенні можуть мати такий вигляд:
Атрибут С перебуває в повній функціональній залежності, тобто алежить від всього складового ключа, а атрибут D — в неповній, оскільки залежить лише від його складової частини атрибута В.
Означення 2. Атрибут перебуває в повній функціональній залежності, якщо він залежить від всього ключа і не залежить від його складових частин.