Зависимости между полями реляционной таблицы

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

Различают три вида зависимостей:

· функциональная зависимость,

· транзитивная зависимость,

· многозначная зависимость.

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

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

Это означает, что во всех записях с одинаковым значением поля А поле В будет иметь также одно и то же значение. Например, в таблице Преподаватели (рис. 5.4) можно выделить ряд функциональных зависимостей: ФИОàКафедра, ФИОàДолжность, ФИОàРазряд и др.

ФИО Должность Разряд Кафедра Дисциплина Группа Вид занятий
Былина М.С. доцент ЛС СУБД МТ-81 Лекции
Дюбов А.С. ст. преп ЛС СУБД МТ-81 Лабораторные работы
Былина М.С. доцент ЛС ФООНС МТ-81 Лекции
Сергеев А.Н. доцент ЛС ФООНС МТ-81 Лабораторные работы
Патрик О.Г. профессор ЛС ФООНС М-92в Лекции
Матюхин А.Ю. доцент МСП МТС МТ-92 Лекции
Кожин В.С. доцент МСП МТС МТ-92 Курсовой проект

Рис. 5.4. Таблица ПРЕПОДАВАТЕЛИ

Разновидностями функциональной зависимости являются:

· функциональная взаимозависимость возникает, когда между полями А и В существует однозначной соответствие. В таблице Преподаватели функциональной взаимозависимостью связаны поля Должность и Разряд.

· частичной функциональной зависимостью называют зависимость неключевого атрибута от части составного ключа. В таблице Преподаватели первичный ключ состоит из полей ФИО, Дисциплина и Группа. Поле Должность находится в функциональной зависимости от поля ФИО, являющегося частью составного ключа. Значит поле Должность находится в частичной функциональной зависимости от первичного ключа.

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

Поле С транзитивно зависит от поля А (существует транзитивная зависимость), если для полей А, В, С выполняются условия АàВ и ВàС, но обратная зависимость отсутствует. В таблице на рис. 5.4 транзитивной зависимостью связаны поля: ФИОàДолжностьàРазряд.

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

В моем примере один преподаватель может преподавать несколько дисциплин, а каждая дисциплина может преподаваться несколькими преподавателями, то есть между полями ФИО и Дисциплина имеется многозначная зависимость.

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

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

В теории баз данных сформулированы аксиомы выявления новых функциональных зависимостей из уже выявленных. Пусть A, B и C являются (в общем случае, составными) полями некоторой таблицы R. Множества значений полей A, B и C могут иметь непустое пересечение (для краткости будем обозначать через AB A UNION B):

1. если B A, то A B (рефлексивность);

2. если A B, то AC BC (пополнение);

3. если A B и B C, то A C (транзитивность).

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

По практическим соображениям к этим трем аксиомам добавляют еще 5 аксиом, которые непосредственно следуют из этих трех:

4. A A (самодетерминированность);

5. если A BC, то A B и A C (декомпозиция);

6. если A B и A C, то A BC (объединение);

7. если A B и C D, то AC BD (композиция);

8. если A BC и B D, то A BCD (накопление).

Декомпозиция без потерь

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

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

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

На рис. 5.5 приведены возможные варианты декомпозиции таблицы ПРЕПОДАВАТЕЛИ.

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

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

Что же привело к тому, что одна декомпозиция является декомпозицией без потерь, а вторая – нет?

Исходная таблица ПРЕПОДАВАТЕЛИ

Номер преподавателя ФИО Должность Разряд Кафедра Дисциплина Группа Вид занятий
Былина М.С. доцент ЛС СУБД МТ-81 Лекции
Былина М.С. доцент ЛС СУБД МТ-81 Лабораторные работы
Былина М.С. доцент ЛС ФООНС МТ-81 Лекции
Дюбов А.С. ст. преп ЛС ФООНС МТ-81 Лабораторные работы
Патрик О.Г. профессор ЛС ФООНС М-92в Лекции
Матюхин А.Ю. доцент МСП МТС МТ-92 Лекции
Кожин В.С. доцент МСП МТС МТ-92 Курсовой проект

Декомпозиция таблицы ПРЕПОДАВАТЕЛИ. Вариант 1

Номер преподавателя ФИО Должность Разряд Кафедра
Былина М.С. доцент ЛС
Дюбов А.С. ст. преп ЛС
Патрик О.Г. профессор ЛС
Матюхин А.Ю. доцент МСП
Кожин В.С. доцент МСП

 

Номер преподавателя Дисциплина Группа Вид занятий
СУБД МТ-81 Лекции
СУБД МТ-81 Лабораторные работы
ФООНС МТ-81 Лекции
ФООНС МТ-81 Лабораторные работы
ФООНС М-92в Лекции
МТС МТ-92 Лекции
МТС МТ-92 Курсовой проект

Декомпозиция таблицы ПРЕПОДАВАТЕЛИ. Вариант 2

Номер преподавателя ФИО Должность Разряд Кафедра
Былина М.С. доцент ЛС
Дюбов А.С. ст. преп ЛС
Патрик О.Г. профессор ЛС
Матюхин А.Ю. доцент МСП
Кожин В.С. доцент МСП

 

Разряд Дисциплина Группа Вид занятий
СУБД МТ-81 Лекции
СУБД МТ-81 Лабораторные работы
ФООНС МТ-81 Лекции
ФООНС МТ-81 Лабораторные работы
ФООНС М-92в Лекции
МТС МТ-92 Лекции
МТС МТ-92 Курсовой проект

Рис. 5.5. Варианты декомпозиции таблицы ПРЕПОДАВАТЕЛИ

Это произошло потому, что в исходной таблице отсутствовали функциональные зависимости полей Разряд и Дисциплина, Разряд и Группа, Разряд и Вид занятий.

Для корректных декомпозиций сформулирована теорема Хита:

Пусть в таблице R имеются поля А, В и С (в общем случае – составные), пусть также существует функциональная зависимость АàВ. Тогда декомпозиция таблицы на проекции p(R,{A,B}) и p(R,{A,С}) будет корректной, то есть естественное соединение этих проекций позволит получить таблицу R.

Нормальные формы

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

Выделяют следующую последовательность нормальных форм:

· первая нормальная форма (1НФ);

· вторая нормальная форма (2НФ);

· третья нормальная форма (3НФ) и усиленная третья нормальная форма, или нормальная форма Бойса-Кодда (БКНФ);

· четвертая нормальная форма (4НФ);

· пятая нормальная форма (5НФ).

Первая нормальная форма. Таблица находится в 1НФ, если все ее поля являются простыми (имеют единственное значение). Исходные таблицы должны строиться таким образом, чтобы они были в 1НФ.

Вторая нормальная форма. Таблица находится в 2НФ, если она находится в 1НФ и каждое неключевое поле функционально полно зависит от первичного ключа (составного).

Третья нормальная форма. Таблица находится в 3НФ, если она находится в 2НФ и каждое неключевое поле нетранзитивно зависит от первичного ключа.

Существует и альтернативное определение. Таблица находится в 3НФ в том и только в том случае, если все неключевые поля таблицы взаимно независимы и полностью зависят от первичного ключа.