Как определить, имеет ли место функциональная зависимость в проецируемом отношении?

Если я начну с отношения R с набором функциональных зависимостей, и я спроецирую эти FD на отношение S, как я могу сказать, определяют ли определенные FD тогда в проецируемом отношении?

1 ответ

Предположим, что мы начинаем с отношения R и набора функциональных зависимостей, которые содержатся в R, и мы берем проекцию S на R. (Принимая FD за пару исходных и целевых наборов атрибутов / столбцов.) Затем FD, которые держать в S являются:

  1. ФД, где
    • исходные атрибуты / столбцы находятся в S, и
    • исходный набор является исходным набором одного из FD, изначально содержащихся в R, и
    • целевой набор является соответствующим целевым набором минус атрибуты / столбцы не в S, и
  2. Все остальные FD в транзитивном замыкании множества FD в 1.

Таким образом, для данных FD каждое из них выполняется в S, если оно находится в транзитивном замыкании множества FD в 1.

Обратите внимание, что если один из оригинальных FD, содержащихся в R, не находится в 1, то он также не в 2.

Обратите внимание, что FD среди оригинальных, содержащихся в R, находится в S, если его атрибуты / столбцы назначения и источника находятся в S.

(Конечно, есть и другие способы описания транзитивного замыкания FD, которые хранятся в S. Также есть разные варианты для 1. Я выбрал FD для 1, которые в некотором смысле наиболее близки к оригинальным, имеющимся в R.)

Другие вопросы по тегам