Моделирование баз данных. Учебное пособие
.pdf
Пример 10. В рассматриваемой базе данных, может храниться информация о дисциплинах, относящихся к различным блокам: гуманитарные и соци- ально-экономические дисциплины (ГСЭ), общие математические и естественнонаучные дисциплины (ЕН), общепрофессиональные дисциплины (ОПД), специальные дисциплины (СД) и др. Для некоторых блоков дисциплин правомерно определить соответствующий подкласс множества сущностей ДИСЦИПЛИНЫ. Рассмотрим для примера подкласс – ЕН (общие математические и естественнонаучные дисциплины) (рис. 9).
|
ИМЯ |
СЕМЕСТР |
СТУДЕНТЫ |
ДИСЦИПЛИНЫ |
|
ЛК |
ПР |
ЛБ ОТЧЕТ |
РГР
есть
ЕН
Рис. 9. Связь isa на ER-диаграмме
Множество сущностей ЕН, помимо атрибутов и связей, унаследованных от базового класса ДИСЦИПЛИНЫ, участвует в дополнительной связи «РГР», которая определяет наличие по дисциплинам данного блока расчетнографической работы. Расчетно-графические работы выполняются только для дисциплин блока ЕН.
Набор множеств сущностей, соединенных связями isa, может быть представлена структурой любой топологии. Наиболее распространенной является древовидная структура, обладающая одним корневым множеством сущностей, из которого «произрастают» и «ветвятся» множества более частного характера. Например, множество сущностей ДИСЦИПЛИНЫ является корневым (рис. 9) с ветвлениями в виде блоков дисциплин - ГСЭ, ЕН, ОПД, СД и др., обладающих разными характеристиками.
Рассмотрим дерево множеств сущностей, соединенных связями isa. Некоторая сущность состоит из компонентов, относящихся к одному или нескольким указанным множествам сущностей, если эти компоненты принадлежат подклассу исходного дерева, включающему корневую вершину. Другими словами, если некоторая сущность е обладает компонентом g из множества сущно-
21
стей Е и родительским по отношению к f в дереве является множество F, то е обладает также некоторым компонентом d из F. Кроме того, g и d должны быть представлены в виде пары во множестве данных для связи isa, направленной от Е к F. Сущность е имеет те же атрибуты, которыми обладает любой из ее компонентов, и участвует в тех же связях, к которым имеет отношение любой из этих компонентов [3].
Пример 11. Сущность дисциплина, которая не относится ни к блоку дисциплин ЕН, будет обладать только таким компонентом, который принадлежит корневому множеству сущностей ДИСЦИПЛИНЫ. Всем сущностям дисциплины поставлены в соответствие шесть атрибутов ИМЯ, СЕМЕСТР, ЛК, ПР, ЛБ, ОТЧЕТ и одна связь «Изучают».
Сущность-ЕН, обладает двумя компонентами, один из которых относится к множеству сущностей ДИСЦИПЛИНЫ, а другой – к ЕН. Поэтому она получит не только шесть упомянутых выше атрибутов множества ДИСЦИПЛИНЫ, но и связь «РГР». Компоненты соединяются в целостную сущность с помощью связи isa.
Иногда одно и то же множество сущностей упоминается в контексте единственной связи многократно. Тогда в ER-диаграмме задается столько линий, соединяющих связь с множеством сущностей, сколько требуется связей. Каждая линия, направленная к множеству сущностей, представляет отдельную роль, в которой множество выступает в конкретном случае. Линии, соединяющие связь и множество сущностей, принято обозначать текстовыми метками, описывающими определенные роли [3].
Пример 12. На диаграмме рис. 10 изображена связь «Предметы», соединяющая множество сущностей ДИСЦИПЛИНЫ само с собой. Каждый конкретный экземпляр связи соединяет две дисциплины, один из которых служит продолжением другого, так как дисциплина изучается в течение нескольких семестров.
Исходный
Предметы |
ДИСЦИПЛИНЫ |
Продолжение
Рис. 10. Связь и ее роли
22
Чтобы различить начало и продолжение дисциплины, участвующих в связи, одна из ее линий помечена ролью «Исходный», а другая – «Продолжение». Таким образом, связь «Предметы», соединяющая продолжение дисциплины с началом изучения дисциплины, относится к типу «многие к одному», что отмечена на рис. 10 стрелкой.
1.3. ПРАВИЛА ПРОЕКТИРОВАНИЯ
Модель «сущность-связь» имеет возможность создать хороший проект базы данных, но для этого необходимо соблюдать следующие правила проектирования:
достоверность;
отсутствие избыточности;
выбор подходящих связей;
выбор типов элементов;
моделирование ограничений. Рассмотрим эти правила подробнее.
Прежде всего проект обязан достоверно представлять спецификацию ба-
зы данных. Другими словами, множества сущностей и их атрибуты должны соответствовать реальным требованиям. Нельзя, например, ассоциировать с множеством сущностей СТУДЕНТЫ атрибут Стоимость, который вполне применим по отношению к множеству сущностей ТОВАРЫ.
Одним из основных условий проектирования модели является не повторяемость объектов структуры.
Пример 13. Сущности ГРУППЫ и СТУДЕНТЫ соединены связью «Состоят» (см. рис. 6). Можно также снабдить множество сущностей СТУДЕНТЫ атрибутом ГРУППА. Хотя такое решение на первый взгляд вполне приемлемо, но оно таит в себе ряд опасностей:
повторение атрибута ГРУППА приводит к дополнительному расходу памяти при хранении атрибута в базе данных;
при изменении названия некоторой группы можно забыть исправить содержимое атрибута ГРУППЫ в множестве сущностей СТУДЕНТЫ – или сделать наоборот.
23
Можно утверждать, что подобные ошибки вряд ли вероятны, но на практике они случаются, поэтому лучше не описывать некий объект несколькими различными способами. Далее будут рассмотрены методы устранения избыточности данных.
Обычно в проект включают только те структурные элементы, без которых совершенно нельзя обойтись.
Пример 14. Предположим, что вместо связи между множествами сущностей ГРУППЫ и СТУДЕНТЫ существует промежуточное множество сущностей СОСТАВ, описывающее факт принадлежности конкретного студента определенной группе. Между каждым студентом и сущностью состав может быть установлена связь «Состоят» типа «один к одному» (рис. 11). Связь «Представляет» типа «многие к одному» соединяет множества сущностей СОСТАВ и ГРУППЫ.
СТУДЕНТЫ |
Состоят |
СОСТАВ |
Предс- |
ГРУППЫ |
|
тавляет |
|||||
|
|
|
|
Рис. 11. Неудачный пример:
в диаграмму включено избыточное множество сущностей
Если рассматривать формально, структура, приведенная на рис. 11, совершенно верно отображает реальные зависимости, поскольку она позволяет проследовать от конкретного студента к группе. Последнее, однако, не выполняет никаких уникальных функций, и его вполне можно исключить. Не сделав этого, при создании базы данных будет израсходовано лишнее дисковое пространство, созданы сложные зависимости и обработка информации будет затруднена.
Множества сущностей могут быть соединены посредством связей разными способами. Однако неправильно включать в проект первые попавшие связи.
Во-первых, оно способно привести к избыточности схемы, когда одни и те же соотношения множеств сущностей выражаются несколькими цепочками соединений.
Во-вторых, реализация подобной модели потребует дополнительного расхода дискового пространства, а задача внесения изменений в схему базы
24
данных существенно усложнится, поскольку исправление одной связи повлечет необходимость модификации многих других.
Рассмотрим пример, в котором несколько связей представляют одну и ту же информацию.
Пример 15. Вернемся к рис. 7, на котором множества сущностей ГРУППЫ, СТУДЕНТЫ и ДИСЦИПЛИНЫ соединены с помощью тернарной связи «ЖУРНАЛ». Здесь опущены две бинарные связи, «Состоят» и «Изучают», введенные в диаграмму ранее (рис. 12). Нужны связи «Состоят» между множествами сущностей ГРУППЫ и СТУДЕНТЫ и «Изучают» между множествами сущностей ГРУППЫ и ДИСЦИПЛИНЫ при наличии связи «Журнал»?
ДИСЦИПЛИНЫ |
Журнал |
СТУДЕНТЫ |
Состоят |
ГРУППЫ |
Изучают |
|
Рис. 12. Выбор подходящих связей
Вполне возможно получить связь, аналогичную «Изучают», на основании связи «Журнал». Если студент учится в конкретной группе, в журнале которой упоминается некоторый студент и изучаемая дисциплина. Тогда действительно необходимость в использовании связи «Изучает» отпадает: для определения всех пар вида студент-дисциплина для заданных сущностей студент и дисциплина достаточно просмотреть кортежи студент-группа-дисциплина множества данных, отвечающие связи «Журнал», и выбрать нужные, ограничившись компонентами студент и группа (рис. 13).
ДИСЦИПЛИНЫ |
|
|
Журнал |
|
СТУДЕНТЫ |
||
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Состоят |
|
|
ГРУППЫ |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
||
|
|
Рис. 13. Исключение связи |
|
||||
25
Аналогично рассмотрим связь «Состоят». Если для каждой сущности группа имеется по меньшей мере одна дисциплина, которая изучается данной группой студентов, то связью «Состоят» без какого-либо ущерба можно пренебречь. Если, напротив, существует вероятность того, что некоторые дисциплины не изучаются в некоторых группах, то связь «Состоят» следует оставить в неприкосновенности (рис. 13).
Таким образом, можно сделать вывод, что задача определения избыточности связи является индивидуальной для рассматриваемой предметной области.
Рассмотрим еще один пример, в котором одна связь может быть получена на основании нескольких других.
Пример 16. Между множествами сущностей СТУДЕНТЫ и ДИСЦИПЛИНЫ нет прямых связей (рис. 6). Но можно получить необходимую соединяющую цепочку, используя свойства связей «Состоят» и «Изучают», поскольку некоторая дисциплина связана посредством связи «Изучают» с определенными группами, а те, в свою очередь, благодаря связи «Состоят» связаны с соответствующими сущностями студентами. Таким образом, можно считать, что дисциплина связана с группой, в которой учатся студенты.
Нужна ли дополнительная связь «Учит» между множествами сущностей СТУДЕНТЫ и ДИСЦИПЛИНЫ (рис. 14)? На этот вопрос нельзя ответить однозначно, не обладая нужными сведениями. Самое главное, каково истинное назначение этой связи. Если ее смысл состоит в том, чтобы студент изучил, по меньшей мере, хотя бы одну дисциплину, тогда связь «Учит» не нужна, так как аналогичную информацию можно получить на основе существующих связей «Изучают» и «Состоят».
ГРУППЫ |
Состоят |
СТУДЕНТЫ |
|
Учит
Изучают
ДИСЦИПЛИНЫ
Рис. 14. Включение в диаграмму дополнительной связи
26
Однако вполне вероятна ситуация, что имеется некая иная информация об особенностях обучения студентов, которая не отражена в цепочке связей «Изучают» и «Состоят». В этом случае связь, соединяющая множества сущностей СТУДЕНТЫ и ДИСЦИПЛИНЫ напрямую, может оказаться полезной и не восприниматься как избыточная. Например, некоторый студент изучает факультативные дисциплины, которые не изучаются другими студентами группы. Кроме того, студент может обучаться в нескольких группах по разным специальностям. В подобных ситуациях новая связь «Учит» никак не зависит от связей «Изучает» и «Состоят» и не будет лишней.
Иногда при выборе типа элемента модели, используемого для отображения реального объекта, приходится делать выбор между атрибутами или сочетаниями множеств сущностей и связей. Известно, что атрибут реализовать гораздо проще, нежели множество сущностей или связь. Однако необоснованное повсеместное применение атрибутов способно привести к ошибкам.
Пример 17. Рассмотрим множество сущностей ГРУППЫ (см. рис. 6). Можно было бы передать атрибуты НАЗВАНИЕ группы и КОЛИЧЕСТВО студентов множеству сущностей СТУДЕНТЫ и исключить множество сущностей ГРУППЫ. В этом случае придется повторять общее количество студентов в наборе данных для каждого студента. Это избыточность данных. При этом если в базе данных будут отсутствовать сведения о каких-нибудь студентах, числящихся в определенной группе (например, при наборе 1-го курса), информация об этой группе будет отсутствовать.
С другой стороны, если потребность в хранении количества студентов не возникает (их можно пересчитать), то НАИМЕНОВАНИЕ группы в качестве атрибута может быть задано в множестве сущностей СТУДЕНТЫ. При этом наименование группы не может рассматриваться как излишняя информация, поскольку оно должно быть присутствовать в модели.
Пусть Е – это некоторое множество сущностей. Далее перечислены условия, которым должно удовлетворять множество сущностей Е, чтобы его было целесообразно заменить атрибутом или набором атрибутов нескольких других множеств сущностей [3]:
все связи, в которые вовлечено множество сущностей Е, обладают стрелками, указывающими на множество сущностей Е. Другими словами, множеству сущностей Е должна отводиться роль компонента «один» во всех связях типа «многие к одному» или их обобщениях для случаев многосторонних связей;
27
атрибуты множества сущностей Е в совокупности обязаны однозначно определять любую сущность множества. Чаще всего имеется только один такой атрибут, и в этом случае условие определенно удовлетворяется. Если множество обладает несколькими атрибутами, ни один из них не должен зависеть от остальных. Например, атрибут КОЛИЧЕСТВО множества сущностей ГРУППЫ зависит от атрибута НАЗВАНИЕ того же множества;
ни в одной из связей множество сущностей Е не должно участвовать многократно.
Если все указанные условия удовлетворены, множество сущностей Е может быть заменено другими элементами одним из следующих способов [3]:
если существует связь R типа «многие к одному», направленная от некоторого множества сущностей F к множеству Е, следует удалить R и передать атрибуты Е множеству F, выполнив при необходимости их переименование, если F уже содержит атрибуты с теми же именами. В результате каждая сущность множества F получит в качестве атрибута наименование уникальной связанной с ней сущности множества Е. Например, когда сущностям студенты передается атрибут НАЗВАНИЕ группы, а атрибут КОЛИЧЕСТВО студентов исключается.
если существует многосторонняя связь R, содержащая стрелку, направленную к Е, целесообразно передать атрибуты Е связи R и удалить стрелку, соединяющую R с Е.
Проанализируем, что лучше выбрать: многостороннюю связи или соединяющее множество сущностей и набор из нескольких бинарных связей.
Пример 18. На рис. 7 показана тернарная связь «Журнал», соединяющая сущности ГРУППЫ, СТУДЕНТЫ и ДИСЦИПЛИНЫ. На рис. 8 эта структура была преобразована в одноименное соединяющее множество сущностей ЖУРНАЛ с несколькими дополнительными бинарными связями.
Выбор решения зависит от постановки задачи.
Если изменить постановку задачи хотя бы незначительно, то почти во всех случаях необходимо отдать предпочтение варианту, предполагающему применение соединяющего множества сущностей, например, обычно журнал содержит сведения об одной группе. Изучаются несколько дисциплин. Причем по одной и той же дисциплине для данной группы проводятся определенное количество лекционных, лабораторных, практических занятий отличные от количеств часов для другой группы.
28
Связь «Журнал» будет охватывать не только множества сущностей СТУДЕНТЫ и ГРУППЫ, но и новое множество сущностей, элементами которого являются множества дисциплин. Множества дисциплин в этом случае являются неестественными и не могут восприниматься в виде элементарных сущностей, так как напрямую зависят от множества сущностей ГРУППЫ.
Более правильным решением считается, если журналы описываются множеством сущностей. На рис. 15 сущность журнал соединяется с сущностями студенты, группы и дисциплины. В данном случае связь между множествами сущностей ЖУРНАЛ и ДИСЦИПЛИНЫ приобретает свойство «многие ко многим» (рис. 15).
ДИСЦИПЛИНЫ |
|
СТУДЕНТЫ |
|
|
|
|
|
|
|
|
|
Состоят |
Числятся |
ЖУРНАЛ
Изучаются
ГРУППЫ
Рис. 15. Соединяющее множество ЖУРНАЛ
1.4. МОДЕЛИРОВАНИЕ ОГРАНИЧЕНИЙ
Ранее было рассмотрено моделирование объектов реального мира средствами множеств сущностей, атрибутов и связей. Однако существуют некоторые другие аспекты действительности, для адекватного представления которых возможностей изученных инструментов моделирования уже не достаточно. Дополнительная информация об объектах окружающего мира может быть представлена в форме определенных ограничений, которые никак не связаны со структурными и «типовыми» ограничениями, сопутствующими описанию конкретных множеств сущностей, атрибутов и связей.
Рассмотрим перечень наиболее распространенных ограничений [3]:
29
ограничение уникальности означает, что определенное значение в некотором контексте должно быть уникальным. Ключи — это основной «поставщик» ограничений уникальности, поскольку наличие ключа предполагает, что каждая сущность во множестве сущностей обладает уникальными значениями атрибутов, в совокупности образующих ключ. Есть и другие источники, порождающие ограничения уникальности, — например, связи типа «многие к одному»;
ограничение ссылочной целостности означает, что некоторое значение,
на которое ссылается другой объект, должно существовать в базе данных. Ограничение ссылочной целостности аналогично запрету на использование в обычных программах «висячих» указателей или иных элементов, ссылающихся на нечто отсутствующее;
ограничение домена означает, что значение атрибута должно выбираться из некоего конечного множества значений или принадлежать определенному диапазону изменения;
ограничение общего вида означает, что произвольное требование должно быть зафиксировано в базе данных. Например, такое как «каждой сущности группа должно быть поставлено в соответствие не более 18 сущностей
студент».
Иногда один экземпляр базы данных может удовлетворять некоторым ограничениям, при этом учитываются только те ограничения, которые справедливы для всех ее экземпляров, верно отображающих особенности моделируемых сущностей.
Ограничения дают возможность выразить некоторые особые свойства моделируемых сущностей реального мира. Так, ключи позволяют однозначно распознавать элементы множества однородных сущностей. Если атрибут НАЗВАНИЕ служит ключом для множества сущностей ГРУППЫ, то при обращении к сущности группа по ее названию выполняется выбор единственного элемента множества сущностей ГРУППЫ.
Помимо того, при сохранении уникального значения экономятся время и дисковое пространство. Отдельное значение занести в базу данных проще, чем множество значений.
Применение ключей и ограничений ссылочной целостности также способствует оптимизации структур данных, что приводит к увеличению скорости доступа к информации.
30
