Окончательная диаграмма функциональных зависимостей:
Пример проектирования методом декомпозиции БД интернет-магазин.
Уточнив вопрос о том какую информацию следует хранить в базе данных, определим все атрибуты, представляющие интерес для проектируемой базы данных. Это: для каждого товара его код, название, цена, процентная скидка; ФИО, адрес, телефон каждого клиента; для каждого заказа его код, сумма, дата выполнения и количество товара для каждого заказанного названия.
Применим для всех атрибутов краткие обозначения:
Название товара – НТ
Цена товара – ЦТ
Процентная скидка на товар – ПСТ
Код клиента – КК
ФИО клиента – ФИО
Адрес клиента – АК
Телефон клиента – ТК
Код заказа – КЗ
Сумма заказа – СЗ
Дата выполнения заказа – ДВЗ
Количество товара для каждого заказанного названия – КТЗ.
Универсальное отношение будет иметь вид: r (НТ, ЦТ, ПСТ, КК, ФИО, АК, ТК, КЗ, СЗ, ДВЗ, КТЗ).
Определив все функциональные зависимости, имеющиеся между атрибутами универсального отношения, построим диаграмму функциональных зависимостей (см. рис. 1.1).
Рис. 1.1. Диаграмма функциональных зависимостей.
Удалим из исходного набора функциональных зависимостей все избыточные:
– КЗ → КК и КК → ТК, т. е. КЗ → ТК также можно удалить по аксиоме транзитивности.
– КК → ФИО и КК → АК по аксиоме аддитивности заменим на КК → ФИО, АК.
– ФИО, АК → КК и КК → ТК, т. е. ФИО, АК → ТК является избыточной зависимостью по аксиоме транзитивности и ее можно удалить.
– КЗ → КК и КК → ФИО, АК, т. е. КЗ → ФИО, АК также можно удалить по аксиоме транзитивности.
– НТ → ЦТ, НТ → ПСТ, НТ → НС по аксиоме аддитивности заменим на НТ → ЦТ, ПСТ.
– КЗ → СЗ, КЗ → ДВЗ, КЗ → КК по аксиоме аддитивности заменим на КЗ → СЗ, ДВЗ, КК.
– КК → ФИО, АК и КК → ТК по аксиоме аддитивности заменим на КК → ФИО, АК, ТК.
Окончательно диаграмма функциональных зависимостей примет вид, показанный на рис. 1.2.
Рис. 1.2. Окончательный вид диаграммы функциональных зависимостей.
Выполним преобразование исходного отношения в набор НФБК – отношений:
1)
r1 (НТ, ЦТ, ПСТ, КК, ФИО, АК, ТК, КЗ, СЗ, ДВЗ, КТЗ).
Отношение r1 не находится в НФБК (есть зависимости от частей ключа (НТ → ЦТ, ПСТ); детерминанты НТ, КЗ, КК, (ФИО, АК) не являются возможными ключами) и поэтому разбивается далее.
2) Для проведения проекции по правилу цепочки выберем F-зависимость НТ → ЦТ, ПСТ. Получим следующие отношения: