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