Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МР - Лекция № 4.doc
Скачиваний:
1
Добавлен:
16.09.2019
Размер:
574.46 Кб
Скачать
    1. Основные определения

Для демонстрации основных идей раздела будет использоваться видоизмененная переменная-отношение поставок, которая в дополнение будет содержать в дополнение к обычным атрибутам S#, P# и QTY также атрибут CITY, представляющий город соответствующего поставщика. Эту переменную-отношение назовем SCP (рис. 4.1.).

SCP

S#

CITY

P#

QTY

S1

Москва

P1

100

S1

Москва

P2

100

S2

Тверь

P1

200

S2

Тверь

P2

200

S3

Тверь

P2

300

S4

Москва

P2

400

S4

Москва

P4

400

S4

Москва

P5

400

Рис. 4.1. Пример значения переменной-отношения SCP

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

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

X  Y

(читается либо как «X функционально определяет Y», либо «X стрелка Y») тогда и только тогда, когда для любого допустимого значения переменной-отношения R каждое значение множества X отношения R связано в точности с одним значением множества Y отношения R. Иначе говоря, для любого допустимого значения переменной-отношения R, если два кортежа переменной-отношения R совпадают по значению X, они также совпадают и по значению Y.

Левая и правая части функциональной зависимости (X и Y соответственно), называют детерминантом и зависимой частью соответственно.

Пример 4.1. Примером функциональной зависимости для переменной-отношения SCP является зависимость S#  CITY, поскольку в любой момент времени одному поставщику соответствует в точности один город. Следовательно, любые два кортежа переменной-отношения SCP в один и тот же момент и с одним и тем же номером поставщика должны соответствовать одному и тому же городу. Практически это утверждение можно рассматривать как ограничение целостности для переменной-отношения SCP:

CONSTRAINT S#_CITY

COUNT ( SCP {S#} ) = COUNT ( SCP {S#,CITY} );

а запись S#  CITY может рассматриваться как сокращенный способ представления этой формулировки.

Перечислим еще некоторые ФЗ для переменной-отношения SCP:

{S#,P#}  QTY

{S#,P#}  CITY

{S#,P#}  {CITY, QTY}

{S#,P#}  S#

{S#,P#}  {S#, P#, CITY, QTY}

{S#}  CITY

Следует отметить, что если X является потенциальным ключом переменной-отношения R, то все атрибуты Y переменной-отношения R должны обязательно быть функционально зависимы от X.

Если переменная-отношение R удовлетворяет функциональной зависимости A  B и A не является потенциальным ключом, то R будет характеризоваться некоторой избыточностью. Например, в переменной-отношении SCP наличие ФЗ S#  CITY приведет к тому, что сведения о месте расположения поставщика в определенном городе повторятся много раз (это хорошо видно на рис. 3.1.).

Если ограничиться всеми ФЗ, выполняющимися для некоторой переменной-отношения, то их число может быть достаточно большим (см. выше список, где представлена их часть для переменной-отношения SCP). В следующих разделах описаны методы сокращения этого множества. Это задача важна, так как мы уже отмечали, что каждая ФЗ является ограничением целостности, а, следовательно, при каждом обновлении данных в базе СУБД вынуждена будет проверять соблюдение их всех. Таким образом, желательно найти для заданного множества ФЗ S такое множество T, которое (в идеальном случае) было бы существенно меньше множества S, и при этом каждая ФЗ из множества S могла бы быть заменена ФЗ из множества T. Если найти такое множество T, то СУБД достаточно было бы контролировать выполнение ФЗ из этого множества, что автоматически подразумевало бы соблюдение всех ФЗ из множества S. Решение этой задачи представляет большой практический интерес.