Функциональные зависимости и ключи
Функциональные зависимости определяются для атрибутов, находящихся в одном и том же отношении, удовлетворяющем первой нормальной форме.
Простейший случай функциональной зависимости охватывает 2 атрибута. В отношении R(A, B) атрибут A функционально определяет атрибут B, если в любой момент времени каждому значению A соответствует единственное значение B.
Для атрибутов A и B некоторого отношения возможны следующие ситуации:
- отсутствие функциональной зависимости;
- наличие функциональной зависимости одного атрибута от другого, но не наоборот;
- наличие взаимно-однозначного соответствия.
Понятие функциональной зависимости распространяется на ситуацию с тремя и более атрибутами.
Существование функциональных зависимостей связано с применяемыми способами кодирования атрибутов. Так, для множества учреждений можно утверждать, что каждый отдел относится к единственному учреждению. Однако этого недостаточно для доказательства функциональной зависимости Отдел -> Учреждение. Если в каждом учреждении отделы нумеруются последовательно, начиная с 1, то функциональная зависимость неверна. Если же код отдела, кроме номера, содержит и код учреждения (или уникальность кодов обеспечивается каким-то другим способом), то функциональная зависимость Отдел -> Учреждение справедлива. Невнимание к способам кодирования атрибутов может привести к несоответствию функциональных зависимостей и хранящихся данных, что является серьезной проектной ошибкой.
Для показателя со множеством атрибутов-признаков (P) и атрибутом-основанием (Q) справедлива функциональная зависимость P -> Q, хотя нельзя утверждать, что это единственная зависимость на указанных атрибутах.
С помощью функциональных зависимостей определяются понятия ключей отношений: вероятных, первичных и вторичных.
Вероятным ключом отношения называется такое множество атрибутов, что каждое сочетание их значений встречается только в одной строке отношения, и никакое подмножество атрибутов этим свойством не обладает. Вероятных ключей в отношении может быть несколько.
Важность вероятных ключей при обработке данных определяется тем, что выборка по известному значению вероятного ключа дает в результате одну строку отношения, либо ни одной.
На практике атрибуты вероятного ключа отношения связываются со свойствами тех объектов и процессов, информация о которых хранится в отношении. Если в результате корректировки отношения изменились имена атрибутов, образующих ключ, то это свидетельствует о серьезном искажении информации. Следовательно, систематическая проверка свойств вероятного ключа позволяет следить за достоверностью информации в отношении.
Когда в отношении присутствует несколько вероятных ключей, одновременное слежение за ними очень затруднено. Тогда целесообразно выбрать один из ключей в качестве основного (первичного).
Первичным ключом отношения называется такой вероятный ключ, по значениям которого производится контроль достоверности информации в отношении.
Применительно к экономической информации в подавляющем большинстве случаев отношения, полученные из существующих экономических документов, содержат единственный вероятный ключ, который является и первичным ключом. Это объясняется тем, что содержимое экономических документов понимается всеми пользователями одинаково. Наличие двух и более вероятных ключей в отношениях с осмысленной информацией можно объяснить наличием нескольких возможных способов интерпретации одних и тех же данных. Первичный ключ часто называют просто ключом.
В отношениях с большим количеством строк нахождение первичного ключа путем непосредственного применения определения достаточно затруднено. Кроме того, на стадии проектирования экономической информационной системы значения многих отношений просто неизвестны. Поэтому практически первичный ключ отношения определяется по известным функциональным зависимостям.
Каждое значение первичного ключа встречается только в одной строке отношения. Значение любого атрибута в этой строке также единственное. Набор атрибутов первичного ключа функционально определяет любой атрибут отношения. Обратное также верно: если найдена группа атрибутов, которая функционально определяет все атрибуты отношения по отдельности, и эту группу нельзя сократить, то найден первичный ключ отношения.
Для множества функциональных зависимостей существует ряд закономерностей, которые выражаются теоремами. Знание теорем позволяет из исходного множества функциональных зависимостей получать производные зависимости.
Неполная функциональная зависимость - это совокупность двух зависимостей:
- вероятный ключ отношения функционально определяет некоторый неключевой атрибут;
- часть вероятного ключа функционально определяет этот же неключевой элемент.