Базы данных

Схема Customer с несколькими функциональными зависимостями


Функциональная зависимость является объявляемым ограничением на содержимое таблицы, подобно тому как объявление ключа является ограничением. Фактически ограничение ключа тоже является функциональной зависимостью. Например, в схеме Videotape атрибут videold является ключом. Как показано на 5.4, любой другой атрибут функционально зависит от videold. Определение функциональной зависимости применяется очень просто, а именно две различные строки таблицы никогда не имеют одинакового значения videold. Ключ реляционной схемы функционально определяет набор неключевых ее атрибутов.

Наложение зависимости zipcode -> {city, state} требует, чтобы каждое обновление полей city, state или zipcode проверялось на согласованность. Изменение аргументов некоторого клиента city, state или zipcode не будет разрешено, если оно не согласуется с аргументами других клиентов с тем же значением zipcode. Реализация проверки этих ограничений может оказаться очень дорогостоящей операцией. Также нетрудно заметить, что таблица Customer содержит значительную избыточность: названия города (поле city) и штата (поле state) повторяются для всех строк с определенным значением zipcode.

Определив функциональные зависимости в схеме базы данных, проектировщики и разработчики базы данных должны обеспечить механизмы предотвращения нарушений этих зависимостей. Пользователи систем с базами данных должны быть уверены в том. что всё данные в базе данных согласуются с функциональными зависимостями. Любая попытка изменения данных должна быть отклонена, если эти изменения приведут к возникновению нё? согласованного состояния. В примере с ZIP-кодом каждый новый адрес должен проверяться на согласованность с уже внесенными в таблицу адресами. Если таблица содержит строку указывающую на принадлежность ZIP-кода 32306 штату Florida, то никакая новая строка не может связать ZIP-код 32306 с каким-либо другим штатом.

Важным моментом для разработки баз данных является необходимость поиска путей уменьшения цены поддержания ограничений, налагаемых функциональной зависимостью:

Комментарии закрыты