Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Покрытия функциональных зависимостейСодержание книги
Поиск на нашем сайте
Для формирования БД, как системы взаимосвязанных отношений на основании известных (из семантических соображений) F-зависимостей необходимо иметь способ минимизации первоначального множества F-зависимостей. Это необходимо для минимизации дублирования данных, обеспечения их согласованности и целостности. Теоретической основой для построения такого способа является теория покрытий функциональных зависимостей. Определение. Два множества F-зависимостей F и G над отношением R эквивалентны, Из этого определения следует, что для установления факта, что множество функциональных зависимостей F является покрытием G, необходимо определить эквивалентность F и G. Практически это достигается путем использования следующего алгоритма: Алгоритм EQUIV Вход: два множества F- зависимостей F и G. Выход: истина, если EQUIV(F,G) begin v=DERIVES(F,G) and DERIVES(G,F); return(v) end
Здесь DERIVES алгоритм проверяет условие F |= G и имеет вид: Алгоритм DERIVES Вход: два множества F- зависимостей F и G. Выход: истина, если F |= G; ложь в противном случае. DERIVES(F,G) begin v= истина for каждая F-зависимость X -> Y из G do v = v and MEMBER(F, X -> Y) end return(v) end Множество F-зависимостей F не избыточно, если у него нет такого собственного подмножества F’, что F’ Пример. Пусть G = { AB -> C, A -> B, B -> C, A -> C}. Множество F= {AB -> C, A -> B, B -> C} эквивалентно G, но избыточно, потому что F’ = {A -> B, B -> C} также является покрытием G. Множество F’ представляет собой не избыточное покрытие G. Действительно, согласно алгоритму EQUIV (Подробнее) Множество F не избыточно, если в нем не существует F-зависимости X -> Y, такой, что F - { X -> Y} |= X -> Y. Назовем F-зависимость из F избыточной в F, если F - { X -> Y} |= X -> Y. Для любого множества F-зависимостей G существует некоторое подмножество F, такое, что F является не избыточным покрытием G. Если G не избыточно, то F=G. Для определения не избыточного покрытия множества F- зависимостей G существует алгоритм NONREDUN, который имеет вид: Вход: множество F-зависимостей G. Выход: не избыточное покрытие G. NONREDUN(G) begin F=G for каждая зависимость X -> Y из G do if MEMBER(F-{X->Y],X->Y) then F=F-{X->Y} end return(F) end Пример: Пусть G= {A -> B, B -> A, B -> C, A -> C}. Результатом работы алгоритма является множество: {A -> B, B -> A, A -> C}. Если бы G было представлено в порядке {A -> B, A -> C, B -> A, B -> C}, то результатом работы алгоритма было бы {A -> B, B -> A, B -> C}. Из примера видно, что множество F-зависимостей G может иметь более одного неизбыточного покрытия. Могут так же существовать неизбыточные покрытия G, не содержащиеся в G. В приведенном примере таким неизбыточным покрытием будет множество F = {A -> B, B -> A, AB -> C}.
Если F-неизбыточное множество F-зависимостей, то в нем нет “лишних” зависимостей в том смысле, что нельзя уменьшить F, удалив некоторые из них. Удаление любой F-зависимости из F приведет к множеству, не эквивалентному F. Однако размер можно уменьшить, удалив некоторые атрибуты F-зависимостей F. Определение. Пусть F-множество F-зависимостей над R и X -> Y есть F-зависимость из F. Атрибут А из R называется посторонним в X -> Y относительно F, если
Y = AW, Y Иными словами, А - посторонний атрибут, если он может быть удален из правой или левой части X -> Y без изменения замыкания F. Пример. Пусть G = {A -> BC,B -> C,AB -> D}. Атрибут С является посторонним в правой части A -> BC, а атрибут B - в левой части AB -> D. Определение. Пусть F - множество F-зависимостей над R и X -> Y принадлежит F. F-зависимость X -> Y называется редуцированной слева, если Х не содержит постороннего атрибута А и редуцированной справа, если Y не содержит атрибута А, постороннего для X -> y. Зависимость X -> Y называется редуцированной, если она редуцирована слева и справа и Y Определение. Множество F-зависимостей F называется редуцированным (слева, справа), если каждая F-зависимость из F редуцирована (соответственно слева, справа). Пример. Множество G = {A -> BC, B -> C, AB -> D} не является редуцированным ни справа, ни слева. Множество G1 = {A -> BC, B -> C, A -> D} редуцировано слева, но не справа, а G2 = {A -> B, B -> C, AB -> D} редуцировано справа, но не слева. Множество G3 = {A -> B, B -> C, A -> D} редуцировано слева и справа, следовательно, поскольку правые части не пусты, редуцировано. Для нахождения редуцированных покрытий используется алгоритм: REDUCE Вход: множество F-зависимостей G. Выход: редуцированное покрытие G. REDUCE(G) begin F = RIGHTRED(LEFTRED(G)) удалить из F все F-зависимости вида X -> return(F) end
здесь RIGHTRED и LEFTRED алгоритмы редуцирования соответственно справа и слева, которые имеют вид: RIGHTRED Вход: множество F-зависимостей G. Выход: редуцированное справа покрытие G. RIGHTRED(G) begin F = G for каждая зависимость X -> Y из G do for каждый атрибут А из Y do if MEMBER(F - {X -> Y} удалить А из Y в X -> Y из F end end return(F) end
Алгоритм LEFTRED Вход: множество F-зависимостей G. Выход: редуцированное слева покрытие G. Begin F = G for каждая зависимость X -> Y из G do for каждый атрибут А из Х do if MEMBER(F,{X - A) -> Y) then удалить А из X в X -> Y из F end end return(F) end
Пример. Пусть G’= {A -> C, AB -> DE, AB ->CDI, AC -> J}.Из LEFTRED(G’) получаем G” = {A -> C, AB -> DE, AB -> CDI, A -> J} и из RIGHTRED(G”) получаем F= {A -> C, AB -> E, AB -> DI, A -> J}, уже редуцированное. Далее потребуется находить разбиение множества F- зависимостей, заданных на отношении R на подмножества, которые представляют собой классы F- зависимостей с эквивалентной левой частью. Определение: два множества атрибутов X и Y называются эквивалентными на множестве F- зависимостей F, если F |= X->Y и F |= Y ->X. Например пусть дано F={A -> BC, B -> A, AD -> E}, найдем все F- зависимости эквивалентные левой части первой, т.е. А. Левая часть второй F- зависимости (В) эквивалентна А? Проверим F |= A -> B и F |= B -> A. Это действительно так. Следовательно А эквивалентно В и первые две F- зависимости можно объединить в один класс эквивалентности, который обозначается в общем случае ЕА(Х). Множество классов эквивалентности для заданного множества F- зависимостей обозначается (X1, X2,..., Xk) -> Y где X1, X2,..., Xk , множество эквивалентных левых частей F- зависимостей, а Y объединение правых частей F- зависимостей.
|
||||
|
Последнее изменение этой страницы: 2016-09-05; просмотров: 724; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.39 (0.006 с.) |