Взаимно независимые атрибуты. Два или более атрибута называются взаимно независимыми, если ни один из этих атрибутов не является функционально зависимым от других атрибутов.
В случае двух атрибутов отсутствие зависимости атрибута А от атрибута В можно обозначить так: А →В. Случай, когда А →В и В →А, можно обозначить А =В.
Выявление зависимостей между атрибутами
Выявление зависимостей между атрибутами необходимо для выполнения проектирования БД методом нормальных форм, рассматриваемого далее.
Основной способ определения наличия функциональных зависимостей — внимательный анализ семантики атрибутов. Для каждого отношения существует, но не всегда, определенное множество функциональных зависимостей между атрибутами. Причем если в некотором отношении существует одна или несколько функциональных зависимостей, можно вывести другие функциональные зависимости, существующие в этом отношении.
Пример. Пусть задано отношение R со схемой R(A1, A2, A3) и числовыми значениями, приведенными в следующей таблице:
А1
|
А2
|
A3
|
12
|
21
|
34
|
17
|
21
|
34
|
11
|
24
|
33
|
13
|
25
|
31
|
15
|
23
|
35
|
14
|
22
|
32
|
Априори известно, что в R существуют функциональные зависимости:
А1→А2 и А2→АЗ.
Анализируя это отношение, можно увидеть, что в нем существуют еще зависимости:
A1→A3, А1А2→ A3, А1А2АЗ→А1А2,
А1А2→А2АЗ и т. п.
В то же время в отношении нет других функциональных зависимостей, что во введенных нами обозначениях можно отразить следующим образом:
А2 →А1, А3 →А1 и т.д.
Отсутствие зависимости А1 от А2 (A2 →Al) объясняется тем, что одному и тому же значению атрибута А2 (21) соответствуют разные значения атрибута А1 (12 и 17). Другими словами, имеет место многозначность, а не функциональность.
Перечислив все существующие функциональные зависимости в отношении R, получим полное множество функциональных зависимостей, которое обозначим F+.
Таким образом, для последнего примера исходное множество
F = (А1→А2, А2→A3), а полное множество F+ = (А1→А2, А2→A3, А1→A3, А1А2→A3, А1А2АЗ→А1А2, А1А2→А2АЗ, ...).
Для построения F+ из F необходимо знать ряд правил (или аксиом) вывода одних функциональных зависимостей из других.
Существует 8 основных аксиом вывода: рефлексивности, пополнения, транзитивности, расширения, продолжения, псевдотранзитивности, объединения и декомпозиции. Перечисленные аксиомы обеспечивают получение всех ФЗ, т. е. их совокупность применительно к процедуре вывода можно считать «функционально полной».
Выявим зависимости между атрибутами отношения ПРЕПОДАВАТЕЛЬ, приведенного на рис. 7.4. При этом учтем следующее условие, которое выполняется в данном отношении: один преподаватель в одной группе может проводить один вид занятий (лекции или лабораторные занятия).
В результате анализа отношения получаем зависимости между атрибутами, показанные на рис. 7.5.
а) б)
Рис. 7.5. Зависимости между атрибутами
К выделению этих ФЗ для рассматриваемого примера приводят следующие соображения.
Фамилия, имя и отчество у преподавателей факультета уникальны. Каждому преподавателю однозначно соответствует его стаж, т. е. имеет место функциональная зависимость ФИО→Стаж. Обратное утверждение неверно, так как одинаковый стаж может быть у разных преподавателей.
Каждый преподаватель имеет определенную добавку за стаж, т. е. имеет место функциональная зависимость ФИО→Д_Стаж, но обратная функциональная зависимость отсутствует, так как одну и ту же надбавку могут иметь несколько преподавателей.
Каждый преподаватель имеет определенную должность (преп., ст.преп., доцент, профессор), но одну и ту же должность могут иметь несколько преподавателей, т. е. имеет место функциональная зависимость ФИО→Должн, а обратная функциональная зависимость отсутствует.
Каждый преподаватель является сотрудником одной и только одной кафедры. Поэтому функциональная зависимость ФИО→Каф имеет место. С другой стороны, на каждой кафедре много преподавателей, поэтому обратной функциональной зависимости нет.
Каждому преподавателю соответствует конкретный оклад, который одинаков для всех педагогов с одинаковыми должностями, что учитывается зависимостями ФИО→Оклад и Должн→Оклад. Нет одинаковых окладов для разных должностей, поэтому имеет место функциональная зависимость Оклад→Должн.
Один и тот же преподаватель в одной группе по разным предметам может проводить разные виды занятий. Определение вида занятий, которые проводит преподаватель, невозможно без указания предмета и группы, поэтому имеет место функциональная зависимость ФИО, Предм, Группа→ВидЗан. Действительно, Лапин М.И. в Инф01 группе читает лекции и проводит практические занятия. Но лекции он читает по ИКТ, а практику проводит по С#.
Не были выделены зависимости между атрибутами ФИО, Предм и Группа, поскольку они образуют составной ключ и не учитываются в процессе нормализации исходного отношения.
После того, как выделены все функциональные зависимости, следует проверить их согласованность с данными исходного отношения ПРЕПОДАВАТЕЛЬ (рис. 7.4).
Например, Должн='преп' и Оклад=100000 всегда соответствуют друг другу во всех кортежах, т. е. подтверждается функциональная зависимость Должн↔Оклад. Так же следует верифицировать и остальные функциональные зависимости, не забывая об ограниченности имеющихся в отношении данных.
Достарыңызбен бөлісу: |