- •39 Інформаційні системи та субд Історія розвитку
- •Основні функції сучасної субд
- •Моделі даних
- •Ранні підходи до організації бд
- •Принципи концептуального проектування
- •Базові поняття моделі «Сутність-зв'язок»
- •Реляційна модель даних Базові поняття реляційної моделі даних
- •Властивості відношень
- •Реляційна модель даних: три складові
- •Проектування рбд за допомогою концепції функціональних залежностей Поняття функціональної залежності
- •Друга і третя нф. Алгоритм декомпозиції
- •Нормальна форма Бойса-Кодда
- •Багатозначні залежності. Четверта нормальна форма
- •Надлишкові фз. Мінімальне покриття
- •Перетворення концептуальної моделі в реляційну
- •1:*, Кп багатозв'язкової суті є необов'язковим.
- •Перетворення відношень супертип - підтип
- •Приклад проектування рбд на основі концептуальної моделі
- •Лабораторний практикум по проектуванню рбд Лабораторна робота №1
- •Лабораторна робота №2
- •Лабораторна робота № 3
- •Контрольні завдання по проектуванню рбд
Нормальна форма Бойса-Кодда
В області реляційних БД Коддом доведено твердження про те, що більшість аномалій в БД будуть усунені в разі належної декомпозиції кожного відношення в нормальну форму Бойса - Кодда (НФБК).
DEF. Відношення знаходиться в НФБК тоді і лише тоді, коли воно знаходиться в 3НФ, і кожен його детермінант є так само і можливим первинним ключем.
Відношення ВИКЛАДАЧ_ПРЕДМЕТ не знаходиться в НФБК. Для доказу порівняємо можливі ключі і детермінанти (таблиця. 3).
Проте РБД ВИКЛАДАЧ_ПРЕДМЕТ, що складається з шести відношень, знаходиться в НФБК, оскільки кожне її відношення знаходиться в НФБК (див. таблиці. 4).
Таблиця 3
Можливі ключі |
Детермінанти |
<Назва предмету, Особистий номер> |
<Назва предмету> |
|
<Посада> |
|
<Кафедра> |
|
<Особистий номер> |
|
<Телефон> |
Таблиця 4
Відношення |
Можливі ключі |
Детермінанти |
ПРЕДМЕТ |
<Назва предмету> |
<Назва предмету> |
ТАРИФНА_СІТКА |
<Посада> |
<Посада> |
ТЕЛ_ДОВ1 |
<Кафедра> |
<Кафедра> |
ВИКЛАДАЧ |
<Особистий номер> |
<Особистий номер> |
ТЕЛ_ДОВ2 |
<Телефон> |
<Телефон> |
НАВАНТАЖЕННЯ |
<Назва предмету, Особистий номер> |
<Назва предмету, Особистий номер> |
Може здатися, що будь-яке відношення, що знаходиться в 3НФ знаходиться і в НФБК. Проте це не так. Приклади слід шукати у відношеннях з декількома можливими первинними ключами.
Розглянемо процес здачі студентом сесії. Структура відношення, що відображує це явище, може мати вигляд:
УСПІШНІСТЬ = <№Зал.Кн., ID_студента, Дисципліна, Дата, Оцінка>
Під ID_студента розуміється деякий номер, який привласнений студентові під час вступу, наприклад, в деканаті (залікова книжка може бути загублена, видана нова з іншим номером, а ID не міняється протягом всього періоду навчання).
Структура ФЗ в цьому випадку зображена на рис. 8.
Множина ВПК: {<№Зал.Кн.>, < ID_студента >}
У відношенні успішність немає ні функціонально неповних, ні транзитивних залежностей. Дійсно, взаємно-однозначна ФЗ №Зал.Кн. ID _Студента не може бути ідентифікована як неповна, оскільки не є залежністю між неключовими атрибутами.
Рис. 8
Таким чином, відношення УСПІШНІСТЬ знаходиться в 3НФ. В той же час воно не знаходиться в НФБК, оскільки безліч ВПК і Детермінантів не збігається (таблиця. 5).
Таблиця 5
Можливі ключі |
Детермінанти |
<№Зал.Кн., Дисципліна, Дата> |
<№Зал.Кн., Дисципліна, Дата> |
<ID_студента, Дисципліна, Дата> |
<ID_студента, Дисципліна, Дата> |
|
<ID_студента> |
|
<№Зал.Кн.> |
Щоб привести відношення УСПІШНІСТЬ до НФБК слід розділити його два одним з наступних способів:
СТУДЕНТ1 = <№Зал.Кн., ID_студента >
УСПІШНІСТЬ = <№Зал.Кн., Дисципліна, Дата, Оцінка>
або
СТУДЕНТ2 = <ID_студента, №Зал.Кн.>
УСПІШНІСТЬ = <ID_студента, Дисципліна, Дата, Оцінка>
З точки зору теорії нормалізації ці схеми рівнозначні, тому слід робити остаточний вибір з додаткових міркувань, наприклад, якщо при втраті залікових книжок їх відновлюють під іншим номером, то переважно друга схема.
Відзначимо, що у будь-якому випадку ми відмовилися від одного з напрямів взаємно-однозначної відповідності, інакше нам було б потрібно обидва відношення СТУДЕНТ1 і СТУДЕНТ2.