Функциональная зависимость (программирование)

Функциональная зависимость (программирование)

Функциона́льная зави́симость — концепция, лежащая в основе многих вопросов, связанных с реляционными базами данных, включая, в частности, их проектирование. Математически представляет бинарное отношение между множествами атрибутов данного отношения и является, по сути, связью типа «один ко многим». Их использование обусловлено тем, что они позволяют формально и строго решить многие проблемы.

Содержание

Определения

Функциональная зависимость

Пусть дано отношение r со схемой (заголовком) R, A и B — некоторые подмножества множества атрибутов отношения r. Множество B функционально зависит от A тогда и только тогда, когда каждое значение множества A связано в точности с одним значением множества B. Другими словами, если два кортежа совпадают по атрибутам A, то они совпадают и по атрибутам B.

r\left( R \right),\ A\subseteq R,\ B\subseteq R
\left( A\to B \right)\Leftrightarrow \left( \left( \forall {{t}_{1}},{{t}_{2}}\in r:{{t}_{1}}\left( A \right)={{t}_{2}}\left( A \right) \right)\Rightarrow \left( {{t}_{1}}\left( B \right)={{t}_{2}}\left( B \right) \right) \right)

В этом случае A — детерминант, B — зависимая часть.

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

\left( B\subseteq A \right)\Rightarrow \left( A\to B \right)

Замыкание множества зависимостей

Одни функциональные зависимости могут подразумевать другие функциональные зависимости. Например,

\left( A\to B \right)\wedge \left( B\to C \right)\Rightarrow \left( A\to C \right).

Множество {{S}^{+}} всех функциональных зависимостей, которые подразумеваются данным множеством функциональных зависимостей S называется замыканием множества S.

Замыкание множества атрибутов

Пусть Z — некоторое множество атрибутов отношения r, а S — множество функциональных зависимостей этого отношения. Замыканием {{Z}^{+}} множества атрибутов Z в пределах S называется такое множество всех атрибутов {{A}_{i}} отношения r, что функциональная зависимость Z\to {{A}_{i}} является членом замыкания {{S}^{+}}.

r\left( R \right),\ S,\ Z\subseteq R,\ {{A}_{i}}\subseteq R,\ i=\overline{1,n}
{{Z}^{+}}=\left\{ {{A}_{i}}:\left( Z\to {{A}_{i}} \right)\in {{S}^{+}} \right\}

Неприводимые множества зависимостей

Пусть {{S}_{1}} и {{S}_{2}} — некоторые множества функциональных зависимостей.

  • Если любая функциональная зависимость из {{S}_{1}} входит и в {{S}_{2}}, то {{S}_{2}} называют покрытием множества функциональных зависимостей {{S}_{1}}.
  • Если {{S}_{2}} — покрытие для {{S}_{1}}, а {{S}_{1}} — для {{S}_{2}} (то есть S_{1}^{+}=S_{2}^{+}), то такие множества называются эквивалентными.
  • Множество функциональных зависимостей S называется неприводимым тогда и только тогда, когда выполняются следующие условия:
    • В каждой функциональной зависимости зависимая часть содержит только один элемент;
    • Детерминант каждой функциональной зависимости является неприводимым (ни один атрибут не может быть удален из детерминанта без изменения замыкания {{S}^{+}});
    • Ни одну функциональную зависимость из S нельзя исключить без изменения замыкания {{S}^{+}}.
  • Для любого множества функциональных зависимостей существует по крайней мере одно эквивалентное множество, которое является неприводимым. Такое эквивалентное множество называется неприводимым покрытием.

Вычисление замыканий

Правила вывода Армстронга

В 1974 году Вильям Армстронг предложил набор правил вывода новых функциональных зависимостей на основе данных.

Пусть у нас есть отношение r\left( R \right) и множества атрибутов A,B,C,D\subseteq R. Для сокращения записи вместо X\cup Y будем писать просто XY.

  • Рефлексивность:
    \left( B\subseteq A \right)\Rightarrow \left( A\to B \right)
  • Пополнение:
    \left( A\to B \right)\Rightarrow \left( AC\to BC \right)
  • Транзитивность:
    \left( A\to B \right)\wedge \left( B\to C \right)\Rightarrow \left( A\to C \right)

Правила вывода Армстронга полны (используя их, можно вывести все остальные функциональные зависимости, подразумеваемые данным их множеством) и надежны («лишних» функциональных зависимостей вывести нельзя; выведенная функциональная зависимость справедлива везде, где справедливо то множество функциональных зависимостей, из которого она была выведена).

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

  • Самоопределение:
    A\to A
  • Декомпозиция:
    \left( A\to BC \right)\Rightarrow \left( A\to B \right)\wedge \left( A\to C \right)
  • Объединение:
    \left( A\to B \right)\wedge \left( A\to C \right)\Rightarrow \left( A\to BC \right)
  • Композиция:
    \left( A\to B \right)\wedge \left( C\to D \right)\Rightarrow \left( AC\to BD \right)
  • Теорема всеобщего объединения Дарвена:
    \left( A\to B \right)\wedge \left( C\to D \right)\Rightarrow \left( A\cup \left( C-B \right)\to BD \right)

Теорема: Функциональная зависимость A\to B выводима из данного множества функциональных зависимостей S по правилам вывода Армстронга тогда и только тогда, когда B\subseteq {{A}^{+}}.

Замыкание множества атрибутов

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

  1. Пусть X — множество атрибутов, которое в конечном счете станет замыканием.
  2. Осуществляем поиск функциональных зависимостей вида {{B}_{1}}{{B}_{2}}\ldots {{B}_{m}}\to C, где {{B}_{1}}{{B}_{2}}\ldots {{B}_{m}}\subseteq X, а C\not\subset X. Зависимую часть каждой найденной зависимости добавляем в X.
  3. Повторяем пункт 2, пока ко множеству X будет невозможно добавить атрибуты.
  4. Множество X, к которому невозможно добавить атрибуты и будет замыканием.

Применение

Проектирование БД

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

Если I является неприводимым покрытием исходного множества функциональных зависимостей S, то проверка выполнения функциональных зависимостей из I автоматически гарантирует выполнение всех функциональных зависимостей из S. Таким образом, задача поиска минимально необходимого набора сводится к отысканию неприводимого покрытия множества функциональных зависимостей, которое и будет использоваться вместо исходного множества.

Декомпозиция отношений

Теорема Хита

Пусть дано отношение r\left( A,B,C \right).

Если r удовлетворяет функциональной зависимости A\to B, то оно равно соединению его проекций r\left[ A,B \right] и r\left[ A,C \right].

\left( A\to B \right)\Rightarrow \left( r\left( A,B,C \right)=r\left[ A,B \right]\ \text{JOIN}\ r\left[ A,C \right] \right)

См. также

Литература

  • К. Дж. Дейт Введение в системы баз данных = Introduction to Database Systems. — 8-е изд. — М.: «Вильямс», 2006. — С. 1328. — ISBN 0-321-19784-4

Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "Функциональная зависимость (программирование)" в других словарях:

  • Многозначная зависимость — (тж. МЗЗ)  обобщение понятия функциональной зависимости, широко использующееся в теории баз данных. В концепции нормальных форм вводится для формального определения четвертой нормальной формы Содержание 1 Определения 2 Пример …   Википедия

  • Функция — В Викисловаре есть статья «функция» Функция  многозначный термин, который означает такое отношение между элементами, в котором изменение в одном влечет измен …   Википедия

  • Нормальная форма Бойса — Кодда (англ. Boyce Codd normal form; сокращённо BCNF)  одна из возможных нормальных форм отношения в реляционной модели данных. Иногда нормальную форму Бойса Кодда называют усиленной третьей нормальной формой, поскольку она во всех… …   Википедия

  • Вторая нормальная форма — Основная статья: Нормальная форма Вторая нормальная форма (англ. Second normal form; сокращённо 2NF) одна из возможных нормальных форм таблицы реляционной базы данных. Содержание 1 Определение 2 Пример …   Википедия

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

  • Третья нормальная форма — (англ. Third normal form; сокращённо 3NF)  одна из возможных нормальных форм отношения реляционной базы данных. 3NF была изначально сформулирована Э. Ф. Коддом в 1971 году. Содержание 1 Определение …   Википедия

  • ГОСТ Р ИСО/МЭК 19762-3-2011: Информационные технологии. Технологии автоматической идентификации и сбора данных (АИСД). Гармонизированный словарь. Часть 3. Радиочастотная идентификация (РЧИ) — Терминология ГОСТ Р ИСО/МЭК 19762 3 2011: Информационные технологии. Технологии автоматической идентификации и сбора данных (АИСД). Гармонизированный словарь. Часть 3. Радиочастотная идентификация (РЧИ) оригинал документа: 05.02.21 абстрактный… …   Словарь-справочник терминов нормативно-технической документации

  • Проблемно-ориентированное проектирование — (DDD) (англ. Domain driven design)  это набор принципов и схем, помогающих разработчикам создавать изящные системы объектов. При правильном применении оно приводит к созданию программных абстракций, которые называются моделями… …   Википедия

  • Dual Vee Model — Разработка программного обеспечения Процесс разработки ПО Шаги процесса Анализ • Проектирование • Программирование • Докумен …   Википедия

  • ПОТРЯСАЮЩАЯ ПСИХОТЕРАПИЯ АНАНЬЕВА —         Представляет собой универсальное пространство в широкой области современных традиций психологии здоровья, психотерапии, медицинской психологии и психологии вообще. Это пространство создает уникальные условия для слияния воедино имеющихся… …   Психотерапевтическая энциклопедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»