Моделирование баз данных. Учебное пособие
.pdf
Инфологическая модель
|
|
|
|
|
|
|
|
Информационные |
|
Описание объектов |
|
|
Алгоритмические |
||
потребности |
|
и связей с помощью |
|
зависимости |
|||
пользователя |
|
ER-модели |
|
|
показателей |
||
|
|
|
|
|
|
||
|
Лингвистические |
Ограничения |
|||||
|
|
отношения |
|
целостности |
|||
Рис. 2. Компоненты инфологической модели
Центральной компонентой инфологической модели является ER-модель, описывающая объекты предметной области и связи между ними. Для описания ER-модели используют как языковые, так и графические средства. Объекты, имеющие одинаковый набор свойств, группируются в классы объектов со своими идентификаторами: объект, свойство, связь.
Рис. 3 иллюстрирует использование ER-модели при проектировании баз данных [3]. Процесс проектирования базы данных обычно начинается с изучения понятий и описаний информации, подлежащей моделированию. Затем разрабатывается структура базы данных посредством инструментов, предлагаемых ER-моделью или некоторой объектной моделью.
Далее ER-проект должен быть преобразован в схему, выраженную средствами языка определения данных для конкретной системы управления базами данных, например реляционную схему.
Понятия и |
ER-проект |
Реляционная |
Реляционная |
|
описания |
схема |
СУБД |
||
|
Рис. 3. Процесс моделирования и реализации базы данных
По завершении этапа уточнений и согласований проект преобразуется в форму, которая может быть воспринята системой управления базами данных, и база данных начинает собственную жизнь.
11
1.2. МОДЕЛЬ ДАННЫХ «СУЩНОСТЬ-СВЯЗЬ»
Моделирование данных – это первый шаг на пути проектирования баз данных, переход от объектов реального мира к компьютерной модели базы данных.
Наиболее распространенным средством абстрактного представления структур баз данных является ER-модель, или модель «сущность–связь» (Entity-Relationship model). ER-модель служит для объединения различных представлений данных на концептуальном уровне. По своей структуре модель является графической, отображающей элементы данных и связи между ними.
1.2.1. Элементы ER-модели
Процесс проектирования базы данных начинается с анализа того, какого рода информация должна быть в ней представлена и каковы взаимосвязи между элементами этой информации, т.е. строится концептуальная модель предметной области информационной системы.
Моделирование предметной области использует небольшое количество разнородных элементов:
множеств сущностей;
атрибутов;
связей.
Диаграмма сущностей и связей, или ER-диаграмма, — это графическое представление множеств сущностей, их атрибутов и связей. Элементы названных видов описываются вершинами графа, и для задания принадлежности элемента к определенному виду используется специальная геометрическая фигура:
прямоугольник – для множества сущностей;
овал – для атрибута;
ромб – для связи.
Ребра графа соединяют множества сущностей с атрибутами и служат для представления связей между множествами сущностей.
Сущность – это реальный или представляемый объект, информация о котором должна сохраняться и быть доступной [8]. Сущности представляют собой элементы реального мира, которые могут существовать независимо друг от друга. Набор однородных сущностей образует множество сущностей. ERмодель отображает статические объекты, так как она имеет дело со структурами данных, а не с операциями над данными.
12
Пример 1. Необходимо разработать структуру базы данных о процессе обучения в вузе. База данных должна содержать информацию о том, какие дисциплины изучают студенты, в зависимости от специальности и курса, при этом будем считать, что каждой специальности соответствует одна группа.
Каждая группа представляет собой сущность, а множество всех групп образует множество сущностей.
Студенты также являются сущностями, но другого вида, и их множество – это множество сущностей студентов.
Дисциплины – это сущность еще одного вида. Перечень дисциплин формирует третье множество сущностей, которое будет использоваться в дальнейших примерах.
Множеству сущностей отвечает набор атрибутов, являющихся свойствами сущностей множества. Свойства сущности могут зависеть и не зависеть от связей внутри сущности и связей с другими сущностями.
Атрибуты могут быть простые и составные. Составной атрибут – это атрибут, который может быть в дальнейшем разделен на несколько атрибутов, например, атрибут АДРЕС, может быть разделен на ГОРОД, УЛИЦА и т.д.
Атрибуты могут быть однозначные и многозначные.
Однозначный атрибут – это такой атрибут, который может принимать единственное значений, например, ДР (дата рождения) может иметь единственное значение у каждого человека. Однозначные атрибуты необязательно являются простыми. Например, ДР (дата рождения) является составным атрибутом, так как состоит из даты, месяца и года рождения человека.
Многозначный атрибут – это атрибут, который может принимать несколько значений, например, человек может закончить несколько вузов.
Существует еще понятие – «производный атрибут». Это атрибут, который не нужно хранить в базе данных, его получают с помощью некоторого алгоритма, например, возраст служащего можно получить как целое значение разности между текущей датой и датой рождения.
Пример 2. Множеству сущностей ГРУППЫ могут быть поставлены в соответствие такие атрибуты, как НАЗВАНИЕ и КОЛИЧЕСТВО студентов.
Множеству сущностей СТУДЕНТЫ могут быть поставлены в соответствие атрибуты: ФИО - фамилия, имя, отчество студента, ДР – дата рождения студента, АДРЕС студента. ФИО и АДРЕС – это составные атрибуты.
13
Множеству сущностей ДИСЦИПЛИНЫ могут быть поставлены в соот-
ветствие атрибуты: НАЗВАНИЕ, СЕМЕСТР, ЛК, ПР, ЛБ, ОТЧЕТ. ЛК, ПР, ЛБ –
это общее количество часов в семестре по лекционным, практическим, лабораторным занятиям по некоторой дисциплине. ОТЧЕТ – это экзамен или зачет при изучении некоторой дисциплины.
Связи – это соединения между двумя или большим числом множеств сущностей. В качестве названия связей может использоваться глагол или документ.
Наиболее распространенными являются бинарные связи, соединяющих два множества сущностей. Но ER-модель допускает наличие связей, охватывающих произвольное количество множеств сущностей. Многосторонние связи будут рассмотрены далее.
Пример 3. Если ГРУППЫ и СТУДЕНТЫ – это два множества сущностей, то вполне закономерно наличие связи «Состоят», которая соединяет множества сущностей ГРУППЫ и СТУДЕНТЫ: сущность Е множества ГРУППЫ соединена с сущностью F множества СТУДЕНТЫ c gjvjom. связи «Состоят», если студент F является студентом группы E.
ER-диаграммы представляют собой инструмент описания схем или структур баз данных. Базу данных, соответствующую определенной ERдиаграмме и содержащую конкретный набор данных, принято называть экзем-
пляром базы данных [3].
Каждому множеству сущностей в экземпляре базы данных отвечает некоторый частный набор сущностей, а каждая из таких сущностей обладает определенными значениями каждого из атрибутов. Информация о сущностях, атрибутах и связях носит абстрактный характер: содержимое ER-модели не может быть сохранено в базе данных непосредственно. Однако представление о том, что такие данные будто бы реально существуют, помогает на начальной стадии проекта, пока структуры данных не приобретут физическую форму.
Экземпляр базы данных включает также определенные экземпляры связей, описываемых диаграммой.
Связи R, которая соединяет n множеств сущностей E1, E2, ..., En, соответствует экземпляр, состоящий из конечного множества списков (e1, e2, ..., en), где каждый элемент ei выбран из числа сущностей, присутствующих в текущем экземпляре множества сущностей Ei. Элементы каждого из таких списков, охватывающих n сущностей, соединены посредством связи R [3].
14
Указанное множество списков называют множеством данных связи для текущего экземпляра связи. Множество данных связи можно представить парами связанных атрибутов сущностей, охватываемых связью.
Пример 4. Экземпляр связи «Изучают» легко описать парой связанных атрибутов сущности ГРУППЫ и сущности ДИСЦИПЛИНЫ: атрибут НАЗВАНИЕ (сущность ГРУППЫ) – атрибут ИМЯ (сущность ДИСЦИПЛИНЫ), т.е. каждой группе студентов соответствует список изучаемых дисциплин.
Бинарная связь способна соединять любой элемент одного множества сущностей с любым элементом другого множества сущностей. Однако весьма распространены ситуации, в которых свойство «множественности» связи некоторым образом ограничивается. Предположим, что R – связь, соединяющая множества сущностей E и F. Тогда должно выполняться одного из следующих условий [3]:
если каждый элемент множества сущностей E посредством связи R может быть соединен не более чем с одним элементом множества сущностей F, то связь R является связью типа «многие к одному», направленную от E к F. В этом случае каждая сущность множества F допускает соединение с многими элементами множества сущностей E.
Если элемент множествам сущностей F посредством связи R может быть соединен не более чем с одним элементом множества сущностей E, то R – это связь «многие к одному», направленная от F к E или эта связь типа «один ко многим», направленная от E к F.
если связь R в обоих направлениях: от E к F и от F к E – относится к типу «многие к одному», говорят, что R – это связь типа «один к одному». В этом случае каждый элемент одного множества сущностей Е допускает соединение не более чем с одним элементом другого множества сущностей F и наоборот;
если связь R ни в одном из направлений: ни от E к F и ни от F к E – не относится к типу «многие к одному», то имеет место связь типа «многие ко многим».
Таким образам, связь «многие к одному» является частным случаем связи «многие ко многим», а связь «один к одному» – это частный случай связи «многие к одному». Другими словами, любое свойство связей «многие ко многим» характерно и для связей «многие к одному», а некоторое свойство связей «многие к одному» сохраняется в силе для связей «один к одному». Например,
15
структура данных, представляющая связь «многие к одному», способна адекватно отображать связи «один к одному», хотя в общем случае она непригодна для поддержки связей типа «многие ко многим».
Для отображения факта множественности связей в ER-диаграмме используются стрелки. Если связь относится к типу «многие к одному» и соединяет множество сущностей E с множеством сущностей F, она отображается в виде стрелки, направленной к F. Стрелка указывает, что каждая из сущностей множества E связана не более чем с одной сущностью множества F. Если при этом линия не снабжена противоположной стрелкой, обращенной к E, сущность множества F допускает связь со многими сущностями множества E.
Пример 5. Несколько студентов представляют собой группу. Поэтому множество сущностей СТУДЕНТЫ и множество сущностей ГРУППЫ можно соединить связью «Состоят». Каждый студент в некоторый период учится только в одной группе, а каждая группа в некоторый период состоит из нескольких студентов. Поэтому множество сущностей СТУДЕНТЫ и множество сущностей ГРУППЫ соединены связью «многие к одному» (рис. 4).
ГРУППЫ |
Состоят |
СТУДЕНТЫ |
Рис. 4. Связь «многие к одному»
Если следовать рассмотренной логике, связь типа «один к одному» между множествами сущностей E и F должна представляться на диаграмме двунаправленной стрелкой, один конец которой обращен в сторону множества E, а другой – в сторону F.
Пример 6. На рис. 5 показаны два множества сущностей, ГРУППЫ и КУРАТОРЫ, соединенные связью «Курирует». Каждый куратор курирует в определенный период только одну группу, а каждая группа может иметь только одного куратора. Поэтому связь «Курирует» следует отнести к типу «один к одному» и соединить на диаграмме с множествами сущностей ГРУППЫ и КУРАТОРЫ посредством двух стрелок, по одной на каждое множество (рис. 5).
ГРУППЫ |
Курирует |
КУРАТОРЫ |
Рис. 5. Связь «один к одному»
16
Таким образом, стрелка означает, что в связи участвует «не более чем один» элемент множества сущностей, на которое она указывает, при этом обязательное наличие такого элемента в составе множества не гарантируется. Например, на основании рис. 5 можно сделать вывод, что некий куратор обязательно связан с определенной группой. Однако группа в какой-то период времени (на старших курсах) может обходиться без руководителя, так что стрелка, направленная от связи «Курирует» к множеству сущностей КУРАТОР, на самом деле означает «не более чем один», но не «в точности один».
Пример 7. На рис. 6 приведена ER-диаграмма, представляющая структуру простой базы данных, содержащей информацию о дисциплинах, изучаемых в различных группах студентов. В составе диаграммы имеется три множества сущностей: ГРУППЫ, СТУДЕНТЫ, ДИСЦИПЛИНЫ.
Множество сущностей ГРУППЫ обладает двумя атрибутами:
НАЗВАНИЕ и КОЛИЧЕСТВО.
Множество сущностей СТУДЕНТЫ обладает тремя атрибутами: ФИО (фамилия, имя и отчество студента), ДР (дата рождения), АДРЕС.
Множество сущностей ДИСЦИПЛИНЫ обладает пятью атрибутами:
ИМЯ, ЛК, ПР, ЛБ, ОТЧЕТ, СЕМЕСТР. ЛК, ПР, ЛБ – это количество часов, от-
водимые на изучение дисциплины для соответствующих видов занятий. ОТЧЕТ – это экзамен или зачет при изучении данной дисциплины.
НАЗВАНИЕ ФИО ДР
ГРУППЫ |
Состоят |
СТУДЕНТЫ |
|
|
|||
КОЛИЧЕСТВО |
|
|
АДРЕС |
|
Изучают |
ИМЯ |
СЕМЕСТР |
|
|
ДИСЦИПЛИНЫ |
|
|
ЛК |
ПР |
ЛБ ОТЧЕТ |
Рис. 6. Диаграмма сущностей и связей для базы данных о дисциплинах, изучаемых в группах студентов
17
На диаграмме рис. 6 представлены две связи:
связь «Состоят» – это связь, соединяющая каждую сущность группы с сущностями студенты, которые числятся в определенных группах. Стрелка, задающая направление от связи «Состоят» к множеству сущностей ГРУППЫ, свидетельствует о том, что каждый студент может учиться в одной и только в одной группе;
связь «Изучают» соединяет каждую сущность группы с сущностью дисциплины, которые изучаются в определенных группах.
1.2.2. Многосторонние связи
ER-модели может отображать связи, охватывающие более двух множеств сущностей. Эти связи помогают воссоздать в модели истинное состояние системы.
Степень связи указывает на число ассоциированных сущностей. Унарная связь существует тогда, когда ассоциация поддерживается внутри единственной сущности. Бинарная связь существует тогда, когда ассоциируются две сущности. Тернарная связь имеет место тогда, когда связываются три сущности. Хотя существуют и более высокие степени связи, они довольно редки и не имеют особых названий [4].
Многосторонние связи отображаются на ER-диаграмме линиями, соединяющими ромб связи с каждым из соответствующих прямоугольников множеств сущностей.
Пример 8. На рис. 7 изображена связь «Журнал», которая соединяет множества сущностей ГРУППЫ, СТУДЕНТЫ, ДИСЦИПЛИНЫ. Связь отображает, что проведенные занятия по определенной дисциплине фиксируются в журнале учета занятий, там же учитывается присутствие на занятиях студентов.
ДИСЦИПЛИНЫ |
Журнал |
СТУДЕНТЫ |
ГРУППЫ
Рис. 7. Тернарная связь
18
В многосторонних связях стрелка, обращенная к некоему множеству сущностей E, означает следующее [3]: если выбирают по одной сущности из всех остальных множеств сущностей, охватываемых связью, эти сущности могут быть связаны не более чем с одним элементом множества E. Это правило является обобщением того, которое относится к бинарным связям «многие к одному».
На диаграмме рис. 7 стрелка направлена к множеству сущностей ГРУППЫ, свидетельствуя о том, что определенные дисциплины должны быть изучены студентами конкретной группы в рассматриваемый семестр. Однако стрелки, которые могли бы быть обращены к множествам сущностей СТУДЕНТЫ и ДИСЦИПЛИНЫ, не заданы: любая группа состоит из нескольких студентов, и каждый студент должен изучить все дисциплины, предусмотренные программой специальности.
Существуют некоторые модели представления данных, которые ограничивают число сторон, охватываемых связью, до двух, т.е. предполагают использование только бинарных связей. Поэтому при преобразовании ER-модели, например, в реляционную модель, любая связь, соединяющая более двух множеств сущностей, должна быть преобразована в набор бинарных связей типа «многие к одному». С этой целью вводится новое множество сущностей, элементы которого являются кортежами множества данных для рассматриваемой многосторонней связи. Вводимое множество сущностей называется соединяющим множеством сущностей. Затем в диаграмму включаются связи типа «многие к одному», объединяющие соединяющее множество сущностей с каждым из множеств сущностей, элементы которых служат кортежами множества данных для исходной многосторонней связи.
Пример 9. Связь «Журнал» (рис. 7) может быть заменена соединяющим множеством сущностей, которое можно назвать тем же именем, ЖУРНАЛ (рис. 8).
Множество сущностей ЖУРНАЛ принимает участие в трех связях. Поэтому множество сущностей ЖУРНАЛ содержит некоторую сущность, соединенную связью «Состоят» с сущностью группа множества сущностей ГРУППЫ, связью «Числятся» – с сущностью студент множества сущностей СТУДЕНТЫ, а также с сущностью дисциплина множества сущностей ДИСЦИПЛИНЫ посредством связи «Изучаются» соответственно.
19
ДИСЦИПЛИНЫ |
|
СТУДЕНТЫ |
|
|
|
Состоят |
Числятся |
ЖУРНАЛ
Изучаются
ГРУППЫ
Рис. 8. Замена многосторонней связи соединяющим множеством сущностей и набором бинарных связей
При этом соединяющее множество сущностей ЖУРНАЛ не содержит атрибутов, а все другие множества таковыми обладают, хотя на рис. 8 они не показаны. Однако ничто не мешает снабдить соединяющее множество сущностей ЖУРНАЛ подходящими атрибутами, например, таким как ДАТА ПРОВЕДЕНИЯ ЗАНЯТИЯ или ПОДПИСЬ ПРЕПОДАВАТЕЛЯ.
1.2.3. Подклассы в ER-модели
Иногда множество сущностей содержит определенные сущности, которые обладают специальными свойствами, не присущими остальным элементам множества. В подобных случаях можно создавать специальные множества сущностей подклассы, каждое из которых обладает собственными набором атрибутов и/или связями. Для соединения полного множества сущностей – базового класса – с его подклассами используются связи, называемые isa (isa – есть). Например, утверждение «E есть F» выражает наличие связи isa, направленной от множества сущностей E к множеству сущностей F.
Связь isa имеет особый смысл и, чтобы отличить ее от других, применяется специальное обозначение: каждая связь isa на ER-диаграмме представляется треугольником. Одна из сторон треугольника соединяется с подклассом, а противоположная вершина – с базовым классом. Каждая связь isa относится к типу «один к одному», но, в отличие от других связей типа «один к одному», стрелки на ее линиях не проставляются.
20
