Нормализация отношений
Нормализация отношений – это приведение отношений к виду, позволяющему устранить дублирование, обеспечить непротиворечивость данных, хранимых в БД, и уменьшить трудозатраты на ведение БД.
Выделяют три нормальные формы отношений.
Первая нормальная форма. Отношение называется нормализованным или приведенным к первой нормальной форме, если все его атрибуты являются простыми, то есть не могут быть далее разделены.
Например, отношение
КНИГА = (АВТОР, НАЗВАНИЕ, ВЫХОДНЫЕ ДАННЫЕ)
не находится в первой нормальной форме, так как атрибут ВЫХОДНЫЕ ДАННЫЕ можно разделить на атрибуты ИЗДАТЕЛЬСТВО, ГОД, КОЛИЧЕСТВО СТРАНИЦ.
Отношение
СТУДЕНТ = (НОМЕР, ФАМИЛИЯ, ИМЯ, ОТЧЕСТВО, ГРУППА)
находится в первой нормальной форме, где поле НОМЕР является простым первичным ключом.
Вторая нормальная форма. Отношение приведено ко второй нормальной форме, если оно находится в первой нормальной форме, и каждый неключевой атрибут функционально полно зависит от составного ключа.
Функционально полной зависимостью неключевых атрибутов называется зависимость, при которой в записи определенному значению ключа соответствует только одно значение неключевого поля, при этом это поле не находится в функциональной зависимости ни от какой части составного ключа.
Например, отношение СТУДЕНТ находится в первой и второй нормальных формах.
Отношение
УСПЕВАЕМОСТЬ = (НОМЕР, ФАМИЛИЯ, ДИСЦИПЛИНА, ОЦЕНКА)
находится в первой нормальной форме и имеет составной ключ НОМЕР + ДИСЦИПЛИНА. Это отношение не находится во второй нормальной форме, так как атрибут ФАМИЛИЯ функционально зависим от поля НОМЕР составного ключа. Чтобы привести это отношение ко второй нормальной форме необходимо разбить его на два связанных отношения:
УСПЕВАЕМОСТЬ = (НОМЕР, ДИСЦИПЛИНА, ОЦЕНКА),
СПИСОК = (НОМЕР, ФАМИЛИЯ).
Связь между отношениями осуществляется по полю НОМЕР.
Третья нормальная форма. Отношение находится в третьей нормальной форме, если оно находится во второй нормальной форме, и каждый неключевой атрибут не зависит от ключа транзитивно.
Транзитивная зависимость присутствует в отношении, если существует два неключевых поля, первое из которых зависит от ключа, а второе от первого.
Например, отношение СТУДЕНТ находится в третьей нормальной форме.
Отношение
ДИСЦИПЛИНА = (НАЗВАНИЕ, ЛЕКТОР, УЧ_СТЕПЕНЬ, ГРУППА)
не находится в третьей нормальной форме, так как поле УЧ_СТЕПЕНЬ зависит от поля ЛЕКТОР, но не от составного ключа, поэтому отношение необходимо разбить на два связанных отношения
ДИСЦИПЛИНА = (НАЗВАНИЕ, ЛЕКТОР, ГРУППА),
ПРЕПОДАВАТЕЛЬ = (ЛЕКТОР, УЧ_СТЕПЕНЬ).
Связь между отношениями осуществляется по полю ЛЕКТОР.
Типы связей
Отношения могут быть связаны следующими типами связей:
- один-к-одному (1:1);
- один-ко-многим (1:M);
- многие-ко-многим (M:M).
Рассмотрим сущность этих связей на примере следующих отношений. Пусть книга в библиотеке описывается отношением
КНИГА = (КНИГА_N, АВТОР_N, НАЗВАНИЕ, ИЗДАТЕЛЬСТВО_N).
Каждая книга имеет место на полке
МЕСТО = (МЕСТО_N, КНИГА_N).
Каждая книга выпускается издательством
ИЗДАТЕЛЬСТВО = (ИЗДАТЕЛЬСТВО_N, АДРЕС).
У каждой книги есть автор
АВТОР = (АВТОР_N, ФАМИЛИЯ, ИМЯ, ОТЧЕСТВО).
Связь один-к-одному означает, что в каждый момент времени одной записи отношения A соответствует только одна запись отношения B и наоброт. Например, каждая книга имеет одно место на полке и на каждом месте стоит только одна книга
.
Связь между отношениями осуществляется по полю КНИГА_N.
Связь один-ко-многим предполагает, что одной записи отношения A соответствуют несколько записей отношения B, но одной записи отношения B соответствуют только одна запись отношения A. Например, одно издательство может издать несколько книг, но книга издается только одним издательством.
.
Связь между отношениями осуществляется по полю ИЗДАТЕЛЬСТВО_N.
При связи многие-ко-многим одной записи отношения A соответствуют несколько записей отношения B и наоборот. Например, один автор может написать несколько книг, и у книги может быть несколько авторов
.
Связь между отношениями осуществляется по полю АВТОР_N.
Дата добавления: 2019-04-03; просмотров: 316;