Скачиваний:
102
Добавлен:
02.05.2014
Размер:
2.3 Mб
Скачать

10.7. Резюме

Функциональная зависимость — это связь типа "многие к одному" между двумя множествами атрибутов заданной переменной-отношения. Для заданной переменной-отношения R зависимость А —> В (где А и В являются подмножествами множества ат­рибутов переменной-отношения R) выполняется для переменной-отношения R тогда и только тогда, когда любые два кортежа переменной-отношения R с одинаковыми зна­чениями атрибутов множества А имеют одинаковые значения атрибутов множества В.

Каждая переменная-отношение обязательно удовлетворяет некоторым тривиальным функциональным зависимостям; причем функциональная зависимость тривиальна то­гда и только тогда, когда ее правая (зависимая) часть является подмножеством ее ле­вой части (детерминанта).

Одни функциональные зависимости подразумевают другие зависимости. Для дан­ного множества зависимостей S замыканием S+ называется множество всех функцио­нальных зависимостей, подразумеваемых зависимостями множества S. Множество S обязательно является подмножеством собственного замыкания S+. Правила логиче­ского вывода Армстронга обеспечивают исчерпывающую и полную основу для вычисления замыкания S+ для заданного множества S, хотя несколько дополнительных правил вывода (легко выводимых из правил Армстронга) позволяют упростить прак­тические вычисления.

Для данного подмножества Z множества атрибутов переменной-отношения R и множества функциональных зависимостей S, которые выполняются в переменной-отношении R, замыканием Z+ подмножества Z для множества S называется такое множество всех атрибутов А переменной-отношения R, что функциональная зависи­мость Z —> А является членом замыкания S+. Если замыкание Z+ состоит из всех атри­бутов переменной-отношения R, то подмножество Z называют суперключом перемен­ной-отношения R (а неприводимый суперключ, в свою очередь, называется потенци­альным ключом). В этой главе было дано описание простого алгоритма для получе­ния замыкания Z+ на основе Z и S и, следовательно, для определения, является ли дан­ная зависимость X -» Y членом замыкания S+ (функциональная зависимость X -> Y является членом замыкания S+ тогда и только тогда, когда множество Y является под­множеством замыкания Х+).

Два множества функциональных зависимостей S1 и S2 эквивалентны тогда и только тогда, когда они являются покрытиями друг для друга, т.е. S1+=S2+. Каждое множество функциональных зависимостей эквивалентно по крайней мере одному неприводимому множеству. Множество функциональных зависимостей является неприводимым, если, во-первых, каждая функциональная зависимость этого множества имеет одноэлемент­ную правую часть; во-вторых, если ни одна функциональная зависимость множества не может быть устранена без изменения замыкания этого множества; в-третьих, если ни один атрибут не может быть устранен из левой части любой функциональной зависимо­сти данного множества без изменения замыкания множества. Если I является неприво­димым множеством, которое эквивалентно множеству S, то проверка выполнения функ­циональных зависимостей из множества I автоматически обеспечит выполнение всех функциональных зависимостей из множества S.

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

  • Некоторые ограничения целостности являются тривиальными.

  • Одни ограничения целостности подразумевают другие ограничения.

  • Множество всех ограничений, подразумеваемых заданным множеством, может рассматриваться как замыкание этого заданного множества.

  • Выяснение вопроса, будет ли некоторое ограничение, находиться в некотором за­мыкании (т.е. будет ли заданное ограничение подразумеваться некоторыми дан­ными ограничениями), является очень интересной практической задачей.

  • Не менее интересной практической задачей является поиск неприводимого по­крытия для некоторого заданного множества установленных ограничений.

Благодаря наличию исчерпывающего и полного множества правил вывода различных функциональных зависимостей, работать с ними удобнее, чем с ограничениями целост­ности вообще. В списках рекомендуемой литературы в конце этой и главы 12 даны ссылки на работы, в которых описывается несколько других типов ограничений (MVD, JD и IND); для них также существуют подобные наборы правил вывода. Однако в данной книге другие существующие типы ограничений столь же подробно и полно, как функ­циональные зависимости, не рассматриваются.

Упражнения

  1. Пусть R является переменной-отношением степени п. Каково максимальное коли­чество функциональных зависимостей (как тривиальных, так и нетривиальных), которые могут выполняться для переменной-отношения R?

  2. Что конкретно имеется в виду, когда говорится, что правила Армстронга полны и исчерпывающи?

  3. Докажите правила рефлексивности, дополнения и транзитивности, используя только определение функциональной зависимости.

  4. Докажите, что три предыдущих правила подразумевают правила самоопределения, декомпозиции, объединения и композиции.

  5. Докажите общую теорему объединения, предложенную Дарвеном. Какие из пере­численных выше правил потребуются для этого? Какие правила можно вывести в виде особых случаев этой теоремы?

  6. Дайте определение для а) замыкания множества функциональных зависимостей; б) замыкания множества атрибутов для заданного множества функциональных за­висимостей.

  7. Перечислите множество всех функциональных зависимостей, которые всегда вы­полняются для переменной-отношения поставок SP.

  8. Ниже приведено множество функциональных зависимостей, имеющих место для переменной-отношения R{A,B,C,D,E,F,G}.

А —> В ВС -> DE AEF —> G

Вычислите замыкание {А,С}+ для данного множества функциональных зависимо­стей. Подразумевается ли зависимость ACF —» DG одной из функциональных зави­симостей этого множества?

10.9. Что означает понятие эквивалентности двух множеств функциональных зависимо- стей S1 и S2?

10.10.Что означает понятие неприводимости множества функциональных зависимостей? 10.11.Определите, эквивалентны ли два приведенных ниже множества функциональных зависимостей, установленных для переменной-отношения R{A,B,C,D,E}.

  1. А -» В АВ -> С D -> AC D -> Е

  2. А —» ВС D -» АЕ

10.12.Найдите неприводимое покрытие приведенного ниже множества функциональных зависимостей, заданных для переменной-отношения R{A,B,C,D,E,F}.

АВ —> С С —> А ВС —> D ACD -> В BE —> С СЕ -» FA CF -> BD D —> EF

10.13.В переменной-отношении TIMETABLE определены перечисленные ниже атрибуты. D День недели (1-5) Р Период времени в течение дня (1-8) С Номер класса Т Имя учителя L Название урока

Кортеж {D:d, Р:р, С:с, T:t, L:l} является элементом этой переменной-отношения тогда и только тогда, когда урок 1 проводится учителем t в классе с в момент {D:d, Р:р). Предположим, что длительность всех уроков равна одному периоду времени и, кроме того, каждый урок имеет название, уникальное по отно­шению ко всем урокам этой недели. Какие функциональные зависимости выпол­няются для этой переменной-отношения? Какие потенциальные ключи существуют для этой переменной-отношения?

10.14. Пусть задана переменная-отношение NADDR с атрибутами NAME (уникальное имя), STREET (улица), CITY (город), STATE (штат) и ZIP (индекс), где каждому индексу со­ответствует только один город и штат, а каждой улице, городу и штату соответст­вует только один индекс. Найдите неприводимое множество функциональных за­висимостей для этой переменной-отношения. Какие потенциальные ключи суще­ствуют для этой переменной-отношения?

10.15.Пусть дана переменная-отношение R с атрибутами {A,B,C,D,E,F,G,H,I,J}, для которой выполняется приведенное ниже множество функциональных зави­симостей.

ABD -» Е АВ —> G В —> F

С —> J CJ -> I G -> H

Является ли это множество неприводимым? Какие потенциальные ключи сущест­вуют для данной переменной-отношения?

Список литературы

10.1. Armstrong W. W. Dependency Structures of Data Base Relationships // Proc. IFIP Congress. — Stockholm, Sweden, 1974.

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

10.2. Casanova М.А., Fagin R., Papadimitriou C.H. Inclusion Dependencies and Their Interaction with Functional Dependencies // Proc. 1st ACM SIGACT-SIGMOD Symposium on Principles of Database Systems. — Los Angeles, Calif., March, 1982.

Зависимости включения (inclusion dependencies — INDs) являются обобщением концепции ограничений целостности. Например, зависимость включения типа

SP.SI ) S.SI

(здесь символическая запись содержит несколько более длинную стрелку, подчер­кивающую, что это зависимость другого типа) означает, что множество значений атрибута SP.SI должно быть подмножеством (необязательно собственным под­множеством) множества значений атрибута S.S#. Это, конечно, частный случай ограничения целостности, в общем же случае для зависимости включения не суще­ствует никаких ограничений на то, что левая часть является внешним ключом, а правая — потенциальным.

Замечание. Зависимости включения имеют некоторое сходство с функциональны­ми зависимостями, поскольку оба эти типа зависимостей представляют связь "многие к одному". Однако зависимости включения обычно покрывают перемен­ные-отношения, тогда как функциональные зависимости не покрывают.

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

  1. А > А.

  2. Если АВ > CD, то А > С и В > D.

  3. Если А > В и В > С, то А > С.

10.3. Casey R.G., Delobel С. Decomposition of a Data Base and the Theory of Boolean Switching Functions // IBM J. R&D. — September, 1973. —- 17, № 5.

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

ку исходные функциональные зависимости могут быть заданы многими совер­шенно различными (но эквивалентными) способами, каждый из которых в об­щем приводит к возникновению существенно разных булевых функций, но все такие функции могут быть сведены к одной той же канонической форме с помо­щью законов булевой алгебры. Показано, что проблема декомпозиции исходной переменной-отношения (т.е. декомпозиция без потерь; подробности приводятся в главе 11) логически эквивалентна хорошо известной в булевой алгебре про­блеме поиска "покрывающего множества из простых импликантов" для булевой функции, соответствующей этой переменной-отношению вместе с ее функцио­нальными зависимостями. Следовательно, исходная проблема может быть пере­формулирована в эквивалентную проблему в булевой алгебре, а для ее решения могут применяться хорошо известные методы.

Эта одна из первых работ, посвященных применению теории зависимостей для широкого круга других дисциплин. Этому также посвящена публикация [10.8] и несколько работ, упомянутых в списках литературы в главе 12.

10.4. Codd E.F. Further Normalization of the Data Base Relational Model // Data Base Systems, Courant Computer Science Symposia Series 6. — Englewood Cliffs, N J.: Prentice-Hall, 1972.

Впервые представлена концепция функциональной зависимости (не считая бо­лее раннего упоминания в одном из внутренних документов фирмы IBM). По­нятие "дальнейшая нормализация" (Further Normalization), приведенное в заго­ловке, относится к некоторому типу специализированного макета базы данных, обсуждаемого в главе 11 (назначение этой статьи заключалось в де­монстрации возможности использования идеи функциональной зависимости для решения проблем проектирования базы данных). Действительно, функцио­нальные зависимости представляют собой одну из первых попыток разреше­ния этой проблемы. Однако идея ФЗ с тех пор доказала свою полезность и для более широкого практического применения.

10.5. Codd E.F. Normalized Data Base Structure: A Brief Tutorial // Proc. 1971 ACM SIGFIDET Workshop on Data Description, Access, and Control. — San Diego, Calif., November, 1971.

Вводное изложение идей, представленных в [10.4].

10.6. Darwen Н. The Role of Functional Dependence in Query Decomposition // C.J. Date and H. Darwen. Relational Database Writings 1989-1991.— Reading, Mass.: Addison-Wesley, 1992.

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

могут использоваться для значительного повышения производительности СУБД, ее функциональности и удобства пользования,

  1. Darwen Н. OObservations of a Relational Bigot // Presentation to BCS Special Interest Group on Format Aspects of Computing Science. — London, UK, December, 1990.

  2. Fagin R. Functional Dependencies in a Relational Database and Propositional Logic // IBM J.R&D. — November, 1977. — 21, № 6.

Показано, что аксиомы Армстронга [ЮЛ] строго эквивалентны системе имплика­ционных утверждений в логике высказываний. Иначе говоря, задается отображе­ние между функциональными зависимостями и утверждениями в логике высказы­ваний, а затем показывается, что данная зависимость f является последовательно­стью заданного множества зависимостей S тогда и только тогда, когда высказыва­ние, соответствующее f, является логическим следствием множества высказыва­ний, соответствующих множеству S.

10.9. Lucchesi C.L., Osborn S.L. Candidate Keys for Relations // J. Сотр. and Sys. Sciences. — 1978. — 17, № 2.

Представлен алгоритм поиска всех потенциальных ключей, а также функциональ­ных зависимостей, выполняющихся для заданной переменной-отношения.

Ответы к некоторым упражнениям

10.1. Функциональная зависимость— это утверждение типа А —> В, где А и В являются подмножествами множества атрибутов переменной-отношения R. Поскольку мно­жество из п элементов образует 2" возможных подмножеств, каждое из множеств А и В может содержать по 2" возможных значений. Следовательно, общее число воз­можных функциональных зависимостей равно 22п.

10.5.

  1. А —> В (дано)

  2. С —> D (дано)

  3. А -> В п С (зависимость соединения, 1)

  4. С - В —> С - В (самоопределение)

  5. А и ( С • В ) -) ( В п С ) и ( С • В ) (композиция, 3,4)

  6. А и ( С - В ) -) С (упрощение, 5)

  7. Аи ( С-В ) —> d (транзитивность, 6, 2)

  8. Аи ( С • В ) -> Ви D (композиция, 1, 7)

Доказательство завершено. |

Использованные для доказательства правила указаны в скобках. Среди них есть правила, которые являются особыми случаями теоремы Дарвена: объединение, транзитивность, композиция и дополнение. Таким же особым случаем теоремы Дарвена является следующее полезное правило.

■ Если А —> В и АВ —> С, то А —» С.

10.7. Ниже приведен полный набор функциональных зависимостей (т.е. замыкание) для переменной-отношения SP.

Si, Pt, QTY

Si, Pt, QTY

Si', Pi, QTY

Si, Pi, QTY

Si, Pi, QTY

St, Pt, QTY

Si, Pi, QTY

Si, Pi, QTY

Si, Pt } ->

St, Pt } ->

St, Pt } -»

St, Pt } ->

St, Pt } -*

St, Pi } ->

St, Pi } -»

si, Pi } -»

-> { Si, Pt, QTY } -» { Si, Pi } -» { Pi, QTY } -» { Si, QTY } -» { Si } -»{*#} -» { QTY }

-> { >

Si, Pt, QTY } Si, Pt } Pt, QTY } St, QTY } St }

Pt }

QTY } }

Pt, QTY } —> { Pt, QTY }

Pt, QTY } -» { Pi }

Pt, QTY } -» { QTY }

Pt, QTY } -» { }

Si, QTY } -> { Si, QTY }

St, QTY } -» { Si }

St, QTY } -> { QTY }

Si, QTY } -» { }

S# } -> { S# } si } -» { }

Pi } -> { Pi } Pt } -* { }

QTYi } { QTYi } QTYi } -» { }

10.8.

} -» { }

{A,C}+ = {A,B,C,D,E}. На вторую часть вопроса следует дать утвердительный ответ.

10.11.Они эквивалентны. Пронумеруем функциональные зависимости из первого множе­ства следующим образом.

  1. А —» В

  2. АВ —> С

  1. D —> AC

  2. D -4 E

Тогда строка 3 может быть заменена следующей строкой. 3. О -> А и D -> С

Затем с помощью строки 1 можно придать строке 2 такой вид.

2. А -> С

Но поскольку теперь D —» А и А —» С, по транзитивности это подразумевает D —» С, а в результате для строки 3 можно получить следующее выражение.

3. D А

Таким образом, первое множество функциональных зависимостей эквивалентно следующему неприводимому множеству.

А -* В

А -» С D -» А

D —* Е

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

А -» ВС D —» АЕ

Таким образом, эти множества эквивалентны. | 10.12.Прежде всего, следует переписать данное множество так, чтобы каждая функцио­нальная зависимость имела одноэлементную правую часть.

  1. АВ —> С

  2. С -» А

  3. ВС -» D

  4. ACD -» В

  5. BE -> С

  6. СЕ -» А

  7. СЕ —^ F

  8. CF —> В

  9. CF -» D

  10. D —> Е

  11. D -» F

Тогда получаем следующее.

■ Строка 2 подразумевает строку 6, поэтому строку 6 можно опустить.

" Строка 8 подразумевает функциональную зависимость CF —> ВС (по правилу до­полнения), которая вместе со строкой 3 подразумевает функциональную зависи­мость CF —> D (по правилу транзитивности), так что строку 9 можно опустить.

■ Строка 8 подразумевает функциональную зависимость ACF —> АВ (по дополне­нию), а строка 11 — функциональную зависимость ACD —> ACF (по дополнению). Тогда можно записать, что ACD —> АВ (по правилу транзитивности) и ACD —» В (по правилу декомпозиции). Таким образом, строку 4 можно опустить.

На этом все операции вывода завершаются и множество становится неприводимым.

АВ —> С

С —> А

ВС —> D

BE —> С

се —> f

CF —> В

D -» Е

D —> F

Вывод можно осуществить иначе.

  • Строка 2 подразумевает функциональную зависимость CD —» ACD (по правилу композиции), которая со строкой 4 подразумевает функциональную зависимость CD —> В (по правилу транзитивности), так что строку 4 можно заменить зависи­мостью CD —*■ В.

  • Строка 2 подразумевает строку 6, так что строку 6 можно опустить (как и прежде).

  • Строки 2 и 9 подразумевают функциональную зависимость CF —» AD (по правилу композиции), которая подразумевает функциональную зависимость CF —> ADC (по правилу дополнения), которая вместе со строкой 4 подразумевает функцио­нальную зависимость CF -» В (по правилу транзитивности). Таким образом, строку 8 можно опустить.

На этом все операции вывода завершаются и множество становится неприводимым.

АВ -» С С —> А ВС -4 D CD —> В BE -» С СЕ -» F CF —> D D -» Е D -» F

Обратите внимание, что тем самым получено два разных неприводимых покрытия для исходного множества функциональных зависимостей. ЮЛЗ.Потенциальными ключами являются L, DPC и DPT.

10.14. Используя сокращенную запись N, R, С, Т и Z для атрибутов NAME, STREET, CITY, STATE и ZIP соответственно, можно получить следующие функциональные зависимости.

N —» RCT RCT —> Z Z —> СТ

Очевидно, что эквивалентным неприводимым множеством является следующее. N -> R N -> С N -> Т RCT -> Z Z -> С Z T Единственным потенциальным ключом является атрибут N.

10.15.Ответ к этому упражнению будет дан не полностью, хотя некоторые рассуждения здесь все же будут изложены. Во-первых, множество, очевидно, не является не­приводимым, так как функциональные зависимости С —> J и CJ —* I совместно подразумевают зависимость С -» I. Во-вторых, очевидным суперключом является множество {A,B,C,D,G,J} (т.е. множество всех атрибутов, упомянутых в левых частях заданных функциональных зависимостей). Из этого множества можно ис­ключить атрибут J, поскольку существует зависимость С —> J, а также исключить атрибут G, поскольку существует зависимость АВ -» G. Так как ни один из атрибу­тов А, В, С, D не находится в правой части любой заданной функциональной зави­симости, множество {A,B,C,D} является потенциальным ключом.

Соседние файлы в папке Дейт К. Дж. Введение в системы баз данных [7 издание]