Нормалізація. Функціональні залежності атрибутів. Приклади. Побудова схем функціональних залежностей
Перед вивченням даної теми рекомендується ознайомитись з темою:
Зміст
- 1. Поняття функціональної залежності. Визначення. Приклади
- 2. Ступені функціональної залежності. Класифікація
- 3. Часткова залежність. Приклади
- 4. Повна функціональна залежність. Приклади
- 5. Приклади транзитивної залежності
- 6. Приклади багатозначної залежності
- 7. Задача. Побудувати схему функціональних залежностей між атрибутами відношення
- 8. Задача. Побудувати схему функціональних залежностей між атрибутами відношення
- 9. Поняття незалежних атрибутів. Приклади
- Зв’язані теми
Пошук на інших ресурсах:
1. Поняття функціональної залежності. Визначення. Приклади
Після того, як таблиця приведена до першої нормальної форми 1НФ, потрібно визначити функціональну залежність між атрибутами (полями, стовпцями) таблиці. Це необхідно для забезпечення максимально-можливої раціональності в побудові таблиць бази даних.
Функціональна залежність – це зв’язок, що може виникнути між сутностями, що зберігаються в базі даних. Якщо сутність A функціонально визначає сутність B, то таку залежність прийнято позначати наступним чином:
A→B
тут
- A – детермінант відношення;
- B – залежна частина.
Приклад 1. Нехай дано відношення, яке визначає посадові оклади працівників деякого підприємства.
У вищенаведеній таблиці оклад працівника визначається посадою, яку він займає. Якщо працівник переходить на іншу посаду, то змінюється і його оклад. Отже, атрибут Посада функціонально визначає атрибут Оклад. У символічній формі така залежність позначається наступним чином
Посада → Оклад
тут Посада – детермінант, Оклад – залежна частина.
Приклад 2. Демонструється залежність атрибуту від складеного (композитного) ключа. На рисунку 1 зображена таблиця випуску різних моделей автомобілів у різні роки.
Ключем відношення є атрибути Марка–Модель–Рік випуску. Атрибут “Кількість випущених моделей” залежить від ключа.
Рисунок 1. Функціональна залежність атрибуту “Кількість випущених моделей” від ключа
⇑
2. Ступені функціональної залежності. Класифікація
Розрізняють наступні ступені функціональної залежності між атрибутами:
- часткова залежність. Ця залежність може виникати у випадках, коли таблиця містить складений ключ. Складений ключ – це ключ таблиці, який складається з декількох атрибутів. Якщо ключ складаєтсья з одного атрибуту, то цей ключ є простим. При частковій залежності один атрибут таблиці є залежний від частини ключа, тобто від окремого атрибуту, що входить в ключ відношення;
- повна залежність. Це випадок, коли між атрибутами існує залежність один від одного;
- транзитивна залежність. Це залежність, коли два атрибути зв’язані між собою через третій атрибут. Цей третій атрибут виступає посередником;
- багатозначна залежність. Це випадок, коли одному значенню одного атрибуту відповідає декілька значень іншого атрибуту.
⇑
3. Часткова залежність. Приклади
Приклад 1. Нехай задана наступна таблиця.
Нехай у цій таблиці первинним ключем вибрано комбінацію атрибутів Номер працівника – Посада. Цей ключ є складеним. Між складеним ключем Номер працівника – Посада та атрибутом Оклад існує функціональна залежність. Це пояснюється тим, що оклад працівника залежить від займаної посади. Символічно таку залежність можна позначити так: Посада → Оклад.
Оскільки, атрибут Оклад залежить тільки від частини ключа (атрибуту Посада) а не від усього ключа (Номер працівника – Посада), то ця функціональна залежність є частковою.
Висновок: окремий атрибут Оклад залежить від визначеної частини складеного ключа, яким є пара атрибутів Номер працівника – Посада.
Рисунок 2 схематично відображає часткову залежність.
Рисунок 2. Часткова залежність атрибуту Оклад від ключа відношення
Приклад 2. Нехай задано таблицю обліку прочитаних занять у навчальному закладі.
Для забезпечення унікальності, ключем відношення вибрано атрибути “Номер аудиторії” – “Номер заняття” – “Дата” – “Викладач”. Оскільки, за викладачем закріплено конкретну дисципліну, то атрибут Дисципліна є залежний від атрибуту Викладач. Це означає, що атрибут дисципліна залежний від частини ключа відношення, тому що атрибут Викладач є частиною ключа відношення. На рисунку 3 показано цю залежність.
Рисунок 3. Часткова залежність атрибуту Дисципліна від ключа відношення
⇑
4. Повна функціональна залежність. Приклади
Повна функціональна залежність між двома атрибутами – це випадок, коли між двома атрибутами A та B є пряма (A→B) і зворотна (B→A) залежність. При повній функціональній залежності одному значенню атрибуту A відповідає тільки одне значення атрибуту B. І, навпаки, одному значенню атрибуту B відповідає значення атрибуту A.
Повна функціональна залежність між двома атрибутами A та B позначається
A ↔ B
Приклад 1. Нехай задано базу даних обліку навчального процесу, яка містить атрибути
- Рік – навчальний рік;
- Курс – курс навчання, на якому навчається деякий студент (група).
Фрагмент таблиці бази даних наступний
Між цими атрибутами існує повна залежність. Це означає, що за навчальним роком можна визначити курс, на якому навчається студент. І, навпаки, за курсом навчання можна визначити навчальний рік (за умови, що студент успішно здав усі сесії і не має заборгованості з дисципліни “Організація баз даних і знань” :)).
На схемі залежностей такий зв’язок позначається наступним чином
Рисунок 4. Повна залежність між атрибутами Рік та Курс
Приклад 2. Зв’язок між ідентифікаційним номером та ім’ям громадянина. За іменем громадянина можна визначити ідентифікаційний номер. І, навпаки, за ідентифікаційним номером можна визначити ім’я громадянина.
⇑
5. Приклади транзитивної залежності
Приклад 1. Задано базу даних, що містить інформацію про хід навчального процесу в навчальному закладі.
У відношенні (таблиці) використовуються атрибути (поля), що мають транзитивну залежність.
Між атрибутами Викладач та Група існує транзитивна залежність (рисунок 5).
Рисунок 5. Транзитивна залежність між атрибутами Викладач та Група
Міркування. За кожним викладачем закріплена дисципліна. Тобто атрибут Дисципліна функціонально залежний від атрибуту Викладач. Згідно з навчальним планом, кожна група має перелік дисциплін, які вона повинна вивчити. На основі дисципліни можна визначити групу (або декілька груп), в яких ця дисципліна викладається. Наприклад, дисципліни комп’ютерного циклу (Бази даних) будуть вивчати групи комп’ютерних спеціальностей. Тому, між дисципліною та групою також є функціональна залежність.
Оскільки, за кожною дисципліною закріплений конкретний викладач, то між атрибутами Викладач та Група існує транзитивна залежність (Викладач викладає дисципліну в деякій групі).
Приклад 2. Нехай задано таблицю нарахувань стипендії для студентів деякої групи. Студенти можуть навчатись на держзамовленні (бюджет) або за контрактом.
Від студента залежить вид договору на навчання: бюджет чи контракт. Тому виникає функціональна залежність між атрибутами Студент та Вид договору (рисунок 6).
Рисунок 6. Функціональна залежність між атрибутами Студент та Вид договору
Вид договору впливає на розмір стипендії. Якщо студент навчається за контрактом, то стипендія не нараховується. За розміром стипендії не можна визначити вид договору, оскільки студент може навчатись на бюджеті і не отримувати стипендію у зв’язку з поганою успішністю. Тому, між атрибутами Вид договору та Стипендія існує наступна функціональна залежність (рисунок 7).
Рисунок 7. Функціональна залежність між атрибутами Вид договору та Стипендія
Отже, між атрибутами Студент та Стипендія існує транзитивна залежність (рисунок 8).
Рисунок 8. Транзитивна залежність між атрибутами Студент та Стипендія
⇑
6. Приклади багатозначної залежності
Приклад 1. У навчальному закладі викладач може викладати не одну а декілька споріднених дисциплін.
Між атрибутами Викладач та Дисципліна існує багатозначна залежність, тому що одному значенню атрибуту Викладач відповідає декілька значень атрибуту Дисципліна. У даному прикладі приймається домовленість що одну дисципліну не може викладати декілька викладачів.
Приклад 2. Задано таблицю вартості нових автомобілів.
Мід атрибутами Марка та Модель існує багатозначна залежність. Це пояснюється тим, що для однієї марки (Renault) може існувати декілька значень моделей (Logan, Megane, Koleos).
⇑
7. Задача. Побудувати схему функціональних залежностей між атрибутами відношення
Умова задачі. Задано таблицю бази даних “Облік товарів в автомагазині”, яка приведена до першої нормальної форми 1НФ. Таблиця визначає товари, що поступають на склад і має наступну структуру
Потрібно побудувати схему залежностей між атрибутами.
Розв’язок. Схема залежностей між атрибутами таблиці обліку поступлених товарів на складі зображена на рисунку 9.
Рисунок 9. Схема залежностей між атрибутами
⇑
8. Задача. Побудувати схему функціональних залежностей між атрибутами відношення
Задано таблицю бази даних магазину, яка відображає облік автозапчастин (товарів). Структура таблиці наступна
Атрибути Код, Товар, Група, Номер та Дата визначають ключ відношення. Оскільки, товар з тим самим кодом може бути отриманий декілька разів (у різні дати та в різні номери замовлень), то вибір ключа за одним атрибутом Код є недоцільним.
Послідовність міркувань при побудові схеми функціональних залежностей наступна.
Товар поступає в магазин на основі замовлення для якого фіксується номер та дата. Кожен поступлений товар ідентифікується кодом та назвою поступлення. Отже, маємо залежність атрибутів Код, Товар від атрибутів Номер, Дата.
Товари групуються в групи (категорії). Наприклад, для магазину автозапчастин такими категоріями товарів можуть бути Шини, Акумулятори, Трансміссія тощо. Отже, виникає функціональна залежність Група→Назва.
Отриманий товар поступає в певній кількості та має вартість. Отже, атрибути Кількість та Вартість функціонально залежні від замовленого товару (пари атрибутів Код-Товар).
З врахуванням викладених міркувань, схема функціональних залежностей зображена на рисунку 10.
Рисунок 10. Схема функціональних залежностей. Облік автозапчастин у магазині
⇑
9. Поняття незалежних атрибутів. Приклади
Між окремими атрибутами бази даних можуть бути відсутні будь-які функціональні залежності. Такі атрибути називаються незалежними один від одного.
Приклад. Задано таблицю з даними про викладача.
У вищенаведеній таблиці немає функціональної залежності між наступними атрибутами:
- Стаж та Дисципліна. Позначається як Стаж ¬= Дисципліна;
- Адреса – Дисципліна. Позначається як Адреса ¬= Дисципліна;
- Стаж – Адреса. Позначається Стаж ¬= Адреса.
⇑
Зв’язані теми
- Нормалізація. Поняття та необхідність застосування. Аномалії модифікації. Приклади
- Перша нормальна форма (1НФ). Приведення таблиць до першої нормальної форми. Приклади
⇑