Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция8(ER_моделир).doc
Скачиваний:
7
Добавлен:
19.09.2019
Размер:
97.28 Кб
Скачать

8.2. Слабая сущность.

Связи могут сами становиться сущностями. Рассмотрим связь между Счет и Клиент. Предположим, что для совместно используемых счетов мы хотим фиксировать дату, когда конкретный клиент получил право пользоваться указанным счетом. Это означает, что теперь данная связь имеет некий атрибут Дата_регистрации, и ее следует представить как сущность (рис. 5). Связь с кардинальностью М-М заменена двумя связями с кардинальностью 1-М. Это отражает тот факт, что Счет может иметь много регистраций (по одной для каждого конкретного клиента), и Клиент также может иметь много регистраций (по одной для каждого конкретного счета). Прямоугольник, в котором заключена сущность Регистрация, нарисован двойной линией, чтобы показать, что данная сущность относится к специальному типу, который называется слабая сущность.

С лабая сущность не может существовать независимо, ее существование возможно только при наличии связей, в которых она принимает участие. Сущность Регистрация не может существовать сама по себе; для ее существования необходима связь между неким счетом и клиентом.: Для создания уникального идентификатора слабой сущности можно использовать сущности-участники. В нашем случае можно идентифицировать Регистрация с помощью комбинации Номер_счета и Номер_клиента. Слабая сущность может иметь и собственные атрибуты.

Рис. 5. Слабая сущность

Одна из проблем ЕR-моделирования заключается в том, что далеко не всегда очевидно, как следует представить в модели определенный элемент — сущностью или атрибутом.

8.3. Преобразование er-модели в реляционную базу данных

В этой главе мы опишем, как базу данных, разработанную с использованием модели сущность-связь, можно реализовать в виде реляционной базы данных. В настоящее время широко практикуется следующий подход: сначала посредством ЕR-моделирования создается семантическая модель реляционной базы данных, затем она преобразуется с помощью описанных в данной главе методов во множество отношений, после чего для уточнения полученного в результате проекта используется нормализация.

Преобразование ЕR-модели в реляционную базу данных можно представить в виде следующей последовательности шагов.

1. Для каждой сильной сущности ЕR-модели создается базовое отношение, причем каждому простому атрибуту этой сущности соответствует столбец таблицы. Ключевой атрибут сущности становится первичным ключом отношения.

На рис. 2 представлены три сущности: Филиал, Клиент и Счет. Для каждой из них нужно создать отношение. В таблице Филиал будут следующие столбцы: Название_филиала, Адрес и Менеджер, причем первичным ключом будет Название_филиала. В таблице Счет будет два столбца, Номер_счета и Баланс, а первичным ключом будет Номер_счета.

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

2. Для каждой слабой сущности создается отношение, состоящее из всех простых атрибутов этой сущности и дополнительных столбцов первичных ключей сущностей, от которых зависит ее существование.

На рис. 5 представлена слабая сущность Регистрация, имеющая один простой атрибут Дата_регистрации. Эта сущность участвует в связях с Клиент и Счет. Следовательно, нужно включить в отношение Регистрация столбцы Номер_счета и Номер_клиента, указывающие, к каким счету и клиенту относится регистрационная запись. Таким образом, каждый кортеж отношения Регистрация будет состоять из трех столбцов: Номер_счета, Номер_клиента, Дата_регистрации. Эти внешние ключи необходимы, так как, по определению, слабая сущность не может существовать независимо. Она должна иметь явные связи с теми сущностями, от которых зависит. В реляционной базе данных такие связи задаются с помощью внешних ключей. В нашем случае рассматриваемая сущность к тому же не имеет первичного ключа. В такой ситуации первичным ключом становится комбинация внешних ключей сущностей, от которых зависит эта слабая сущность. Таким образом, ключ отношения Регистрация — это составной ключ, включающий Номер_счета и Номер_клиента.