ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 23.11.2023
Просмотров: 104
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
3.4.4. Многозначные зависимости
Атрибут X многозначно определяет атрибут Y в R (или Y многозначно зависит от X), если каждому значению атрибута X соответствует множество (возможно, пустое) значений атрибута Y, никак не связанных с другими атрибутами R. То есть для наличия в отношении многозначной зависимости необходимо иметь как минимум три атрибута.
Многозначная зависимость обозначается двойной стрелкой: X→→Y.
Рассмотрим отношение Преподаватель(Номер,Имя_ребенка,Предмет, Должность). Предметная область накладывает следующие ограничения:
-
каждый преподаватель может иметь несколько детей, -
каждый преподаватель может вести несколько предметов, -
каждый преподаватель может занимать только одну должность, -
каждый предмет могут вести несколько преподавателей.
Тогда отношение Преподаватель имеет две многозначные зависимости и одну функциональную:
-
Номер→→Имя_ребенка, -
Номер→→Предмет, -
Номер→Должность.
Преподаватель | |||
Номер | Имя_ребенка | Предмет | Должность |
111 | Ольга | Алгебра | Доцент |
111 | Иван | Геометрия | Доцент |
111 | Ольга | Геометрия | Доцент |
111 | Иван | Алгебра | Доцент |
115 | Сергей | Алгебра | Профессор |
Отношение Преподаватель, во-первых, содержит избыточную информацию – должность преподавателя повторяется несколько раз. Во-вторых, оно не свободно от аномалий обновления: если у преподавателя появляется еще один ребенок, необходимо добавить в отношение не один кортеж, а столько, сколько предметов ведет этот преподаватель. Аналогично, при добавлении еще одного предмета требуется добавить столько кортежей, сколько детей имеет преподаватель. А если преподаватель не имеет детей, то информацию о том, какие предметы он ведет, вообще нельзя занести в отношение.
Для избавления от этих аномалий необходимо привести отношение к четвертой нормальной форме.
Отношение находится в четвертой нармальной форме (4НФ), если оно находится в нормальной форме Бойса–Кодда и в нем отсутствуют многозначные зависимости, которые не являются функциональными.
После приведения отношения Преподаватель к 4НФ мы получим три отношения:
Преподаватель_1(Номер, Должность),
Преподаватель_2(Номер, Имя_ребенка),
Преподаватель_3(Номер, Предмет).
Преподаватель_1 | | Преподаватель_2 | | Преподаватель_3 | |||
Номер | Должность | | Номер | Имя_ре-бенка | | Номер | Предмет |
111 | Доцент | | 111 | Ольга | | 111 | Алгебра |
115 | Профессор | | 111 | Иван | | 111 | Геометрия |
| | | 115 | Сергей | | 115 | Алгебра |
3.4.5. Свойства декомпозиции
После выполнения декомпозиции исходного отношения может случиться так, что информация, хранившаяся в исходном отношении, будет противоречить информации, хранящейся в полученных в результате декомпозиции отношениях. А при выполнении операции соединения получившихся в результате декомпозиции отношений появятся лишние кортежи или, наоборот, некоторые кортежи будут утеряны. Рассмотрим свойства декомпозиции.
Пусть исходная схема R с множеством функциональных зависимостей F была приведена в результате декомпозиции к схеме отношений R_1, R_2, … , R_k с множеством функциональных зависимостей F1, F2, … , Fk.
-
Декомпозиция обладает свойством соединения без потерь, если любое отношение r со схемой R удовлетворяет соотношению:
r(R) = πR_1(r) πR_2(r) πR_3(r) … πR_k(r).
-
Декомпозиция обладает свойством сохранения зависимостей, если из объединения всех зависимостей F1, F2, … , Fk можно вывести все зависимости F.
Две следующие теоремы говорят о том, какими свойствами будет обладать декомпозиция после нормализации отношений.
Теорема Всякая схема отношения R с множеством функциональных зависимостей F может быть приведена к декомпозиции в 3НФ с сохранением зависимостей и соединением без потерь.
Теорема Всякая схема отношения R с множеством функциональных зависимостей F и множеством многозначных зависимостей M может быть приведена к декомпозиции в 4НФ с соединением без потерь.
Таким образом, приведение схемы отношения к 3НФ гарантирует выполнение обоих свойств декомпозиции, это и будет ответом на вопрос, поставленный в начале раздела, о том, какая схема является хорошей.
3.5. Построение реляционной модели данных
От модели предметной области очень легко перейти к реляционной модели данных. Для этого нужно выполнить несколько последовательных действий:
-
Построить схемы отношения для классов объектов.
-
Для каждого класса объектов сформировать отдельное отношение, атрибутами которого будут свойства этого класса. Например, для объекта Студент можно составить следующую схему отношения:
Студент(ФИО, Курс, Год_рождения, Номер).
-
Далее, для каждого атрибута определить домен и привести отношение к первой нормальной форме. В данном примере необходимо заменить атрибут ФИО тремя атрибутами Фамилия, Имя, Отчество. -
Затем, нужно выделить в отношении ключ. В данном случае ключом будет атрибут Номер, так как номера зачетных книжек не дублируются.
Если ключ получается громоздким, то есть включает в себя много атрибутов или атрибут, имеющий в качестве домена длинную строку символов, то удобно ввести искусственный (суррогатный) ключ – новый атрибут с целочисленным доменом. Значения этого домена будут уникальными для каждого кортежа отношения.
-
Построив схемы отношений для каждого класса объектов, можно перейти к построению отношений для связей между объектами.-
Для связи схема отношения строится следующим образом: для каждого класса, участвующего в связи, из соответствующей ему схемы отношения ключевые атрибуты копируются в новое отношение; если связь имеет свойства, то они также включаются в схему как атрибуты. -
Ключом такого отношения, скорее всего, будут либо ключ одного из классов, входящих в связь, либо оба ключа вместе (для бинарной связи). Иногда бывает удобно ввести искусственный ключ.
-
Например, связь между классами Студент и Группа выльется в следующее отношение:
Группы(Студент, Номер_группы),
где атрибут Студент будет содержать номер зачетной книжки студента, который является ключом схемы отношения Студент, а Номер_группы – номер группы, в которой состоит студент. В этом отношении ключом будет атрибут Студент, так как, согласно предметной области, каждый студент состоит только в одной группе и в этом отношении не будет двух кортежей с одинаковыми номерами зачетных книжек. Подчеркнем здесь тот факт, что в схеме отношения для связи между классами объектов названия атрибутов, соответствующих ключам схем для классов объектов, необязательно должны совпадать с названиями соответствующих первичных атрибутов в схемах для классов объектов.
Во втором примере для связи между классами Товар и Поставщик схема отношения будет иметь следующий вид:
Поставки(Товар, Поставщик, Дата, Количество).
Это связь вида «многие-ко-многим», следовательно, в ключ должны входить и атрибут Товар и атрибут Поставщик. Но один и тот же поставщик может поставлять один и тот же товар несколько раз, следовательно, двух атрибутов для ключа недостаточно. Если в предметной области определено такое ограничение, что в один и тот же день поставщик не может поставить один и тот же товар, то тогда ключом будут три атрибута {Товар, Поставщик, Дата}. Если же этого ограничения нет, то в этом случае даже всех атрибутов будет недостаточно для определения ключа и необходимо ввести искусственный ключ (например, Номер_поставки или т. п.).
-
Схемы отношений, соответствующие связям между классами, будут иметь внешние ключи – атрибуты, соответствующие ключам схем классов, входящих в связь. Например, в отношении Поставки атрибут Товар будет внешним ключом, ссылающимся на отношение Товар, а атрибут Поставщик будет внешним ключом, ссылающимся на отношение Поставщик. -
Для атрибутов, соответствующих свойствам связи, необходимо определить домены.
-
При таком построении модели данных – из модели предметной области – отношения чаще всего будут сразу находиться в 3НФ. Исключением могут быть только составные атрибуты, нарушающие условия 1НФ, но, исправив их, вы получите 3НФ. -
Конечно, схема может получиться неоптимальной; например, связь, относящуюся к типу «один-ко-многим», в некоторых случаях бывает удобным не оставлять как отдельное отношение, а включить в схему отношения для класса объекта, который входил в связь со стороны «многие». Однако при перестроении схемы будьте внимательны, могут быть нарушены условия одной из нормальных форм.