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

 

 
R1 +(1) +(1) +(1) +(1) +(1)                         +(1)        
R2 +(11) +(11) +(11) +(11) +(11) +(9) +(12) +(12) +(14) +(12) +(13)           +(12) +(9)     +(1) +(1)
R3 +(2) +(2) +(2) +(2) +(2) +(1) +(3) +(3) +(5) +(3) +(4)           +(3) +(1)     +(1) +(10)
R4           +(1) +(1) +(1) +(5) +(1) +(4)           +(1)          
R5           +(1) +(3) +(3) +(5) +(3) +(1)           +(3)          
R6                 +(1)               +(1)          
R7                           +(1) +(1) +(1)     +(1)      
R8           +(1) +(3) +(3) +(5) +(3) +(4) +(1) +(8) +(6) +(6) +(6) +(3)   +(1) +(1)    
R9           +(7) +(12) +(12) +(14) +(12) +(13) +(7) +(1) +(15) +(15) +(15) +(12)   +(7) +(1)    

 

Шаг 1: Строится таблица, из 9 строк и 22 столбцов. На пересечении i-ой строки и j-го столбца ставится «+(k)», где k – номер шага, если атрибут с соответствующим номером принадлежит заданному отношению. Ключевые атрибуты отношений выделены «фоном».

Шаг 2: Просматриваем список функциональных зависимостей.

Рассмотрим зависимость 18→1, а также и все остальные с определяющим атрибутом 18 (18→2, 3, 4, 5). В строке, соответствующей R3, также присутствует атрибут 18. Поэтому мы доставляем в этой строке «2» в те колонки, которые соответствуют атрибутам из определяемой части зависимостей.

Шаг 3: Рассматриваем зависимости 6→7, 8, 10, 17

Шаг 4: Рассматриваем зависимости 6→11

Шаг 5: Рассматриваем зависимости 17→9

Шаг 6: Рассматриваем зависимости 19→14, 15, 16

Шаг 7: Рассматриваем зависимости 20→6, 12, 19

Шаг 8: Рассматриваем зависимости 20→13

Шаг 9: Рассматриваем зависимости 21→6,18

Шаг 10: Рассматриваем зависимости 21→22

Шаг 11: Рассматриваем зависимости 18→1, 2, 3, 4, 5

Шаг 12: Рассматриваем зависимости 6→7, 8, 10, 17

Шаг 13: Рассматриваем зависимости 6→11

Шаг 14: Рассматриваем зависимости 17→9

Шаг 15: Рассматриваем зависимости 19→14, 15, 16

Шаг 16: Рассматриваем зависимости 20→6, 12, 19

Шаг 17: Рассматриваем зависимости 20→13

Шаг 18: Рассматриваем зависимости 21→6,18

Шаг 19: Рассматриваем зависимости 21→22

Уже на 16-м шаге не происходит каких-либо изменений. В тоже время строка, состоящая из ‘+’, не была получена, а это значит, что свойство соединения без потерь информации не выполнено.

 

Составим обобщенный ключ: «Идентификатор фильма», «Идентификатор распределения», «Идентификатор носителя», «Идентификатор типа носителя», «Идентификатор клиента», «Идентификатор выдачи» (18, 21, 6, 19, 20). Из обобщенного ключа удалим те атрибуты, которые функционально выводятся из остающихся, и получим следующее отношение: «Идентификатор распределения» и «Идентификатор выдачи».

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

Чтобы решить проблему многозначной зависимости, вернем в обобщенный ключ атрибут «Идентификатор носителя». Тогда в явном виде имеется многозначная зависимость: «Идентификатор носителя» →→ «Идентификатор выдачи» («Идентификатор распределения»).

Чтобы избавиться от многозначной зависимости, по правилу декомпозиции, обобщенный ключ разбивается на отношения: («Идентификатор носителя», «Идентификатор выдачи») и («Идентификатор носителя», «Идентификатор распределения»), естественное соединение, которых будет давать обобщенный ключ. Оба этих отношения уже присутствуют в схеме базы данных в виде отношений «Выдачи» и «Распределение фильмов»; то есть, добавления новых отношений не требуется.

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

 
R1 +(1) +(1) +(1) +(1) +(1)                         +(1)        
R2 +(11) +(11) +(11) +(11) +(11) +(9) +(12) +(12) +(14) +(12) +(13)           +(12) +(9)     +(1) +(1)
R3 +(2) +(2) +(2) +(2) +(2) +(1) +(3) +(3) +(5) +(3) +(4)           +(3) +(1)     +(1) +(10)
R4           +(1) +(1) +(1) +(5) +(1) +(4)           +(1)          
R5           +(1) +(3) +(3) +(5) +(3) +(1)           +(3)          
R6                 +(1)               +(1)          
R7                           +(1) +(1) +(1)     +(1)      
R8           +(1) +(3) +(3) +(5) +(3) +(4) +(1) +(8) +(6) +(6) +(6) +(3)   +(1) +(1)    
R9           +(7) +(12) +(12) +(14) +(12) +(13) +(7) +(1) +(15) +(15) +(15) +(12)   +(7) +(1)    
R3 ∞ R8 +(2) +(2) +(2) +(2) +(2) +(1) +(3) +(3) +(5) +(3) +(4) +(1) +(8) +(6) +(6) +(6) +(3) +(1) +(1) +(1) +(1) +(10)

Как видно из таблицы, уже на 10-м шаге была получена строка, состоящая из “+”. Таким образом, после добавления обобщенного ключа, наша схема обладает свойством соединения без потерь информации.