Методы проектирования логических моделей реляционных баз данных. Декомпозиция и синтез отношений
Пример преобразования ER-диаграмм в отношения базы данных
Продемонстрируем применение метода декомпозиции (без потерь при естественном соединении) для создания логической модели и базы данных для поддержки деятельности небольшой консультационной фирмы. Фирма производит консалтинг и обучение своих постоянных клиентов; данные о клиентах, сохраняемые в базе данных, будут использоваться консультантами фирмы для проведения семинаров, практических занятий и консультаций.
Первый шаг проектирования базы данных заключается в выявлении всех сущностей предметной области, их атрибутов и связей между атрибутами сущностей. Анализ сведений о предметной области данного примера позволяет определить следующие атрибуты универсального отношения и сделать заключение о наличии функциональных зависимостей (ФЗ) между ними:
- Каждый клиент имеет свой регистрационный номер (далее - номер). Все номера у клиентов уникальны и различны. Номер однозначно определяет Фамилию, но не наоборот.
- Каждый клиент располагается по определенному адресу, по которому могут находиться несколько клиентов.
- Предположим, что только один телефон связан с данным адресом.
- Каждому клиенту может быть приписан телефон.
- Для каждого клиента определяется рейтинг (активность, частота обращений и т.д.) за период по конкретной теме. Рейтинг клиента однозначно определяется по его номеру.
- Консультации носят тематический характер. Каждая тема имеет свой идентификатор.
- Период представляет собой отрезок времени, в течение которого проводилась тематическая консультация. Для определенности назовем этот период семестром.
Полученное универсальное отношение назовем КОНСУЛЬТАНТ.
Перечислим ФЗ предметной области базы данных:
Рассмотрим детерминанты и возможные ключи отношения КОНСУЛЬТАНТ.
Возможные ключи | Детерминанты |
{Номер, Тема, Семестр} | {Номер, Тема, Семестр} |
{Номер} | |
{Телефон} | |
{Адрес} |
Согласно критерию Кодда, поскольку не каждый детерминант в отношении есть возможный ключ, то отношение не находится в НФБК. Выполним декомпозицию отношения КОНСУЛЬТАНТ R0 (Номер, Тема, Семестр, Фамилия, Адрес, Телефон, Рейтинг). Кандидатами на выполнение проекции являются следующие ФЗ:
Внимание! На практике существует неединственность представления отношений базы данных, обусловленная выбором ФЗ при разбиении отношений. Выбор ФЗ для выполнения проекции отношения - очень важный шаг в проектировании логической модели реляционной базы данных. Выбор альтернативных ФЗ для выполнения проекции может привести к различным базам данных!
Выберем ФЗ тогда получим два отношения R1 (Номер, Тема, Семестр, Фамилия, Адрес, Рейтинг) и R2 (Адрес, Телефон). Первая итерация декомпозиции отношений представлена на рис. 7.3.
Проверим, находится ли отношение R2 в НФБК.
Отношение R2 находится в НФБК.
Проверим, находится ли отношение R1 в НФБК.
Отношение R1 не находится в НФБД, необходимо продолжить его декомпозицию. Выберем ФЗ и выполним разбиение R1 на R3(Номер, Тема, Семестр, Рейтинг) и R4 (Номер, Фамилия, Адрес). Вторая итерация декомпозиции отношений представлена на рис. 7.4.
Проверим, находится ли отношение R3 в НФБК.
Отношение R3 находится в НФБК.
Проверим, находится ли отношение R4 в НФБК.
Отношение R4 находится в НФБК. Декомпозиция закончена.
Заметим, что если бы изначально в нашем примере в качестве ФЗ для выполнения проекции была выбрана ФЗ то в результате мы имели бы совсем другой (!) набор отношений.