Если я начну с отношения R с набором функциональных зависимостей и проецирую эти FD на отношение S, как я могу определить, сохраняются ли определенные FD в спроецированном отношении?
Как узнать, сохраняется ли функциональная зависимость в проецируемом отношении?
Ответы (1)
Предположим, мы начинаем с отношения R и набора функциональных зависимостей, которые выполняются в R, и берем проекцию S отношения R. (Принимая FD за пару исходного и целевого наборов атрибутов/столбцов.) Затем FD, которые держать в S являются:
- The FDs where
- the source attributes/columns are in S, and
- исходный набор — это исходный набор одного из FD, первоначально хранящегося в R, и
- целевой набор — это соответствующий целевой набор за вычетом атрибутов/столбцов, не входящих в S, и
- Все остальные ФД в транзитивном замыкании множества ФД в 1.
Таким образом, для заданных FD каждая выполняется в S, если она находится в транзитивном замыкании множества FD в 1.
Обратите внимание, что если один из исходных FD, содержащихся в R, не находится в 1, то он не находится и в 2.
Обратите внимание, что FD среди исходных, содержащихся в R, находится в S, если его целевой и исходный атрибуты/столбцы находятся в S.
(Конечно, существуют и другие способы описания транзитивного замыкания ФЗ, которые выполняются в S. Также есть разные варианты для 1. Я выбрал ФЗ для 1, которые в каком-то смысле ближе всего к исходным, содержащимся в R.)