
- •Лекция №8. Тема: «er-моделирование»
- •8.1. Определение сущностей и связей. Построение er-модели.
- •8.2. Слабая сущность.
- •8.3. Преобразование er-модели в реляционную базу данных
- •2. Для каждой слабой сущности создается отношение, состоящее из всех простых атрибутов этой сущности и дополнительных столбцов первичных ключей сущностей, от которых зависит ее существование.
- •3. Когда две сущности участвуют в связи один-ко-многим (1-м), отношение, представляющее сущность с кардинальностью м, должно иметь столбец внешнего ключа, представляющий эту связь.
- •4. Когда две сущности участвуют в связи один-к-одному (1-1), в отношение, представляющее одну из этих сущностей, необходимо включить столбец внешнего ключа.
- •5. Если две сущности участвуют в связи многие-ко-многим (м-м), необходимо создать отношение из внешних ключей двух отношений, представляющих сущности-участники.
- •7. Если в связи участвует более двух сущностей, необходимо создать отношение, состоящее из внешних ключей всех отношений, представляющих сущности-участники.
8.2. Слабая сущность.
Связи могут сами становиться сущностями. Рассмотрим связь между Счет и Клиент. Предположим, что для совместно используемых счетов мы хотим фиксировать дату, когда конкретный клиент получил право пользоваться указанным счетом. Это означает, что теперь данная связь имеет некий атрибут Дата_регистрации, и ее следует представить как сущность (рис. 5). Связь с кардинальностью М-М заменена двумя связями с кардинальностью 1-М. Это отражает тот факт, что Счет может иметь много регистраций (по одной для каждого конкретного клиента), и Клиент также может иметь много регистраций (по одной для каждого конкретного счета). Прямоугольник, в котором заключена сущность Регистрация, нарисован двойной линией, чтобы показать, что данная сущность относится к специальному типу, который называется слабая сущность.
С
лабая
сущность не может существовать независимо,
ее существование возможно только при
наличии связей, в которых она принимает
участие. Сущность Регистрация не может
существовать сама по себе; для ее
существования необходима связь между
неким счетом и клиентом.: Для создания
уникального идентификатора слабой
сущности можно использовать
сущности-участники. В нашем случае можно
идентифицировать Регистрация с помощью
комбинации Номер_счета и Номер_клиента.
Слабая сущность может иметь и собственные
атрибуты.
Рис. 5. Слабая сущность
Одна из проблем ЕR-моделирования заключается в том, что далеко не всегда очевидно, как следует представить в модели определенный элемент — сущностью или атрибутом.
8.3. Преобразование er-модели в реляционную базу данных
В этой главе мы опишем, как базу данных, разработанную с использованием модели сущность-связь, можно реализовать в виде реляционной базы данных. В настоящее время широко практикуется следующий подход: сначала посредством ЕR-моделирования создается семантическая модель реляционной базы данных, затем она преобразуется с помощью описанных в данной главе методов во множество отношений, после чего для уточнения полученного в результате проекта используется нормализация.
Преобразование ЕR-модели в реляционную базу данных можно представить в виде следующей последовательности шагов.
1. Для каждой сильной сущности ЕR-модели создается базовое отношение, причем каждому простому атрибуту этой сущности соответствует столбец таблицы. Ключевой атрибут сущности становится первичным ключом отношения.
На рис. 2 представлены три сущности: Филиал, Клиент и Счет. Для каждой из них нужно создать отношение. В таблице Филиал будут следующие столбцы: Название_филиала, Адрес и Менеджер, причем первичным ключом будет Название_филиала. В таблице Счет будет два столбца, Номер_счета и Баланс, а первичным ключом будет Номер_счета.
Если ключ составной, то для каждой его части создается отдельный столбец, а затем этот набор столбцов объявляется первичным ключом отношения.
2. Для каждой слабой сущности создается отношение, состоящее из всех простых атрибутов этой сущности и дополнительных столбцов первичных ключей сущностей, от которых зависит ее существование.
На рис. 5 представлена слабая сущность Регистрация, имеющая один простой атрибут Дата_регистрации. Эта сущность участвует в связях с Клиент и Счет. Следовательно, нужно включить в отношение Регистрация столбцы Номер_счета и Номер_клиента, указывающие, к каким счету и клиенту относится регистрационная запись. Таким образом, каждый кортеж отношения Регистрация будет состоять из трех столбцов: Номер_счета, Номер_клиента, Дата_регистрации. Эти внешние ключи необходимы, так как, по определению, слабая сущность не может существовать независимо. Она должна иметь явные связи с теми сущностями, от которых зависит. В реляционной базе данных такие связи задаются с помощью внешних ключей. В нашем случае рассматриваемая сущность к тому же не имеет первичного ключа. В такой ситуации первичным ключом становится комбинация внешних ключей сущностей, от которых зависит эта слабая сущность. Таким образом, ключ отношения Регистрация — это составной ключ, включающий Номер_счета и Номер_клиента.