Проектирование реляционных БД. Аномалии обновления (противоречивость). Методы нормализации. Функциональные зависимости

Страницы работы

Содержание работы

 Проектирование  реляционных БД.

Построение отношений из нелинейных моделей является предварительным этапом построения реляционных БД, так как при проектировании часто приходится сталкиваться с альтернативными вариантами построения  отношений. Что более предпочтительно: дробить отношения? Если да, то до какого момента?

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

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

Пусть было построено отношение

Поставщики (название поставщика, адрес поставщика, товар, цена).

Проблемы плохих БД:

1.   Избыточность. В приведенном отношении адрес поставщика будет повторяться для всех товаров, которые поставляет данный поставщик. Это может привести к большой избыточности - хранению в БД одинаковой информации.

2.   Аномалии обновления (противоречивость). Часто наблюдается как следствие первой проблемы. В частности, в указанном отношении при изменении адреса поставщика его надо изменить во всех записях, содержащих эту информацию. Это сложно, но и велика вероятность ошибки: если в какой-либо записи не изменить адрес, то получится противоречие - разные адреса у одного поставщика.

3.   Аномалии включения. Например, был заключен договор с новым поставщиком, но информацию о нем нельзя включить в БД, так как он не поставил не один товар.

4.   Аномалии удаления. Например надо удалить информацию о каком либо  товаре, но удалить можно только записи целиком, поэтому удалится информация и о поставщике этого товара. Если поставщик был включен только в эту запись, то он совсем теряется.

Помимо перечисленных проблем могут иметь место и другие. Например разделив приведенное отношение на 2:

ПА (название поставщика, адрес поставщика)

ПТЦ (название поставщика, товар, цена)

Мы избавляемся от указанных проблем, но появляются другие: например, поиск тех поставщиков, которые поставляют определенный вид             товара. Раньше это было просто (надо было найти этот товар в списке) , а теперь необходимо просматривать и весь список ПА.    

Вопрос: выгодна ли замена? Какое из отношений боле оптимально?

Ответом на эти вопросы могут служить следующие критерии, обеспечивающие рациональные варианты группировки атрибутов в отношения:

5. Выбранные для отношений ключевые атрибуты должны быть минимальными.

6. Выбранный состав отношений БД должен быть минимальным (минимальная избыточность атрибутов).

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

8. Перестройка набора отношений при введении новых типов данных должна быть минимальной.

9.  Время ответа на запрос к БД и разброс времени ответа на различные запросы должны быть небольшими.

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

Методы нормализации базируются на использовании понятий функциональной и многозначной зависимостей.

1.  Функциональные зависимости.

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

1.  Ограничения на домены. Например, рост человека лежит в определенных границах и так далее. Эти ограничения обычно задают в явном виде, например, указанием типа данных, перечислением возможных значений домена и так далее.

2.  Ограничения на отношения. Эти ограничения связаны не с конкретным значением какого либо компонента, а с тем, совпадают ли определенные элементы кортежа. Например, в отношении «сотрудник» хранится информация о законченном ВУЗе и его адресе. Приняв значение «ТулГУ» поля «ВУЗ» , поле  «адрес ВУЗа» может принять только значение «г. Тула».

Последний тип ограничения связан (определяет) функциональную зависимость. Пусть задана схема отношений R(A1,A2,...,AN), обозначим r - реализация данного отношения. Пусть X  и Y - подмножества множества  {A1,A2,...,AN} (содержат перечень некоторых атрибутов из R). X функционально определяет Y, если в любом отношении r не могут содержаться два кортежа, у которых совпадают значения по всем атрибутам, принадлежащим X, и различаются хотя бы по одному атрибуту, принадлежащему Y.

Например, не может такое наблюдаться, что значение поля «ВУЗ» - «ТулГУ» встречаются в двух кортежах и в одном ему соответствует адрес: «г. Тула», а в другом «г. Урюпинск». Это значит, что поле «ВУЗ» функционально определяет поле «адрес ВУЗа».

Приняты следующие обозначения: X à Y, «X  функционально определяет Y», «Y функционально зависит от X».

Формальное определение функциональной зависимости:

Пусть X и Y - группы атрибутов отношения R, тогда Xà Y, если в каждый момент времени для каждого набора значений атрибутов X существует только один связанный с ним набор значений атрибутов Y.

Значение атрибутов из X и Y могут  меняться со временем, но при этом должно опять выполняться условие, что уникальному значению X соответствует только одно значение Y.

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

1.  Свойство рефлективности. Если X Í Y Í U, то X à Y

2.  Свойство пополнения. Если X, Y, Z Í U и X à Y , то XUZ à YUZ,  где X à Y - зависимость, заданная на данном отношении, или полученная по правилам вывода.  

3.  Свойство транзитивности. Если X, Y, Z Í U, X à Y и Y à Z, то X à Z

4.  Свойство расширения. Если X, Y Í U и X à Y, то для любого Z Í U имеет место XUZ à Y.

Данные правила являются аксиомами. На их основе можно строить другие правила вывода.

Приведем формальное определение ключа. Пусть определено отношение, схема которого R(), на нем определено множество функциональных зависимостей F, X Í {A1,A2,...,AN } подмножество множества атрибутов. Множество атрибутов X называется ключом если выполняются следующие условия :

1.  Зависимость X à A1,A2,...,AN  принадлежит F+  , где F±  полное множество функциональных зависимостей, которые содержатся в F или могут быть получены из них правилами вывода.

2.  Ни для какого подмножества Y Í X зависимость Y à A1,A2,...,AN не принадлежит F+ .

Условие 2 определяет минимальность ключа. Так как у отношения может быть больше одного ключа, то выбранный ключ называется первичным, а остальные (не выбранные) - возможными ключами отношения.

Атрибут Ai  называется первичным, если он входит в состав первичного или возможного ключа отношения R. В противном случае атрибут называют непервичным.

1.   

Похожие материалы

Информация о работе