Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЭИС пособие конспект лекций.doc
Скачиваний:
8
Добавлен:
10.11.2019
Размер:
1.05 Mб
Скачать

2.2. Функциональные зависимости и ключи

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

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

Отсутствие функциональной зависимости обозначается А—/-> В.

Рассмотрим пример с атрибутами ФИО и ГР (год рождения) в отношении R1.

R1

ФИО

ГР

Иванов

1960

Зуев Смирнов

1963

1960

Яшина

1961

Рисунок 2.4 Отношение (ФИО, ГР)

Предположим, что в столбце ФИО представлены сведения о разных людях и соответствующие значения в столбце не повторяются. Тогда можно утверждать наличие функциональной зависимости ФИО -> ГР, поскольку каждому значению атрибута ФИО в отношении R1 соответствует единственное значение атрибута ГР. Можно утверждать, что это ограничение будет соблюдаться и далее, так как оно перефразируется в утверждение: у каждого человека единственный год рождения, которое справедливо.

Практически каждое ограничение для проверки функциональной зависимости можно преобразовать в утверждение о свойствах объектов предметной области, которое можно проверить, не анализируя множество значений соответствующего отношения. Именно так мы и будем поступать в дальнейшем. Наличие в столбце ГР повторяющихся годов (1960) не опровергает установленной нами зависимости, но это означает ГР —/-> ФИО.

Одновременное соблюдение двух зависимостей вида А —> В и В —> А называется взаимно-однозначным соответствием и обозна­чается А --> В.

В качестве примера рассмотрим отношение R2 с атрибутами Магазин и Расч (номер расчетного счета).

R2

Магазин

Расч

ММЗ Динамо АТЭ

704098 122095 440162

Рисунок 2.5 Отношение R2(Магазин, Расч)

Можно утверждать, что у каждого магазина единственный номер расчетного счета и каждый расчетный счет принадлежит единственному магазину. Это доказывает справедливость функциональных зависимостей Магазин —> Расч и Расч — Магазин, т.е. Магазин < —>Расч.

Наконец, самыми распространенными являются случаи отсутствия функциональных зависимостей, например, ФИО —/—> Дисциплина и Дисциплина —/-> ФИО в отношении R3, описывающем экзамены студентов. Здесь каждый студент сдает экзамены по нескольким дисциплинам, и по каждой дисциплине экзамен сдается многими студентами.

R3

ФИО

Дисциплина

Петров Федин Алешин Петров

Физика

Химия

Физика

Химия

Рисунок 2.6 Отношение R3 (ФИО, Дисциплина)

Таким образом, для атрибутов А и В некоторого отношения возможны следующие ситуации:

- отсутствие функциональной зависимости,

- наличие А —> В (или В —> А), но не обе зависимости вместе,

- наличие взаимно –однозначного соответствия А< —> В.

Понятие функциональной зависимости распространяется на ситуацию с тремя и более атрибутами в следующей форме. Группа атрибутов (для определенности А,В,С) функционально определяет атрибут D в отношении T(A,B,C,D,....), если каждому сочетанию значений (а,Ь,с) соответствует единственное значение d - значение A, b - значение В, с - значение С, d - значение D). Наличие такой функциональной зависимости будем обозначать А,В,С —> D.

Пусть в отношении Т1 представлены сведения о закончившихся экзаменах. Ограничение, состоящее в том, что студент не может в один день сдать два и более экзаменов, означает справедливость ряда функциональных зависимостей:

Т1

ФИО

Дисциплина

Дата

Преподаватель

Оценка

Петров

Физика

01.06.98

Иванов

4

Федин

Химия

01.06.98

Смирнов

5

Алешин

Физика

01.06.98

Иванов

5

Петров

Химия

07.06.98

Смирнов

5

Рисунок 2.7 Отношение Т1(ФИО, Дисц., Дата, Преподав., Оценка)

ФИО, Дата  Дисциплина,

ФИО, Дата —> Преподаватель,

ФИО, Дата > Оценка.

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

Для показателя со множеством атрибутов-признаков Р= {Р 1 ,Р2,... ,Рп} и атрибутом-основанием Q справедлива функциональная зависимость Р —> Q, хотя нельзя утверждать, что это единственная зависимость на указанных атрибутах.

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

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

Рассмотрим пример: отношение ТЗ (имена и значения атрибутов - условные):

ТЗ

ZEN

RAM

AST

SPIM

BIG

31

Dwa

Wii

73

21

Bun

Cup

40

3D

30

Mun

Lam

58

40

31

Sab

Wii

40

30

Sab

Irt

38

Рисунок 2.8 Отношение Т3 (ZEN, RAM, AST, SРМ, BIG)

Можно утверждать, что вероятным ключом отношения ТЗ является атрибут ZEN (значения в столбце ZEN не повторяются). Кроме того, еще один вероятный ключ представлен парой атрибутов RAM, AST.

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

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

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

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

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

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

Каждое значение первичного ключа встречается только в одной строке отношения. Значение любого атрибута в этой строке также единственное. Если через К обозначить атрибуты первичного ключа в отношении R(A,B,C,... ,J), то справедливы следующие функциональные зависимости К —> А, К —> В, К —> С,..., К — J. Набор атрибутов первичного ключа функционально определяет любой атрибут отношения. Обратное также верно: если найдена группа атрибутов, которая функционально определяет все атрибуты отношения по отдельности, и эту группу нельзя сократить, то найден первичный ключ отношения.

Вернемся к отношению Т1 с функциональными зависимостями:

ФИО, Дата — Дисциплина,

ФИО, Дата —> Преподаватель,

ФИО, Дата — Оценка.

Нетрудно установить, что

ФИО, Дата —> ФИО,

ФИО, Дата — > Дата

(в каждом сочетании значений ФИО, Дата значение ФИО встречается один раз). Следовательно, первичный ключ в отношении Т1 составляют атрибуты ФИО, Дата и при поиске ключа не потребовались конкретные значения Т1.

Знание ключа отношения позволяет устанавливать ряд функциональных зависимостей, например, в ТЗ ZEN— BIG, RAM, AST —> BIG.

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