Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции БД.doc
Скачиваний:
35
Добавлен:
23.09.2019
Размер:
1.93 Mб
Скачать

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

Ряд следующих простых определений потребуются для дальнейшего изложения.

Определение. Схема R = (S, K) включает ФЗ KR, если K – выделенный ключ из K.

Определение. Схема БД R = {R1, R2,…, Rn} представляет множество ФЗ G = {KY | RiR, которое включает KY}. Говорят, что схема БД R полностью характеризует множество ФЗ F, если F G.

Пример

Схема БД из предыдущего примера представляет множество ФЗ G = {Пилот Дата Рейс Дата, Рейс Рейс Время}. Она полностью характеризует множество F = {Пилот Дата Рейс Время, Рейс Время}.

Конец примера

Определение. ФЗ XY применима к R, если XY – ФЗ над R, то есть XR и YR.

Определение. Пусть d={r1, r2, …, rn} – база данных со схемой R = {R1, R2,…, Rn} над U. Она удовлетворяет F, если каждая XY из F+, применимая к схеме Ri из R, выполняется в отношении ri.

Определение. Пусть G – множество всех ФЗ в F+, которые применимы к некоторой схеме Ri в R. Любая ФЗ в G+ называется навязанной R, а ФЗ из (F+G+) – ненавязанной R. Множество F навязано схеме БД R, если каждая ФЗ в F+ навязана R.

Определение. БД d со схемой R подчиняется множеству ФЗ F, если F навязано схеме R и d удовлетворяет F+.

Пример

Рассмотрим схему БД R = {R1, R2, R3}, где R1 = ABC, R2 = BCD, R3 = DE, и множество ФЗ F = {ABC, CA, AD, DE, AE}.

Функциональные зависимости AD и AE неприменимы ни к одной схеме из R.

Однако множество F навязано схеме R, так как существует G = {ABC, CA, СD, DE}, эквивалентное F, каждая функциональная зависимость которого применима к некоторой схеме из R. А множество {AD}, как легко видеть, не навязано R.

Конец примера

Лекция 15 Покрытия функциональных зависимостей

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

Пример

Пусть F = {AB, BC, AC, ABC, ABC}, G = {AB, BC}. Здесь все ФЗ из F выводятся из G, то есть F G. Однако представление G предпочтительнее: временная сложность алгоритма оценки множества ФЗ зависит от его объема.

Конец примера

Определение. Множество ФЗ F называется покрытием G, если F G.

Очевидно, что определение симметрично относительно множеств ФЗ, каждое из них будет покрытием другого, но обычно подразумевают, что объем покрытия меньше. Так как F+ = G+, для  XY G выполняется F |= XY.

Лемма об эквивалентности фз

Обобщим понятие выводимости. Будем считать, что F |= G, если верно, что F |= XY для  XY G.

Лемма. Для заданных множеств ФЗ F и G над схемой R тождество F G имеет место тогда и только тогда, когда F |= G и G |= F.

Доказательство

Пусть F G, тогда для каждой ФЗ XY из F имеет место G |= XY, то есть G |= F, аналогично F |= G.

Пусть теперь F |= G, тогда G F+, применяя операцию замыкания к обеим частям, получим G+  (F+)+ = F+, аналогично (G |= F)  (F+ G+), таким образом, F+ = G+.

Неизбыточные покрытия

Определение. Множество ФЗ F неизбыточно, если у него нет собственного подмножества F F, такого, что F F. Если F – покрытие G, то Fнеизбыточное покрытие G.

Пример

Пусть G = {ABC, AB, BC, AC}, F = {ABC, AB, BC}. Здесь F G, но F – избыточное покрытие, так как существует F′ = {AB, BC}, F F.

Конец примера

Функциональная зависимость XY F избыточна в F, если (F – {XY}) |= XY.

Приведём алгоритм построения неизбыточного покрытия. На вход алгоритма поступает некоторое множество ФЗ G, на выходе формируется его неизбыточное покрытие F. Заметим, что исходное множество может иметь более одного неизбыточного покрытия.

Алгоритм. Сначала положим F = G, затем для каждой ФЗ XY из G проверяем её принадлежность (F – {XY})+, и если (F – {XY}) |= XY, то F := F – {XY}.

Пример

Пусть F = {AB, BA, BC, AC}. Результатом применения алгоритма будет множество {AB, BA, AC}. Если F записать в виде {AB, AC, BA, BC}, то в результате применения алгоритма будем иметь {AB, BA, BC}.

Конец примера