Шаг 1. Каждая простая сущность превращается в таблицу. Простая сущность - сущность, не являющаяся подтипом и не имеющая подтипов. Имя сущности становится именем таблицы.
Шаг 2. Каждый атрибут становится возможным столбцом с тем же именем; может выбираться более точный формат. Столбцы, соответствующие необязательным атрибутам, могут содержать неопределенные значения; столбцы, соответствующие обязательным атрибутам, - не могут.
Шаг 3. Компоненты уникального идентификатора сущности превращаются в первичный ключ таблицы. Если имеется несколько возможных уникальных идентификатора, выбирается наиболее используемый. Если в состав уникального идентификатора входят связи, к числу столбцов первичного ключа добавляется копия уникального идентификатора сущности, находящейся на дальнем конце связи (этот процесс может продолжаться рекурсивно). Для именования этих столбцов используются имена концов связей и/или имена сущностей.
Шаг 4. Связи многие-к-одному (и один-к-одному) становятся внешними ключами. Т.е. делается копия уникального идентификатора с конца связи "один", и соответствующие столбцы составляют внешний ключ. Необязательные связи соответствуют столбцам, допускающим неопределенные значения; обязательные связи - столбцам, не допускающим неопределенные значения.
|
|
Шаг 5. Индексы создаются для первичного ключа (уникальный индекс), внешних ключей и тех атрибутов, на которых предполагается в основном базировать запросы.
Шаг 6. Если в концептуальной схеме присутствовали подтипы, то возможны два способа:
- все подтипы в одной таблице (а)
- для каждого подтипа - отдельная таблица (б).
При применении способа (а) таблица создается для наиболее внешнего супертипа, а для подтипов могут создаваться представления. В таблицу добавляется по крайней мере один столбец, содержащий код ТИПА; он становится частью первичного ключа. При использовании метода (б) для каждого подтипа первого уровня (для более нижних - представления) супертип воссоздается с помощью представления UNION (из всех таблиц подтипов выбираются общие столбцы - столбцы супертипа) – Таблица 1.8:
Таблица 1.8 Особенности расположения подтипов в одной или в нескольких таблицах
Все в одной таблице | Таблица - на подтип |
Преимущества | |
Все хранится вместе; Легкий доступ к супертипу и подтипам; Требуется меньше таблиц. | Более ясны правила подтипов; Программы работают только с нужными таблицами. |
Недостатки | |
Слишком общее решение; Требуется дополнительная логика работы с разными наборами столбцов и разными ограничениями; Потенциальное узкое место (в связи с блокировками); Столбцы подтипов должны быть необязательными; В некоторых СУБД для хранения неопределенных значений требуется дополнительная память. | Слишком много таблиц; Смущающие столбцы в представлении UNION; Потенциальная потеря производительности при работе через UNION; Над супертипом невозможны модификации. |
Шаг 7. Имеется два способа работы при наличии исключающих связей (Таблица 1.9):
|
|
- общий домен (а)
- явные внешние ключи (б)
Таблица 1.9 Способы работы при наличии исключающих связей
Общий домен | Явные внешние ключи |
Преимущества | |
Нужно только два столбца | Условия соединения - явные |
Недостатки | |
Оба дополнительных атрибута должны использоваться в соединениях | Слишком много столбцов |