ER Method
ER Method
Сущность – это, как правило, существительное; связь чаще всего выражается глаголом.
Например, проектируется база данных издательства, предназначенная для хранения ин-
формации о книгах и авторах, которые их написали. Тогда два главных объекта (две сущности,
информация о которых должна быть отражена в базе данных) – это книга и автор. Эти сущно-
сти содержательно соединены с помощью связи пишет. Атрибуты сущности книга – это на-
звание, количество страниц, тираж, дата выхода сигнального экземпляра, цена и т.д. Атрибуты
сущности автор – это фамилия, адрес, телефон, №счета и т.д.
КНИГА
АВТОР
Название
Фамилия И.О.
Количество страниц
Адрес
Тираж
Телефон
Дата выхода
№счета
АВТОР КНИГА
В нашем примере в качестве ключевого атрибута сущности АВТОР было решено взять
фамилию, а в качестве ключевого атрибута сущности КНИГА взять её название. Первое реше-
ние заведомо не является бесспорным: возможно появление авторов-однофамильцев (тогда ат-
рибут Фамилия И.О. теряет уникальность и не может быть использован в качестве ключа). В
принципе, допустимо появление книг с одинаковыми названиями.
Если есть хотя бы минимальное подозрение, что атрибут, выбираемый в качестве ключе-
вого, может потерять свою уникальность, нужно отказаться от его использования в качестве
ключа и попытаться подобрать на эту роль другой атрибут.
Если окажется, что ни один содержательный атрибут не может быть использован как клю-
чевой, то существует (по меньшей мере) два способа решения этой проблемы:
• подобрать набор атрибутов, значения которых будут уникальными для каждого эк-
земпляра сущности;
• ввести еще один атрибут, который не будет отражать какое-либо свойство сущности,
но будет пригоден в качестве ключевого. Обычно таким атрибутом становится номер
экземпляра анализируемой сущности.
АВТОР КНИГА
Замечание: если при выборе атрибутов какой-либо сущности возникает желание опреде-
лить атрибут, название которого совпадает с названием другой сущности нашей предметной
области, то от такого атрибута надо отказаться. Наличие такого атрибута – это попытка зафик-
сировать связь между этими сущностями, но анализ связи еще не проведен и, возможно, она
должна быть реализована иначе.
Например, при выборе атрибутов сущности Книга очень хочется определить такой атри-
бут как Автор этой книги. Но у нас есть сущность Автор, поэтому связь сущности Книга с сущ-
ностью Автор будет реализована в результате анализа связи между этими сущностями.
2
Связь между двумя сущностями может быть представлена графически в виде ER-
диаграммы:
АВТОР КНИГА
1 n
АВТОР КНИГА
Таким образом, в этой диаграмме отражено правило: «каждую книгу пишет только один
автор, но каждый автор может писать несколько книг»; обязательность включения экземпляров
говорит о том, что в базе данных не будет информации об авторах, не пишущих ни одной кни-
ги, а также информации о книгах, которые пока никто не пишет.
АВТОР 1 n КНИГА
В этой диаграмме отражено правило: «каждую книгу пишет только один автор, каждый
автор может писать несколько книг либо не писать их вовсе», т.е. в базе данных допускается
наличие авторов, не пишущих ни одной книги, но нет информации о книгах, которые пока ни-
кто не пишет.
Для сущностей АВТОР - КНИГА возможны еще два типа связи один-ко-многим, отра-
жающих два оставшихся варианта обязательности включения экземпляров:
1 n
АВТОР КНИГА
3
«Каждую книгу может писать не более чем один автор; каждый автор может писать не-
сколько книг (но должен писать хотя бы одну)», т.е. в базе данных не будет информации об ав-
торах, которые не пишут ни одной книги, но допускается хранить информацию о книгах, кото-
рые еще никто не пишет.
1 n
АВТОР КНИГА
«Каждую книгу может писать не более чем один автор; каждый автор может писать не-
сколько книг либо не писать их вовсе», т.е. в базе данных допускается наличие авторов, не пи-
шущих сейчас ни одной книги, и наличие книг, которые еще никто не пишет.
1 n
КНИГА АВТОР
В этой диаграмме отражено правило: «каждую книгу пишут несколько авторов, каждый
автор должен писать только одну книгу»; обязательность включения экземпляров говорит о
том, что в базе данных не будет информации об авторах, не пишущих ни одной книги, а также
информации о книгах, которые пока никто не пишет.
Такой атрибут, предназначенный для фиксации связей между экземплярами двух сущно-
стей, называется вторичным ключом.
Пусть в нашем примере между сущностями АВТОР и КНИГА выявлена такая связь:
1 n
АВТОР КНИГА
4
либо такая:
АВТОР 1 n КНИГА
Автор
Номер автора Фамилия И.О. Адрес Телефон №счета
1 Орлов А.С. Москва, Лесная 34-1-75 263-67-89 21436587
2 Станов О.Т. Курск, Новая 23-56 23-45-12 65748392
3 Рыбаков И.И. Казань, Рыбная 2-34 34-54-12 98765430
4 Туманов П.Р. Москва, Стасовой 6-2-56 943-45-89 23894567
… ... … … …
Книга
Номер книги Название Кол-во страниц Тираж Дата выхода Автор
1 «Городок» 263 50000 15.03.2002 1
2 «Ранним утром» 450 30000 10.09.2003 2
3 «Рыжий» 341 45000 25.05.2002 1
… … … … … …
Атрибут Автор в таблице Книга – вторичный ключ, предназначенный для фиксации свя-
зей между экземплярами сущностей Автор и Книга. Значениями этого атрибута являются зна-
чения первичного ключа из таблицы Автор.
1 n
АВТОР КНИГА
и
1 n
АВТОР КНИГА
5
Автор
Номер автора Фамилия И.О. Адрес Телефон №счета
1 Орлов А.С. Москва, Лесная 34-1-75 263-67-89 21436587
2 Станов О.Т. Курск, Новая 23-56 23-45-12 65748392
3 Рыбаков И.И. Казань, Рыбная 2-34 34-54-12 98765430
… … … … …
Книга
Номер книги Название Кол-во страниц Тираж Дата выхода
1 «Городок» 263 50000 15.03.2002
2 «Ранним утром» 450 30000 10.09.2003
3 «Рыжий» 341 45000 25.05.2002
… … … … …
План издательства
Номер книги Номер автора Верстка
1 3 да
2 1 нет
3 3 нет
Внимание!!! Для контроля того, что у каждой книги есть только один автор (т.е. в поле
Номер книги не должно быть повторяющихся значений), при создании таблицы План издатель-
ства можно задать уникальность значений в поле Номер книги (в режиме конструктора).
Есть и второй вариант достижения той же цели: в таблице План издательства
поле Номер книги (вторичный ключ) можно описать как первичный. Таким образом, будет
включен контроль уникальности значений в этом поле.
n n
АВТОР КНИГА
Таким образом, в этой диаграмме отражено правило: «каждую книгу пишут несколько ав-
торов, каждый автор пишет несколько книг»; обязательность включения экземпляров говорит о
6
том, что в базе данных не будет информации об авторах, не пишущих ни одной книги, а также
информации о книгах, которые пока никто не пишет.
n n
АВТОР КНИГА
В этой диаграмме отражено правило: «каждую книгу пишут несколько авторов, каждый
автор может писать несколько книг либо не писать их вовсе», т.е. в базе данных допускается
наличие авторов, не пишущих ни одной книги, но нет информации о книгах, которые пока ни-
кто не пишет.
Для сущностей АВТОР - КНИГА возможны еще два типа связи многие-ко-многим, отра-
жающих два оставшихся варианта обязательности включения экземпляров:
n n
АВТОР КНИГА
«Каждую книгу может писать несколько авторов; каждый автор может писать несколько
книг (но должен писать хотя бы одну)», т.е. в базе данных не будет информации об авторах, ко-
торые не пишут ни одной книги, но допускается хранить информацию о книгах, которые еще
никто не пишет.
n n
АВТОР КНИГА
«Каждую книгу может писать несколько авторов; каждый автор может писать несколько
книг либо не писать их вовсе», т.е. в базе данных допускается наличие авторов, не пишущих
сейчас ни одной книги, и наличие книг, которые еще никто не пишет.
Автор
Номер автора Фамилия И.О. Адрес Телефон №счета
1 Орлов А.С. Москва, Лесная 34-1-75 263-67-89 21436587
2 Станов О.Т. Курск, Новая 23-56 23-45-12 65748392
3 Рыбаков И.И. Казань, Рыбная 2-34 34-54-12 98765430
… … … … …
7
Книга
Номер книги Название Кол-во страниц Тираж Дата выхода
1 «Городок» 263 50000 15.03.2002
2 «Ранним утром» 450 30000 10.09.2003
3 «Рыжий» 341 45000 25.05.2002
… … … … …
План издательства
Номер книги Номер автора Верстка
1 3 да
1 2 нет
2 3 нет
3 1 да
3 2 да
Связь ОДИН-К-ОДНОМУ:
Как прежде, если все экземпляры сущности должны участвовать в связи, то участие назы-
вается обязательным, и изображается на ER-диаграмме кружком, помещенным в блок, изобра-
жающий сущность (при словесной формулировке такой связи обычно используется глагол
«должен»):
1 1
АВТОР КНИГА
В этой диаграмме отражено правило: «каждый автор должен писать книгу, причем только
одну, и каждую книгу должен писать только один автор», т.е. в базе данных не будет информа-
ции об авторах, не пишущих ни одной книги, а также информации о книгах, которые пока ни-
кто не пишет.
Если не все экземпляры сущности должны участвовать в связи, то участие называется не-
обязательным, и кружок на ER-диаграмме располагается вне блока сущности (при словесной
формулировке такой связи обычно используется глагол «может»):
1 1
АВТОР КНИГА
В этой диаграмме отражено правило: «каждый автор может писать не более одной книги,
и каждую книгу должен писать только один автор», т.е. в базе данных допускается наличие ав-
8
торов, не пишущих ни одной книги, но нет информации о книгах, которые пока никто не пи-
шет.
Для сущностей АВТОР - КНИГА возможны еще два типа связи один-к-одному, отражаю-
щих два оставшихся варианта обязательности включения экземпляров:
1 1
АВТОР КНИГА
«Каждый автор должен писать книгу, причем только одну, и каждую книгу пишет не бо-
лее чем один автор (один или никто)», т.е. в базе данных не будет храниться информация об ав-
торах, которые в данный момент не пишут ни одной книги, но допускаются книги, которые еще
никто не пишет.
1 1
АВТОР КНИГА
«Каждый автор пишет не более одной книги, и каждая книга пишется не более чем одним
автором», т.е. в базе данных допускается наличие авторов, не пишущих сейчас ни одной книги,
и наличие книг, которые еще никто не пишет.
Пусть в нашем примере между сущностями АВТОР и КНИГА выявлена такая связь:
1 1
АВТОР КНИГА
Тогда в базе данных будет только одна таблица, отображающая свойства этих сущно-
стей:
План издательства
Номер Название Кол-во стр. Тираж Дата Фамилия автора Адрес Телефон №счета
1 «Городок» 263 50000 15.03.02 Орлов А.С. Москва 345-67-89 25348217632
2 «Ранним утром» 450 30000 10.09.03 Станов О.Т. Курск 34-23-78 56487392028
… … … … … … … … …
9
Правило 2: Если класс принадлежности одной сущности является обязательным, а другой –
необязательным, то необходимо построение двух таблиц. Под каждую сущность
необходимо выделить по таблице. При этом первичные ключи каждой из сущно-
стей должны быть ключами соответствующих таблиц. Кроме того, ключ сущно-
сти, для которой класс принадлежности является необязательным, добавляется в
качестве атрибута в таблицу, созданную для сущности с обязательным классом
принадлежности.
Пусть в нашем примере между сущностями АВТОР и КНИГА выявлена такая связь:
1 1
АВТОР КНИГА
В этом случае в базу данных будет включено две таблицы - по одной для каждой сущно-
сти. Поскольку класс принадлежности сущности АВТОР является необязательным, в таблицу
КНИГА добавляется еще один атрибут (вторичный ключ) – Автор, значениями которого будут
значения ключевого атрибута таблицы АВТОР.
Автор
Номер автора Фамилия И.О. Адрес Телефон №счета
1 Орлов А.С. Москва, Лесная 34-1-75 263-67-89 21436587
2 Станов О.Т. Курск, Новая 23-56 23-45-12 65748392
3 Рыбаков И.И. Казань, Рыбная 2-34 34-54-12 98765430
4 Туманов П.Р. Москва, Стасовой 6-2-56 943-45-89 23894567
… ... … … …
Книга
Номер книги Название Кол-во страниц Тираж Дата выхода Автор
1 «Городок» 263 50000 15.03.2002 1
2 «Ранним утром» 450 30000 10.09.2003 2
3 «Рыжий» 341 45000 25.05.2002 4
… … … … … …
Внимание!!! Для того чтобы контролировать то, что каждый автор связан только с одной
книгой (т.е. в таблице Книга в поле Автор не должно быть повторяющихся значений), при соз-
дании таблицы Книга необходимо задать уникальность значений в поле Автор (в режиме кон-
структора таблиц).
10
Автор
Номер автора Фамилия И.О. Адрес Телефон №счета
1 Орлов А.С. Москва, Лесная 34-1-75 263-67-89 21436587
2 Станов О.Т. Курск, Новая 23-56 23-45-12 65748392
3 Рыбаков И.И. Казань, Рыбная 2-34 34-54-12 98765430
… … … … …
Книга
Номер книги Название Кол-во страниц Тираж Дата выхода
1 «Городок» 263 50000 15.03.2002
2 «Ранним утром» 450 30000 10.09.2003
3 «Рыжий» 341 45000 25.05.2002
… … … … …
План издательства
Номер книги Номер автора Верстка
1 3 да
2 1 нет
3 2 нет
Внимание!!! Для контроля того, что у каждой книги есть только один автор, и каждый ав-
тор связан только с одной книгой (т.е. в полях Номер книги и Номер автора не должно быть по-
вторяющихся значений), при создании таблицы План издательства необходимо задать уникаль-
ность значений в полях Номер книги и Номер автора.
11
ПРИМЕР ПРИМЕНЕНИЯ МЕТОДА
Проектирование БД «Детали»
Постановка задачи:
12
Сущности изображаются в виде прямоугольника, атрибуты вписываются внутрь прямо-
угольника, изображающего сущность:
Для сущности Типы деталей в качестве первичного ключа можно взять атрибут Наимено-
вание, т.к. его значение уникально для каждого экземпляра этой сущности, следовательно, этот
атрибут можно использовать для идентификации экземпляра сущности.
Для сущностей Детали, Поставщики и Транспортные фирмы в качестве первичного ключа
приходится вводить дополнительный атрибут – номер экземпляра сущности, поскольку ни один
из содержательных атрибутов не является уникальным.
13
Определение связей между сущностями, степени этих связей и классов при-
надлежности, их фиксация с помощью ER-диаграмм, формирование таблиц
базы данных по ER-диаграммам
В связи Типы деталей <=> Детали степень связи «один-ко-многим», n-связная сущ-
ность имеет обязательный класс принадлежности => в соответствии с ER-методом достаточ-
но использовать две таблицы (по одной для каждой сущности); ключ каждой сущности
служит в качестве первичного ключа соответствующей таблицы. Кроме того, ключ 1-
связной сущности (Тип детали) должен быть добавлен как атрибут в таблицу, представ-
ляющую n-связную сущность (в таблицу Детали).
Но у нас в таблице Детали уже есть такой атрибут – Название (он и будет вторичным
ключом, соответствующим первичному ключу Наименование).
Типы деталей
Детали
n n
Детали Поставщики
14
В этой диаграмме отражено правило: «каждую деталь может поставлять несколько по-
ставщиков; каждый поставщик может поставлять несколько разных деталей; в базе данных до-
пускается наличие поставщиков, которые в данный момент еще/уже ничего не поставляют, и
наличие информации о деталях, которые еще/уже никто не поставляет».
Поставщики
Код
Фамилия И.О. Страна Город Адрес Телефон Надежность
пост
1 Орлов А.С. Россия Москва Лесная 34-1-75 263-67-89 10
2 Станов О.Т. Россия Курск Новая 23-56 23-45-12 35
3 Рыбаков И.И. Украина Ровно Рыбная 2-34 34-54-12 15
… … … … … … …
Детали
Код детали Название Вес Диаметр Металл Цвет
1 Гайка 20 50 Сталь Серый
2 Шайба 50 30 Сплав №1 Черный
3 Гайка 31 45 Латунь Желтый
… … … … … …
Поставки
Таким образом, таблицы Поставщики и Детали предназначены для хранения значений ат-
рибутов экземпляров соответствующих сущностей, а таблица Поставки – для реализации связи
между этими сущностями.
Таблица Поставки содержит два вторичных ключа: поле Кто соответствует первичному
ключу таблицы Поставщики, поле Что - первичному ключу таблицы Детали.
Кроме того, в таблицу-связку Поставки были добавлены дополнительные атрибуты, ха-
рактеризующие свойства каждой поставки: Сколько, Цена изделия, Цена доставки, Дата дос-
тавки, Оформлено. Очевидно, что это важная информация для анализируемой предметной об-
ласти, но она не могла появиться в качестве атрибутов ни в одной из рассмотренных ранее
сущностей. Например, информация о количестве поставляемых деталей (атрибут Сколько) не
может быть атрибутом сущности Детали, т.к. одну и ту же деталь разные поставщики могут по-
15
ставлять в разных количествах. Этот атрибут не может храниться и в таблице Поставщики как
атрибут конкретного поставщика, поскольку объемы поставок различных деталей одним по-
ставщиком могут быть разными. А появление такого атрибута в таблице Поставки логично:
конкретный поставщик конкретную деталь поставляет в определенном количестве.
Поставки
Транспортная фирма
Код Тип транспор-
Название Страна Город … Менеджер
фирмы та
1 Меридиан Россия Москва Hyundai Porter Соков И.Г.
2 Транс-Вектор Белоруссия Гродно Газель Рудин А.Р.
16
3 Rus Trans Broker Россия Москва Foton Ollin Боков Ф.А.
4 Коммивояжер Латвия Рига Mercedes Atego Липов А.А.
5 ТехноГрад Украина Донецк Бычок Седов П.Н.
В результате в таблице Поставки появился еще один вторичный ключ Транспорт, соот-
ветствующий первичному ключу таблицы Транспортные фирмы.
17