Файл: Учебное пособие Введение.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 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.

  1. Декомпозиция обладает свойством соединения без потерь, если любое отношение r со схемой R удовлетворяет соотношению:


r(R) = πR_1(r)  πR_2(r)  πR_3(r)  πR_k(r).

  1. Декомпозиция обладает свойством сохранения зависимостей, если из объединения всех зависимостей F1, F2, … , Fk можно вывести все зависимости F.

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

Теорема Всякая схема отношения R с множеством функциональных зависимостей F может быть приведена к декомпозиции в 3НФ с сохранением зависимостей и соединением без потерь.

Теорема Всякая схема отношения R с множеством функциональных зависимостей F и множеством многозначных зависимостей M может быть приведена к декомпозиции в 4НФ с соединением без потерь.

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

3.5. Построение реляционной модели данных


От модели предметной области очень легко перейти к реляционной модели данных. Для этого нужно выполнить несколько последовательных действий:

  1. Построить схемы отношения для классов объектов.

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

Студент(ФИО, Курс, Год_рождения, Номер).

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

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

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


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

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

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

Например, связь между классами Студент и Группа выльется в следующее отношение:

Группы(Студент, Номер_группы),

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

Во втором примере для связи между классами Товар и Поставщик схема отношения будет иметь следующий вид:

Поставки(Товар, Поставщик, Дата, Количество).

Это связь вида «многие-ко-многим», следовательно, в ключ должны входить и атрибут Товар и атрибут Поставщик. Но один и тот же поставщик может поставлять один и тот же товар несколько раз, следовательно, двух атрибутов для ключа недостаточно. Если в предметной области определено такое ограничение, что в один и тот же день поставщик не может поставить один и тот же товар, то тогда ключом будут три атрибута {Товар, Поставщик, Дата}. Если же этого ограничения нет, то в этом случае даже всех атрибутов будет недостаточно для определения ключа и необходимо ввести искусственный ключ (например, Номер_поставки или т. п.).

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

    2. Для атрибутов, соответствующих свойствам связи, необходимо определить домены.

  1. При таком построении модели данных – из модели предметной области – отношения чаще всего будут сразу находиться в 3НФ. Исключением могут быть только составные атрибуты, нарушающие условия 1НФ, но, исправив их, вы получите 3НФ.

  2. Конечно, схема может получиться неоптимальной; например, связь, относящуюся к типу «один-ко-многим», в некоторых случаях бывает удобным не оставлять как отдельное отношение, а включить в схему отношения для класса объекта, который входил в связь со стороны «многие». Однако при перестроении схемы будьте внимательны, могут быть нарушены условия одной из нормальных форм.