Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Вопрос 2 Функциональные зависимости. Нормализация отношений

Эффективное функционирование БД может быть обеспечено только в том случае, если при ее организации, определяемом моделью данных, выполнены определенные требования. С учетом многолетнего опыта эксплуатации большого количества СУБД, построенных с использованием различных концептуальных моделей, к таким требованиям в настоящее время относятся:

  1. обеспечение целостности данных при их обновлении, при этом под целостностью данных понимается сохранность информации на диске в правильных форматах, непротиворечивость данных и их корректность, т.е. соответствие реальной ситуации в объектах предметной области;

  2. простота операций по обновлению данных;

  3. приемлемый объем занимаемой оперативной памяти и высокая скорость доступа к данным на диске;

  4. наличие эффективных средств восстановления БД при сбоях в работе ЭВМ;

  5. независимость данных от программы, в которой они используются;

  6. обеспечение простых в использовании и эффективных способов защиты данных от несанкционированного доступа и др.

Рациональная организация БД обеспечивается с помощью нормализации отношений, при этом основным здесь является понятие функциональной зависимости атрибутов.

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

При составном ключе, состоящем из нескольких полей, атрибут может зависеть от части ключа, т.е. будет иметь место частичная функциональная зависимость. Если атрибут зависит только от ключа в целом, то говорят о полной функциональной зависимости.

Под нормализацией отношений, обычно производимой на этапе проектирования БД, понимается процесс пошаговой декомпозиции (разложения) исходных отношений на более простые с целью устранения нежелательных функциональных зависимостей атрибутов и, следовательно, устранения избыточности данных.

Рассмотрим пример нормализации отношений.

Пусть на начальном этапе проектирования БД построено отношение С (Поставщик, Товар, Объем поставки, Цена, Город, Адрес, Телефон, Факс), в котором в качестве ключа выбран составной ключ «Поставщик+Товар» (естественно, что в общем случае кортеж может содержать другой состав атрибутов).

В рассматриваемом отношении имеет место частичная функциональная зависимость атрибутов поставщика «Город, Адрес, Телефон, Факс» от части «Поставщик» составного ключа, что приведет к дублированию данных, если поставщик обеспечивает поставку нескольких товаров (эти данные будут содержать все кортежи для данного поставщика). Здесь налицо проблема устранения избыточности данных. В самом деле, если возникнет необходимость изменения какого-либо атрибута, то эту операцию придется выполнять во всех кортежах для данного поставщика.

Построим новое отношение D, из которого исключим все частично зависимые атрибуты: D (Поставщик, Товар, Объем поставки, Цена).

Далее построим отношение Е, включающее в себя часть ключа и атрибуты, зависящие от этой части: Е (Поставщик, Город, Адрес, Телефон, Факс).

Ясно, что использование при построении БД вместо отношения С отношений D и Е позволит устранить избыточность данных.

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