Проектування баз даних
33


зміну не лише в кортежі бази, а цілий ряд змін, що може розглядатись як аномалія, оскільки характер самої зміни повинен стосуватися лише одного

певного запису БД.

2. Аномалія поповнення. Приймаючи на роботу нового співробітника, необхідно вносити в БД відомості не лише про нього, а й про керівника та тип контракту. Це також можна розглядати як аномалію, тому що не завж­ди можливо в БД внести відомості про відділ і контракт, оскільки часто співробітників беруть на роботу з випробувальним терміном і лише після його проходження підписують певний вид контракту та визначають відділ, де він працюватиме.

3. Аномалія вилучення. Припустимо, що звільнились усі працівники певного відділу, тоді разом з інформацією про них у БД буде втрачено та­кож інформацію про цей відділ. Якщо ж інформацію про відділ необхідно зберігати якийсь час, то це також може розглядатись як аномалія.

4. Надлишковість. Відомості про керівника відділу та про тип контра­кту повторюються в ряді кортежів БД Основні проблеми зі зберіганням на­длишку інформації пов'язані не лише з неефективним використанням пам'яті, а й із забезпеченням підтримки узгодженості цих даних

Узагальнюючи, слід зазначити, що семантика функціональних залеж­ностей між атрибутами відношення зумовлює сторонні ефекти, що виника­ють при розширенні та внесенні певних змін до БД. Усунення цих аномалій досягається декомпозицією та зведенням відношення до нормалізованого вигляду.

4.3. ТЕОРІЯ НОРМАЛІЗАЦІЇ ВІДНОШЕНЬ

Нормалізація відношень — це ітераційний зворотний процес декомпозиції початкового відношення на кілька простіших відношень меншої розмірності. Під зворотністю процесу розуміють те, що операція об'єд­нання відношень, отриманих в результаті декомпозиції, має дати початкове відношення, тобто при виконанні декомпозиції повинна виконуватись умо­ва об'єднання без втрат інформації.

Отриманий в результаті нормалізації склад атрибутів відношень БД повинен відповідати таким вимогам: між атрибутами не має бути небажаних функціональних залежностей, групування атрибутів має забезпечувати мінімальне дублювання даних, їх обробку й поновлення без ускладнень і аномалій.

Водночас отримані в результаті декомпозиції відношення не повинні втратити функціональних залежностей початкового відношення, бо це мо­же призвести до спотворення семантики даного відношення.

Апарат нормалізації також розробив Е.Ф. Кодд. Кожна нормальна фо­рма обмежує тип допустимих залежностей між атрибутами. Кодд виділив три нормальні форми (скорочена назва — 1НФ, 2НФ і ЗНФ). Найбільш до­сконала з них — ЗНФ. Зараз вже відомі й визначені 4НФ, ЗНФ.

Нормалізацію відношень виконують за кілька кроків. Перша ітерація (перший крок) — зведення відношень до першої нормальної форми (1НФ). Відношення в 1НФ мають відповідати таким вимогам:

усі атрибути відношення мають бути унікальними, тобто не допуска­ється їх дублювання, а також атомарними, тобто неподільними;

усі рядки таблиці повинні мати однакову структуру, тобто одну й ту са­му кількість атрибутів з іменами, що збігаються;

імена стовпців мають бути різними, а значення однорідними (однакового формату);

порядок рядків у таблиці не суттєвий.

Розглянемо приклад зведення відношення до 1НФ: МАТЕРІАЛ (код матеріалу, назва матеріалу, одиниця вимірювання, характеристика: тип. сорт, розмір).

У цьому відношенні атрибут «Характеристика» е неатомарним, тому потрібно позбутися складового атрибута й перетворити його в три атомар­них атрибути. В результаті зведення до 1 НФ відношення набере вигляду

МАТЕРІАЛ (код матеріалу, назва матеріалу, одиниця вимірювання, тип, сорт, розмір).

Кожне відношення БД уміщує як структурну, так і семантичну інформацію. Структурна інформація задається схемою відношення, а се­мантична виражає функціональні зв'язки між атрибутами. На другому кроці нормалізації виявляють ключі відношення і будують діаграму функціональних залежностей неключових атрибутів від ключів, аналізують ці залежності з метою вилучення неповних функціональних залежностей.   Уведемо   поняття   функціональної   й   неповної функціональних залежностей.

Означення 1. Атрибут В залежить від А у відношенні R тоді, коли в кожний момент часу одному й тому самому значенню А відповідає не більше як одне значення В.

Графічно функціональна залежність відображується так:

А —>В. Цій залежності відповідає співвідношення 1:1 між атрибутами (наприклад, як між атрибутами код деталі —> наз­ва деталі, код верстата —> назва верстата).

Коли відношення має складові ключі, то залежність нек­лючових атрибутів від такого ключа може бути повною або частковою. Якщо маємо відношення R(A*, В*, С, D), ключ якого складається з двох атрибутів А і В, тобто є складовим (знаком (*) позначено ключові атрибути), то функціональні залежності в такому відношенні можуть мати такий вигляд:

Атрибут С перебуває в повній функціональній залежності, тобто але­жить від всього складового ключа, а атрибут D — в неповній, оскільки за­лежить лише від його складової частини атрибута В.

Означення 2. Атрибут перебуває в повній функціональній залежності, якщо він залежить від всього ключа і не залежить від його складових час­тин.