2) Связь 1:М – в этом случае 1 связанная сущность выступает в роли главной (родительской), а вторая в роли подчиненной (дочерней).
Эта связь каждому кортежу родительской сущности ставит в соответствие любое число (даже 0) кортежей дочерней сущности. Однако каждый кортеж дочерней сущности м. б. связан только с одним кортежем родительской сущности.
М:М - эта связь каждому кортежу 1-ой сущности ставит в соответствие любое (в т. ч. 0) число кортежей 2-ой сущности и наоборот.
Связь 1:М – в этом случае 1 связанная сущность выступает в роли главной (родительской), а вторая в роли подчиненной (дочерней).
Эта связь каждому кортежу родительской сущности ставит в соответствие любое число (даже 0) кортежей дочерней сущности. Однако каждый кортеж дочерней сущности м. б. связан только с одним кортежем родительской сущности.
Механизм реализации связи 1:М заключается в том, что в дочернюю сущность добавляются атрибуты, дублирующие ключевые атрибуты родительской сущности. Эти атрибуты получают название «первичного ключа» и с их помощью становится возможной связь между кортежами родительской сущности с одной стороны и подмножеством кортежей дочерней сущности, с другой стороны. Еще такие атрибуты называют мигрирующими.
Если
дочерняя сущность является независимой
от родительской сущности, то мигрирующие
атрибуты включаются в качестве первичного
ключа дочерней сущности. В противном
случае, они включаются в состав ее
неключевых атрибутов.
Связь 1:М является самая распространённая и позволяет моделировать иерархические структуры данных.
Свойства внешнего ключа:
Внешний ключ как и первичный может быть как простым, так и составным.
Внешний ключ основан на тех же доменах, что и соотв. ему первичный ключ родительской сущности, но имена первичного и родительского ключа не обязательно должны совпадать.
Внешний ключ, как правило, не является уникальным, т. е. ключ родительской сущности может ссылаться на несколько кортежей дочерней сущности. В противном случае связь 1:1.
Каждое значение внешнего ключа должно совпадать со значением первичного ключа некоторого кортежа родительской сущности. Однако обратное неверно.
Для внешнего ключа допускается, чтобы он был частью некоторого возможного ключа дочерней сущности.
При установлении связи "многие ко многим" каждой строке таблицы А может соответствовать множество строк таблицы Б и наоборот. Такая связь создается при помощи третьей таблицы, называемой соединительной, первичный ключ которой состоит из внешних ключей, связанных с таблицами А и Б. Например, между таблицами "Авторы" и "Книги" установлена связь вида "многие ко многим", задаваемая с помощью связей вида "один ко многим" между каждой из этих таблиц и таблицей "АвторыКниг". Первичный ключ таблицы "АвторыКниг" - это сочетание столбцов "ИД_автора" (первичного ключа таблицы авторов) и "ИД_книги" (первичного ключа таблицы заголовков).
Преобразование связи «многие-ко-многим»
Как
известно, связи M:M между таблицами баз
данных в реляционной модели не
поддерживаются. Если при создании связи
M:M в логической модели в меню Model/Model
Properties была отмечена позиция Many-to-Many
Relationships with Association Table, топри переходе к
физической модели вместо связи M:M будет
создана связующая таблица, с которой
таблицы, соответствующие сущностям,
связанным отношением M:M, будут связаны
обычной для реляционных моделей связью
1:M.
Полученную таблицу можно переименовать, назвав ее, например, «Владение предметом». Если при создании связи M:M в логической модели в меню Model/Model Properties позиция Many-to-Many Relationships with Association Table не была отмечена, то при переходе к физической модели связующая таблица создана не будет. Если все-таки надо, чтобы такая таблица была создана (а в подавляющем большинстве случаев это именно так), то можно воспользоваться возможностью трансформации модели. Для этого надо выделить связь и нажать на кнопку Many to Many Transform. И далее, следуя подсказкам системы, надо задать имя создаваемой связующей таблицы и имя трансформации. В процессе создании ER-модели может возникнуть ситуация, что, уточняя и расширяя модель, в связующую таблицу будут введены дополнительные колонки (т.е. для связи будут заданы характеризующие ее свойства).
Эта связь каждому кортежу 1-ой сущности ставит в соответствие любое (в т. ч. 0) число кортежей 2-ой сущности и наоборот.
В отличии от связей 1:1 и 1:M, связь М:М трудно реализовать в физической модели данных, поэтому эту связь при переходе к физической модели преобразуют в 2 связи 1:М путем создания доп. сущностей. Последняя снабжается первичным ключом, составленным из ключей исходных сущностей.
Нормализация – процесс проверки и организации сущностей, в результате которых устраняются избыточные копии данных и тем самым устраняется возможность появления противоречивых данных, т. к. информация о факте должна храниться в одном месте.
Процесс нормализации – постепенное приведение сущности к нормальным формам
Определение 1: Атрибут Б сущности функционально зависит от А этой же сущности, если каждому значению атрибута А соответствует точно 1 значение атрибута Б. (А однозначно определяет В).
Определение 2: Если между атрибутами А и Б одной сущности отсутствует функциональная зависимость, однако атрибут А ограничивает диапазон изменения атрибута Б некоторым числом определенных значений, то говорят, что между такими атрибутами существует многозначная зависимость.
Определение 3: Функциональная многозначная зависимость между атрибутами не выводится из структуры сущности, т. к. это сематическое понятие, отражающее существование дополнительных ограничений на данные, представленные сущностью.
Сущность находится в первой нормальной форме, если все ее атрибуты являются простыми (атомарными, их нельзя разделить без потери смысла) и среди атрибутов отсутствуют повторяющиеся группы. Так же не допускается хранить в одном атрибуте разные по смыслу значения.
Для приведения сущности к первой нормальной форме необходимо:
Разделить сложные атрибуты на атомарные
Для групп повторяющихся атрибутов создать новую сущность
Установить с новыми сущностями связи 1:М
Разделить атрибуты, хранящие разную смысловую информацию, на односмысловые
Нормализация – процесс проверки и организации сущностей, в результате которых устраняются избыточные копии данных и тем самым устраняется возможность появления противоречивых данных, т. к. информация о факте должна храниться в одном месте.
Процесс нормализации – постепенное приведение сущности к нормальным формам
Сущность находится во второй нормальной форме, если она находится в первой нормальной форме и в ней отсутствуют неключевые атрибуты, зависящие от части первичного ключа.
Если сущность имеет простой первичный ключ (1 атрибут) и находится в 1 нормальной форме, то она автоматически находится и во 2 нормальной форме.
Для приведения сущности ко 2-ой нормальной форме необходимо:
Выделить неключевые атрибуты, зависящие от одной и той же части первичного ключа
Поместить эти атрибуты в новую сущность
Установить с новой сущностью связи типа 1:М
Повторить указанные выше действия, если это возможно
Приведение ко 2-ой нормальной форме позволяет избежать следующих аномалий:
Аномалия вставки: невозможно ввести данные о сотруднике, если он в данный момент не руководит ни одним проектом
Аномалия обновлений: если сотрудник руководит несколькими проектами и данные о сотруднике меняются, то необходимо корректировать несколько кортежей сущности проекта. Если выполнить нормализацию, то достаточно ввести изменения лишь в 1 кортеж сущности сотрудника.
Аномалия удаления: если сотрудник временно прекращает руководство проекта, то данные о нем теряются
Причиной этих аномалий является избыточность данных, обусловленная тем, что в одной сущности хранится разнородная информация (о проектах и сотрудниках), а это, в свою очередь, говорит о неадекватности модели данных той предметной области, которая исследуется и моделируется. БД, основанная на такой модели будет работать неправильно.
Нормализация – процесс проверки и организации сущностей, в результате которых устраняются избыточные копии данных и тем самым устраняется возможность появления противоречивых данных, т. к. информация о факте должна храниться в одном месте.
Процесс нормализации – постепенное приведение сущности к нормальным формам.
Сущность находится в 3-й нормальной форме, если она находится во 2-й нормальной форме, и между ее не ключевыми атрибутами отсутствует функциональная зависимость.
Сущность находится в 3-й нормальной форме, если она находится во 2-й и каждый ее неключевой атрибут нетранзитивно зависит от первичного ключа.
Транзитивная зависимость:
Т. о. можно сказать, что в 3-й нормальной форме, каждый неключевой атрибут функционально зависит только от всего первичного ключа и ни от чего другого.
Для приведения сущности к 3-й нормальной форме необходимо:
Выделить неключевые атрибуты, которые функционально зависят от одного и того же неключевого атрибута
Поместить эти атрибуты в новую сущность
Установить в новой сущности связь типа 1:М
Повторить указанные выше действия, если это возможно
После приведения в 3-й нормальной форме получим:
Приведение в 3-й форме позволяет избежать след. аномалий:
Аномалия вставки: невозможно ввести данные об окладе, если соответствующую должность не занимает ни один сотрудник
Если должность занимает несколько сотрудников и оклад по должности меняется, то необходимо корректировать несколько кортежей сущности сотрудник; если выполнить нормализацию, то достаточно внести изменения лишь в 1 кортеж сущности должность.
Если удалить сотрудника, занимающего уникальную должность, то данные об окладе теряется.
Причиной этих аномалий является избыточность данных, обусловленная тем, что в одной и той же сущности сотрудник хранится информация и о сотрудниках и о должностных окладах.
Нормальная форма Кодда-Бойса требует, чтобы любой неключевой атрибут зависел только от возможного ключа.
Т. о. форма Кодда-Бойса запрещает функциональную зависимость между неключевыми атрибутами и альтернативными ключами, но разрешает из между неключевыми атрибутами и альтернативными ключами.
Если сущность имеет только один возможный ключ, то нормальная форма Кодда-Бойса совпадает с 3-й нормальной формой.