
- •Основы бд
- •1. Основные понятия, термины.
- •2. Модели данных.
- •3. Иерархическая модель.
- •4. Сетевая модель.
- •5. Реляционная модель
- •Операции реляционной алгебры
- •Реляционное исчисление кортежей
- •Проектирование схем реляционной бд
- •1. Основные положения
- •2. Избыточность данных и аномалии обновления
- •3. Функциональная зависимость
- •4. I нормальная форма
- •5. II нормальная форма
- •7. Нормальная форма Бойса-Кодда
- •8. Обзор процесса нормализации
- •9. Многозначные зависимости
- •Методология проектирования бд
- •Основные понятия.
- •Методология концептуального проектирования.
- •Методология логического проектирования.
- •1. Основные понятия.
- •2. Методология концептуального проектирования
- •3. Методология логического проектирования
- •4. Методология физического проектирования бд
- •Пример проектирования бд
- •Пример физического проектирования бд
- •2. Управление транзакций
- •3. Обработка запросов
7. Нормальная форма Бойса-Кодда
Однако бывает необходимость введения более сильных зависимостей – НФ Бойса-Кодда (НФ БК).
НФ БК учитывает все потенциальные ключи, которые входят в отношения. Если отношение имеет единственный потенциальный ключ, то 3-я НФ и НФ БК – эквивалентны. Считается, что отношение находящееся в НФ БК, если каждый его детерминант является потенциальным ключом. Что бы убедиться, что отношение находится в НФ БК необходимо отыскать все его детерминанты и убедиться, что они являются потенциальными ключами.
Клиенты, Объекты, Владельцы удовлетворяют НФ БК.
(N_клиента, N_объекта)
(N_клиента, Нач_аренды)
(N_объекта, Нач_аренды)
Нарушение требований НФ БК происходит:
1 – если имеются два или более составных ключа;
2 – если перекрывается потенциальный ключ, т.е. если какой-то атрибут входит в несколько ключей.
Рассмотрим отношение «Собеседование».
(N_клиента, Дата_собеседования)
(N_сотрудника, Дата_собеседования, Время_собеседования)
(N_комнаты, Время_собеседования, Дата_собеседования)
f1: N_клиента, Дата_собеседования - > Время_собеседования, N_сотрудника, N_комнаты
f2: N_сотрудника, Дата_собеседования, Время_собеседования -> N_клиента
f3: N_комнаты, Дата_собеседования, Время_собеседования -> N_сотрудника, N_клиента
f4: N_сотрудника, Дата_собеседования -> N_комнаты
Исходное отношение разбивается на два отношения:
- Собеседование1
- Место собеседования
Собеседование1(N_клиента, Дата_собеседования, Время_собеседования, N_сотрудника)
Место собеседования (N_сотрудника, Дата_собеседования, N_комнаты)
8. Обзор процесса нормализации
Процесс нормализации отношения заключается в преобразовании ненормализованных отношений к требуемому уровню НФ. Рассмотрим последовательно весь процесс нормализации до НФ БК.
Результаты проверки объектов недвижимости
N_объекта |
Адрес |
Дата |
Время |
Комментарий |
N_сотрудника |
ФИО_сотредника |
N_маш |
01 |
Ленина 6-31 |
8,01,03 22,11,03 15,04,04 |
10:00 20:00 12:00 |
Требуется ремонт |
37 311 312 |
Лис Крот Кот |
03-12 07-11 21-13 |
02 |
…… |
…… |
…… |
…… |
…… |
…… |
…… |
Первый этап НФ – приведем к НФ. Для этого добавим новые строки. Определим потенциальные клюю отношения:
(N_объекта, Дата)
(N_сотрудника, Дата, Время)
(N_маш, Дата, Время)
Второй этап – приведение отношения ко 2-ой НФ. Для этого выписываются функциональные зависимости и устраняются частичные функциональные зависимости.
f1: N_объекта, Дата -> Время, Комментарий, N_сотрудника, ФИО_сотрудника, N_маш
f2: N_объекта -> Адрес
f3: N_сотрудника -> ФИО_сотрудника (транзитивная зависимость)
f4: N_сотрудника, Дата -> N_маш (частичная зависимость)
f5: N_маш, Дата, Время -> N_объекта, Адрес (для потенциальных ключей)
f6: N_сотрудника, Дата, Время -> N_объекта, Адрес, Комментарий.
Что бы привести отношение ко 2-ой НФ его необходимо будет разбить на три отношения:
Объект ( N_объекта, Адрес)
Сотрудник (N_сотрудника, ФИО_сотрудника)
Проверка (N_объекта, Дата, Время, Комментарий, N_сотрудника, N_маш)
Полученное отношение удовлетворяет не только 2-ой НФ, но и 3-ей НФ.
Третий этап – проверка принадлежности отношений к НФ БК. Отношение «Объект» и «Сотрудник» удовлетворяют НФ БК. Отношение «Проверка» не удовлетворяет НФ БК, поскольку детерминант (N_сотрудника, Дата), который не является потенциальным ключом. Потому отношение «Проверка» может страдать аномалией обновления, т.е. при изменение данных об автомобиле придется вносить изменения сразу же в нескольких отношениях. Для этого отношение «Проверка» необходимо разбить на отношения:
Сотрудник – Машина
(N_сотрудника, N_маш, Дата)
Проверка – Дата
(N_объекта, Время, Комментарий, N_сотрудника)
Четвертый этап – отношение многозначных зависимостей, которые позволяют избавиться от избыточности.