logo
Методичка_БД_курсова повна

7.4 Проектування нормалізованих відношень

Під час розробки бази даних на основі універсальних відношень потрібно мати справу з великою надлишковістю даних. Крім того, може виникнути ряд проблем, що називаються аномаліями вставки, видалення та відновлення.

Визначимо різницю між дублюванням даних та надлишковим дублюванням даних. Для цього розглянемо приклад відношень наведений у таблиці 4.

Таблиця 4 – Приклад відношень з ненадлишковим дублюванням даних

Табельний номер робітника

Прізвище начальника

125

Бойко

138

Луцюк

195

Бойко

200

Луцюк

Прізвища начальників з'являються в таблиці 5 неодноразово (дублюються), проте зони не є надлишковими, оскільки видалення будь-якого прізвища з відношення приведе до загублення інформації.

Розглянемо тепер приклад відношення наведений в таблиці 5.

Таблиця 5 – Приклад відношень з надлишковим дублюванням даних

Табельний номер робітника

Прізвище робітника

Телефон начальника

125

Бойко

33333

138

Луцюк

22222

195

Бойко

33333

200

Луцюк

22222

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

- по-перше, при цьому знадобляться додаткові зусилля для визначення "реальних" значень нулів.

- по-друге, якщо у кортежі робітника з табельним номером 125 замінити значення телефону Бойко нулем, то при звільнені співробітника з табельним номером 200 виникне загублена інформації про номер телефону Бойко. Тому в таких випадках виконують заміну одного відношення двома. У нашому прикладі відношення таблиці 6 буде замінено відношенням таблиці 5 та таблиці 7.

Таблиця 6 – Приклад додаткового відношення, що використовується для видалення надлишкового дублювання даних.

Прізвище начальника

Телефон начальника

Бойко

33333

Луцюк

22222

Пояснимо тепер поняття аномалії вставки, видалення та відновлення. Аномалія вставка: полягає в тому, що якщо, наприклад, хоча б один з постачальників виробляє потрібну деталь, але не постачає її підприємству, у базу даних прийдеться включити кортеж з нульовим значенням атрибутів. Тобто, відсутня можливість включення в базу даних потенційних постачальників.

Аномалія відновлення обумовлена двома факторами:

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

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

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

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

Найбільш розповсюдженою формою нотації функціональних залежностей є така:

А => В

Функціональні залежності визначають, виходячи з базових властивостей самих атрибутів. При цьому не можна обмежуватися звичайним переглядом атрибутів, що мають одне і те ж значення більш ніж в одному кортежі, оскільки функціональні залежності відображають семантичні (смислові), а не синтактичні (структурні) зв'язки між атрибутами.

Виключення появи аномалій досягається шляхом видалення з відношення небажаних функціональних залежностей, в ході якого здійснюється декомпозиція відношень на ряд інших відношень, що є проекціями вихідного. Таке видалення небажаних функціональних залежностей називається НОРМАЛІЗАЦІЄЮ - покроковим оборотним процесом заміни даного відношення (або даної сукупності відношень) іншою сукупністю відношень, в якій відношення мають більш просту і регулярну структуру. Апарат нормалізації відношень був розроблений Коддом, котрий виділив три нормальних форми подання відношень.

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

Відношення називається зведеним до першої нормальної форми (1НФ), якщо всі його атрибути прості.

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

Відношення знаходиться в другій нормальні формі (2НФ), якщо воно знаходиться в 1НФ і кожний неключовий атрибут функціонально повно залежить від складеного ключа, а не від його частин. В нашій базі даних всі відношення крім Щомісячна оплата не містять складених ключів. Але у відношені Щомісячна оплата (сума, дата, час) атрибут Сума функціонально повно залежить від складеного ключа. Тобто, можна зробити висновок, що всі відношення даної бази даних знаходяться в 2НФ.

Відношення знаходиться в третій нормальні формі (3НФ), якщо воно знаходиться в 2НФ і кожен неключовий атрибут нетранзитивно залежить від початкового ключа. Визначимо понятя транзитивності функціональної залежності. Нехай Х, Y та Z - три атрибути деякого відношення. При цьому має місце Х  Y та Y  Z, але обернена відповідність відсутня, тобто Z -/-> Y або Y -/-> X. Тоді говорять, що Z транзитивно залежить від X. У відношеннях бази даних “Контроль оплати по кредитах” не існує транзитивних залежностей, тому можна зробити висновок, що всі відношення знаходяться в 3НФ.

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

4. В тих випадках, коли у відношенні відсутні багатозначні залежності, але є два (або більше) можливих ключів, ЗНФ може мати аномалії операцій.

Розглянемо відношення PROJECT (<Det, Proj>, Post), що описує використання в проектах (Proj) деталей (Det), які поставляються постачальниками (Post). У проекті використовується декілька деталей, але кожна постачається тільки одним постачальником. Кожен постачальник обслуговує тільки один проект, але кожен проект може обслуговуватися декількома постачальниками. В цьому випадку мають місце такі функціональні залежності :

<Det, Proj|> => Post та Post => Proj.

Таким чином, не дивлячись на те, що відношення PROJECT знаходиться в ЗНФ, факт поставки постачальником деталі не можна за­вести в базу даних поки в проекті не почнуть їх використовувати. Якщо останній з типів деталей, що постачається для проекту постачальником, використаний, то будуть видалені і дані про постачальника. Якщо змінюється постачальник деякого типу деталей, необхідно ви­конувати повний перегляд цих деталей.

У таких випадках використовують "посилену" третю нормальну форму, котру називають також нормальною формою Бойса-Кодда (НФБК).

Атрибут (або комбінацію атрибутів), від якого будь-який інший атрибут залежить функціонально повно, називають детермінантним. Виходячи з того можна дати таке означення посиленої третьої нормальної форми: нормалізована схема відношення знаходиться в НФБК, якщо кожен детермінант є можливим ключем.

5. Існують також четверта та п'ята нормальні форми, обумовлені наявністю у відношенні багатозначних функціональних залежностей. Проте на практиці в більшості випадків обмежуються отриманням відношення в НФБК.