4.1.2. Переход от ER-модели к реляционной.

Как неоднократно упоминалось ранее, реляционная модель удобна для реализации в СУБД (СУБД-ориентированная модель), но она неудобна для представления предметной области, поэтому часто инфологическое моделирование производят в ER-модели и пользуются следующими правилами трансформации схемы из ER-модели в реляционную:
A) Множество сущностей ER-модели становится отношением в реляционной модели, при этом сохраняются его атрибуты. Любой ключевой атрибут при этом объявляется так называемым первичным ключом (подробнее о понятии первичного ключа в следующем пункте), а при отсутствии первичный ключ определяется искусственно, например, им может быть порядковый номер кортежа в отношении.
Для удобства первичный ключ, как правило, записывается на первом месте.
B) Множества связей типа 1:1 и 1:М, не имеющие собственных атрибутов, реализуются путем копирования первичных ключей в отношение с кардинальным числом 1.
Таким образом, для множества связей 1:1 направление копирования ключей произвольное. В противном случае, копирование возможно только в одном направлении, так как иначе значение атрибута стало бы многозначным, т.е. было бы нарушено условие атомарности.
C) Множества связей типа M:N, а также множества связей степени>2, не имеющие собственных атрибутов, представляются в виде отношений, построенных на первичных ключах отношений, представляющих множества сущностей, входящих в эту связь.

При необходимости определяется искусственный первичный ключ вновь созданного отношения, например, как порядковый номер кортежа. Необходимость возникает при отсутствии ключевого атрибута.
D) Множества связей, имеющих собственные атрибуты, независимо от типа и степени представляются отношением, содержащим собственные атрибуты связи, а также первичные ключи отношений, представляющих множества сущностей, входящих в связи этого множества. При необходимости определяется искусственный первичный ключ вновь созданного отношения.
Примечание. Приведенные выше правила предполагают определение искусственных первичных ключей только в случае изначального отсутствия в отношении ключевого атрибута, однако часто с практической точки зрения удобно вводить искусственный первичный ключ в каждом отношении (стандартно он именуется id - от англ. «identificator»).
Пример. Трансформация схемы БД, представленной на следующей ER-диаграмме (рис. 18 — копия из главы 2):
 

Рис. 18. Пример ER-диаграммы

Переводим множества сущностей и получаем следующие отношения:
ФАКУЛЬТЕТЫ (название, ФИО_декана);
КАФЕДРЫ (название, ФИО_зав);
ПРЕПОДАВАТЕЛИ (ФИО, возраст, стаж).
Рассмотрим множества связей. По правилу «В» множество связей
СОСТОЯТЬ_ИЗ реализуется добавлением к отношению КАФЕДРЫ атрибута
назв_факультета, таким образом окончательно таблица КАФЕДРЫ имеет следую¬щую схему:
КАФЕДРЫ (название, ФИО_зав, назв_факультета).
По правилу «D» БЫТЬ_СОТР реализуется новым отношением:
БЫТЬ_СОТРУДНИКОМ (id, ФИО_преподавателя, назв_кафедры, з/п), где id - искусственный первичный ключ.
В случае если в каждое отношение добавлять искусственный первичный ключ id, то схема БД будет выглядеть следующим образом:
ФАКУЛЬТЕТЫ (id, название, ФИО_декана);
КАФЕДРЫ (id, название, ФИО_зав, id_факультета);
ПРЕПОДАВАТЕЛИ (id, ФИО, возраст, стаж);
БЫТЬ_СОТРУДНИКОМ (id, id_преподавателя, id_кафедры, з/п).
Обратим внимание на то, что в этом случае мы экономим память за счет ис¬пользования первичных ключей целочисленного типа.