Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Тема 2.1. Введение в информационные системы. ER – диаграмма. 1 страница



Мы рассмотрели основные внутренние закономерности процесса мышления: анализ, синтез, обобщение, абстракцию и т.п. в своей работе следует стремиться применять их в объединении. Это мы увидим далее.

Теория №2. Раздел 2. Основы информационных систем

Процесс проектирования базы данных начинается с анализа того, какого рода инфор­мация должна быть в ней представлена и каковы взаимосвязи между элементами этой информации. Структура, или схема (schema), базы данных определяется средствами различных языков или систем обозначений, пригодных для описания проектов. По завершении этапа уточнений и согласований проект преобразуется в форму, которая может быть воспринята СУБД, и база данных начинает собственную жизнь.

ER-модели, или модели "сущность—связь " (entity-relationship model), ставшей традиционной и наиболее популярной. По своей природе модель яв­ляется графической: прямоугольники отображают элементы данных, а линии (возможно, со стрелками) указывают на связи между ними.

Рис. 1 иллюстрирует, каким образом ER-модели используются при проектировании баз данных. Обычно принято начинать с изучения понятий и описаний информации, под­лежащей моделированию, а затем пытаться отобразить их в рамках ER-модели. Затем ER-проект преобразуется в реляционную схему, выраженную средствами языка определения данных для конкретной СУБД.

 
 


Рис. 1. Процесс моделирования и реализация баз данных.

Элементы ER-модели Наиболее распространенным средством абстрактного представления структур баз данных является ER-модель, или модель "сущность— связь" (entity-relationship model). В ER-модели структура данных отображается графически, в виде диаграммы сущностей и связей (entity-relationship diagram), состоящей из элементов трех основных типов:

a) множеств сущностей;

b) атрибутов;

c) связей.

Ниже подробно рассмотрен каждый из типов элементов диаграммы сущностей и связей.

Множества сущностей

Сущность (entity) — это абстрактный объект определенного вида. Набор однород­ных сущностей образует множество сущностей (entity set). Понятие сущности обладает определенным сходством с понятием объекта (object) (если трактовать последнее так, как это принято делать в объектно-ориентированном проектировании). Примерно та­ким же образом соотносятся множество сущностей и класс объектов. ER-модель, од­нако, отображает статические объекты — она имеет дело со структурами данных, но не с операциями над данными. Поэтому предполагать, что в ней могут содержаться описания неких "методов", соответствующих множествам сущностей и аналогичных методам класса, нет никаких оснований.

Пример 1. На протяжении многих тем мы будем рассматривать и развивать пример, касающийся базы данных о кинофильмах, участвующих в них актерах, студиях, осуществивших съемку, и т.п. Каждый из фильмов представляет собой сущность, а кол­лекция всех фильмов образует множество сущностей. Актеры, снимающиеся в фильмах, также являются сущностями, но другого вида, и их множество — это множество сущно­стей. Киностудия — это сущность еще одного вида, а перечень киностудий формирует третье множество сущностей, которое будет использоваться в дальнейших примерах.

Разновидности ER-модели

В некоторых версиях ER-модели атрибуты могут относиться к следующим типам:

1) атомарный, как в версии, рассматриваемой нами;

2) "struct", как в языке С, или кортеж с фиксированным числом атомарных ком­понентов;

3) множество значений одного типа — атомарного либо "struct".

Например, в качестве типа атрибута в подобной модели может быть задано множе­ство пар, каждая из которых состоит из целого числа и строки.

Атрибуты

Множеству сущностей отвечает набор атрибутов (attributes), являющихся свойст­вами сущностей множества. Например, множеству сущностей Movies ("кинофильмы") могут быть поставлены в соответствие такие атрибуты, как title ("название") и length ("продолжительность" — значение периода времени воспроизведения, выраженное в минутах). В версии ER-модели, рассматриваемой в этой лекции, мы предполагаем, что атрибуты представляют собой атомарные значения (например, строки, целые или вещественные числа и т.д.). Существуют и такие варианты модели, в которых понятие типа атрибута трактуется иным образом.

Связи

Связи (relationships) — это соединения между двумя или большим числом множеств сущностей. Если, например, Movies ("кинофильмы") и Stars ("актеры") — это два множества сущностей, вполне закономерно наличие связи Stars-in ("актеры - участники", снявшиеся в фильме), которая соединяет множества сущностей Movies и Stars', сущность m множества Movies соединена с сущностью s множества Stars по­средством связи Stars-in, если актер s снялся в фильме т. Хотя наиболее распростра­нена разновидность бинарных связей (binary relationships), соединяющих два множества сущностей, ER-модель допускает наличие связей, охватывающих произвольное коли­чество множеств сущностей. Обсуждение вопросов, касающихся многосторонних связей (multiway relationships).

Диаграммы сущностей и связей

Диаграмма сущностей и связей (entity—relationship diagram), или ER-диаграмма (ER-diagram), — это графическое представление множеств сущностей, их атри­бутов и связей. Элементы названных видов описываются вершинами графа, и для задания принадлежности элемента к определенному виду используется специаль­ная геометрическая фигура:

• прямоугольник — для множеств сущностей;

• овал — для атрибутов;

• ромб — для связей.

Ребра графа соединяют множества сущностей с атрибутами и служат для представле­ния связей между множествами сущностей.

Пример 2 На рис. 2 приведена ER-диаграмма, представляющая структуру простой базы данных, содержащей информацию о кинофильмах. В составе диаграммы имеется три множества сущностей: Movies ("кинофильмы"), Stars ("актеры") и Studios ("киностудии").


рис. 2 Диаграмма сущностей и связей для базы данных о кинофильмах

Экземпляры ER- диаграммы

ER-диаграммы представляют собой инструмент описания схем (schemata), или структур, баз данных. Базу данных, соответствующую определенной ER-диаграмме и содержащую конкретный набор данных, принято называть экземпляром базы данных (database instance). Каждому множеству сущностей в экземпляре базы данных отвечает некоторый частный конечный набор сущностей, а каждая из таких сущностей облада­ет определенными значениями каждого из атрибутов. Уместно отметить, что инфор­мация о сущностях, атрибутах и связях носит строго абстрактный характер: содержи­мое ER-модели не может быть сохранено в базе данных непосредственно. Однако представление о том, что такие данные будто бы реально существуют, помогает на на­чальной стадии проекта — пока мы не перейдем к отношениям и структуры данных не приобретут физическую форму.

Пример 3. Экземпляр связи Stars-in ("актеры-участники") легко описать таблицей пар данных, которая может иметь следующий вид:

Movies Stars
Basic Instinct Sharon Stone
Total Recall Arnold Schwarzenegger
Total Recall Sharon Stone

Члены множества данных связи — это строки таблицы. Например,

("Basic Instinct", "Sharon Stone") представляет собой кортеж множества данных для текущего экземпляра связи Stars-in.

Множественность бинарных связей

Бинарная связь (binary relationship) в общем случае способна соединять любой член одного множества сущностей с любым членом другого множества сущностей. Однако весьма распространены ситуации, в которых свойство "множественности" связи неко­торым образом ограничивается. Предположим, что R — связь, соединяющая множест­ва сущностей Е и F. Тогда возможно выполнение одного из нескольких условий, пе­речисленных ниже.

· Если каждый член множества Е посредством связи R может быть соединен не более чем с одним членом F, принято говорить, что R представляет связь типа "многие к одному" (many-one relationship), направленную от Е к F. В этом случае каждая сущность множества /'допускает соединение с многими членами Е. Ес­ли же член F посредством связи R может быть соединен не более чем с одним членом Е, мы говорим, что R — это связь "многие к одному", направленная от F к Е (или, что то же самое, связь типа "один ко многим" (one-many relationship), направленная от £ к F).

· Если связь R в обоих направлениях, от Е к F и от F к Е, относится к типу "мно­гие к одному", говорят, что R— это связь типа "один к одному" (one-one relationship). В этом случае каждый элемент одного множества сущностей допус­кает соединение не более чем с одним элементом другого множества сущностей.

· Если связь й ни в одном из направлений — ни от Е к F и ни от F к Е — не от­носится к типу "многие к одному", имеет место связь типа "многие ко многим" (many-many relationship).

Как мы уже отмечали в примере 2, стрелки в ER-диаграмме использу­ются для отображения факта множественности связей. Если связь относится к типу "многие к одному" и соединяет множество сущностей Е с множеством сущностей F, она отображается в виде стрелки, направленной к F. Стрелка указывает, что каждая из сущностей множества Е связана не более чем с одной сущностью множества F. Если при этом линия не снабжена противоположной стрелкой, обращенной к £, сущность множества F допускает связь со многими сущностями множества Е.

Пример 4. Если следовать рассмотренной логике, связь типа "один к одному" между множествами сущностей Е и F должна представляться на диаграмме двунаправленной стрелкой, один конец которой обращен в сторону множества £, а другой — в сторону F. На рис. 3 показаны два множества сущностей, Studios ("киностудии") и Presidents ("президенты"), соединенные связью Runs ("возглавляет") (атрибуты сущностей для краткости опущены). Уместно предположить, что каждый президент вправе руково­дить только одной студией, а каждая студия может возглавляться только одним прези­дентом. Поэтому связь Runs следует отнести к типу "один к одному" и соединить на диаграмме с множествами сущностей Studios и Presidents посредством двух стрелок, по одной на каждое множество (так, как показано на рис. 3).

 
 


Рис.3 Связь типа «один к одному»

Следует помнить: стрелка означает, что в связи участвует "не более чем один" элемент множества сущностей, на которое она указывает. При этом обязательное на­личие такого элемента в составе множества не гарантируется. Рассматривая диаграмму рис. 3, мы вправе полагать, что некий "президент" обязательно связан с определен­ной студией — иначе на каком основании он мог бы величать себя президентом? Од­нако студия в какой-то период времени может обходиться без руководителя, так что стрелка, направленная от Runs к Presidents, на самом деле означает именно "не более чем один", но не "в точности один".

Многосторонние связи

ER-модели вполне по силам отображать связи, охватывающие более двух множеств сущностей. В реальных ситуациях тернарные связи (ternary relationships), соединяющие три множества, или связи, представляющие взаимоотношения еще большего числа множеств сущностей, сравнительно редки, но иногда они все-таки находят примене­ние, помогая воссоздать в модели истинное положение вещей. Многосторонние связи (multiway relationships) отображаются на ER-диаграмме линиями, соединяющими ромб связи с каждым из соответствующих прямоугольников множеств сущностей.

Пример 5. На рис. 4 изображена связь Contracts ("контракты"), которая соединяет между собой множества сущностей Studios ("киностудии"), Stars ("актеры") и Movies ("кинофильмы"). Связь отображает факт заключения контракта между киностудией и определенным актером, обязующимся принять участие в съемках конкретного кино­фильма. Значение некоторой связи в ER-модели, вообще говоря, можно восприни­мать в виде соответствующего множества кортежей, компонентами которых являются

 
 


Рис. 4. Тернарная связь

Взаимоотношения типов связей

Следует отметить, что связь типа "многие к одному" является частным случаем связи типа "многие ко многим", а связь "один к одному" — это частный случай связи "многие к одному". Другими словами, любое свойство связей "многие ко многим" характерно и для связей "многие к одному", а некоторое свойство связей "многие к одному" сохраняется в силе для связей "один к одному". Например, структура данных, представляющая связь "многие к одному", способна адекватно отображать связи "один к одному", хотя в общем случае она непригодна для под­держки связей типа "многие ко многим".

сущности из множеств, соединяемых этой связью. Таким образом, связь Contracts может быть описана набором кор­тежей вида

(studio, star, movie).

В многосторонних связях стрелка, обращенная к некоему множеству сущностей Е, означает следующее: если мы выберем по одной сущности из всех остальных мно­жеств сущностей, охватываемых связью, эти сущности могут быть связаны не более чем с одним элементом множества £. (Обратите внимание, что это правило является обобщением того, которое относится к бинарным связям типа "многие к одному".) На рис. 4 стрелка направлена к множеству сущностей Studios, свидетельствуя о том, что для каждой пары актеров и кинофильмов существует только одна студия, с кото­рой этот актер заключил контракт на участие в съемках определенного кинофильма. Однако стрелки, которые были бы обращены к множествам сущностей Stars и Movies, не заданы: любая студия вправе пригласить для участия в фильме несколько актеров, а любой актер может быть связан со студией контрактом, предусматривающим уча­стие в съемках нескольких кинофильмов. □

Связи и роли

Вполне вероятна ситуация, когда одно и то же множество сущностей упоминается в контексте единственной связи многократно. Если дело обстоит именно так, в ER-диаграмме задается столько линий, соединяющих связь с множеством сущностей, сколько требуется. Каждая линия, направленная к множеству сущностей, представля­ет отдельную роль (role), в которой множество выступает в конкретном случае. Линии, соединяющие связь и множество сущностей, принято обозначать текстовыми метка­ми, описывающими определенные роли.

Пример 6. На рис. 5 изображена связь Sequel-of ("продолжение кинофильма"), соединяющая множество сущностей Movies ("кинофильмы") само с собой. Каждый конкретный экземпляр связи соединяет два кинофильма, один из которых служит продолжением другого. Чтобы раз­личить два фильма, участвующих в связи, одна из ее линий помечена ролью Original ("исходный"), а другая — Sequel ("продолжение"). Мы подразумева­ем, что некий фильм может иметь несколько про­должений, но для каждого продолжения существует только один "исходный" фильм. Таким образом, связь Sequel-of, соединяющая фильмы Sequel с филь­мами Original, относится к типу "многие к одному рис. 5 отмечен стрелкой). (этот факт на диаграмме 5 отмечена стрелкой

       
   
Original
 
 


Sequel

Рис. 5. Связь и ее роли

Стрелки в многосторонних связях

Если связь охватывает три или более множеств сущностей, для адекватного описа­ния каждой возможной ситуации средствами ER-диаграмм уже не достаточно отве­тить на вопрос, снабжать стрелкой соответствующую линию или нет. Для примера вновь обратимся к диаграмме рис. 4. Некоторая студия напрямую связана с определенным кинофильмом, а не с актером и кинофильмом, рассматриваемыми совместно, поскольку производством фильмов занимается именно студия. Однако используемая нами система обозначений не позволяет отличить эту ситуацию от случая, когда в тернарной связи одно множество сущностей в действительности яв­ляется функцией двух других множеств.

Имеется в виду, что студия "studio2" заключает контракт со студией "studiol", огова­ривающий условия привлечения актера студии "studio 1" на съемки фильма "movie", который выпускается студией "studio2".

Стрелки, изображенные на рис. 6, характеризуют две роли киностудии, отно­сящейся к множеству сущностей Studios: "студия-владелец актера" (Studio-of-Star) и "студия-продюсер кинофильма" (Ptvducing-Studio). Доводы таковы. Для каждого определенного актера, фильма и студии, которая занимается съемкой этого фильма, существует только одна студия, "владеющая" актером. (Предполагается, что актер заключил долговременный кон­тракт только с одной студией.) Аналогич­но, конкретный фильм снимается только одной студией, так что обладая информа­цией об актере, фильме и студии, к кото­рой относится этот актер мы сможем определить уникальную сущность соответствующую студии,

       
   
 
 
Рис. 6. Четырехсторонняя связь


осуществляющей съемку. Обратите внимание, что в обоих случаях для определения уникальной сущности нам необходимо только одно из остальных множеств сущностей — например, для отыскания конкретной студи и продюсера дос­таточно определить кинофильм, снимаемый ею, — но этот факт не меняет общей картины множественности соединений в многосторонней связи.

Стрелок, которые были бы обращены к множествам Movies ("кинофильмы") и Stars ("актеры"), однако, не существует. Заданной тройке значений — имени актера и названиям студии-владельца и студии-продюсера — может соответствовать несколько контрактов, позволяющих актеру сниматься в различных фильмах. Поэтому такой набор данных кортежа не обязательно соответствует уникальному кинофильму. Аналогично, студия-продюсер вправе заключить контракт с другой студией на привлечение к съемкам фильма сразу нескольких актеров, так что имя актера в общем случае не может быть определено на основании данных трех других компонентов связи. □

Связи и атрибуты

Подчас бывает удобно или даже, как кажется, настоятельно необходимо ассоции­ровать атрибут со связью, а не с некоторым множеством сущностей, охватываемых этой связью. Вновь вернемся к примеру связи, показанной на рис. 4, ко­торая представляет множество контрактов между актерами и студиями.3 Пусть нам не­обходимо зафиксировать на диаграмме атрибут "размер заработной платы" (salary) ак­тера (Stars), установленный в соответствии с контрактом (Contracts). Мы не вправе связывать подобный атрибут непосредственно с актером: последний за участие в съем­ках различных фильмов может получать различные суммы вознаграждения. Исходя из подобных соображений, не имеет смысла ассоциировать атрибут "размер заработной платы" и с множествами сущностей "киностудии" (Studios) (студии по-разному оплачи­вают работу различных актеров) и "кинофильмы" (Movies) (различные актеры за уча­стие в съемках одного и того же фильма могут получать различную зарплату).

Однако уместно ассоциировать атрибут salary с кортежем

(star, movie, studio)

из множества данных, соответствующего связи Contracts. На рис. 7 приведена диа­грамма рис. 4, дополненная атрибутами множеств сущностей Movies, Stars и Studios (эти атрибуты приводились на рис. 2), а также атрибутом salary, соединенным со связью Contracts.


Рис. 7. Связь с атрибутом

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

3 Здесь мы рассматриваем исходную, тернарную, редакцию связи Contracts, соответствующую примеру 2.5 на с. 56, а не ее четырехстороннюю версию, упоминавшуюся в примере 2.7 на с. 58.

Пример 7. Давайте исправим ER-диаграмму рис. 7, на которой атрибутом salary ("размер заработной платы") снабжена связь Contracts ("контракты"). Создадим мно­жество сущностей Salaries ("заработная плата") с одноименным атрибутом salary. Salaries станет четвертым множеством сущностей, соединенным со связью Contracts. Результат показан на рис. 2.8.

10. Преобразование многосторонних связей в бинарные

Существуют некоторые модели представления данных, такие как язык ODL (Object Definition Language — язык определения объектов), которые ограничивают число "сторон", охватываемых связью, до двух, т.е. предполагают использование только бинарных связей (binary relationships). Поскольку ER-модели подобные ограничения не присущи, полезно знать о том, что любая связь, соединяющая более двух множеств сущностей, может быть преобразована в набор би­нарных связей типа "многие к одному" (many-one relationships). С этой целью вводится новое множество сущностей, элементы которого являются кортежами множества дан­ных для рассматриваемой многосторонней связи. Множество сущностей, подобное вводимому, называют соединяющим множеством сущностей (connecting entity set). За­тем в диаграмму включаются связи типа "многие к одному", "сплачивающие" соеди­няющее множество сущностей с каждым из множеств сущностей, элементы которых служат компонентами кортежей множества данных для исходной многосторонней связи. (Читатель, если вы это поняли, вы поймете и все остальное. — Прим. перев.) Если некоторое множество сущностей в контексте связи обладает несколькими роля­ми, каждая роль преобразуется отдельно.

 
 


Рис. 8. Передача атрибута связи множеству сущностей

Пример 8. Четырехсторонняя связь Contracts ("контракты"), изображенная на рис. 6, может быть заменена соединяющим множеством сущностей, кото­рое уместно назвать тем же именем, Contracts. Результат показан на рис. 9. Множество сущностей Contracts принимает участие в четырех связях. Если в составе множе­ства данных, соответствующего связи Contracts, имеется кортеж

(studio 1, studio2, star, movie),

можно считать, что множество сущностей Contracts содержит некоторую сущность е, соединенную связью Star-of с сущностью star множества сущностей Stars ("актеры"), связью Movie-of— с сущностью movie множества сущностей Movies ("кинофильмы"), а также с сущностями studio 1 и studio2 множества сущностей Studios ("киностудии") посредством связей Studio-of-Star и Producing-Studio соответственно.

Здесь мы подразумеваем, что соединяющее множество сущностей Contracts не со­держит атрибутов. Однако ничто не мешает снабдить подходящими атрибутами — например, таким как date-of-signing ("дата подписания") — и множество Contracts.

Подклассы в ER-модели

Нередки ситуации, когда множество сущностей содержит определенные сущности, которые обладают специальными свойствами, не присущими остальным членам мно­жества. В подобных случаях подчас оказывается полезным создавать специальные множества сущностей — или подклассы (subclasses) — каждое из которых обладает соб­ственными набором атрибутов и/или связями. Для соединения "полного" множества сущностей — базового класса (superclass) — с его подклассами используются связи, на­зываемые isa (от "is а" — есть) (например, утверждение "Л есть /?" выражает наличие связи isa9 направленной от множества сущностей А к множеству сущностей В).

Связь isa имеет особый смысл, и чтобы отличить ее от других, мы применяем специальное обозначение: каждая связь isa на ER-диаграмме представляется тре­угольником. Одна из сторон треугольника соединяется с подклассом, а противопо­ложная вершина — с базовым классом. Каждая связь isa относится к типу "один к одному", но, в отличие от других связей типа "один к одному", стрелки на ее ли­ниях не проставляются.

 
 


Рис. 9. Замена многосторонней связи со­единяющим множеством сущностей и набо­ром бинарных связей

Пример 9. В "кинематографической" базе данных, рассматриваемой нами, может храниться информация о фильмах, относящихся к различным жанрам: мультиплика­ция, "боевик", приключения, комедия и т.д. Для каждого из жанров вполне право­мерно определить соответствующий подкласс множества сущностей Movies ("кинофильмы"). Рассмотрим для примера два подкласса — Cartoons ("мультипликация") и Murder-Mysteries ("боевики"). Множество сущностей "мультипликация", помимо атрибутов и связей, унаследованных от базового класса "кинофильмы", участвует в дополнительной связи Voices ("голоса"), которая опреде­ляет подмножество актеров, участвовавших в озвучивании фильма, но не появляв­шихся на экране непосредственно. Фильмы, не относящиеся к жанру мультиплика­ции, не обладают подобной связью. Для кинофильмов-"боевиков" характерно нали­чие атрибута weapon ("оружие"). Взаимоотношения множеств сущностей Movies, Cartoons и Murder-Mysteries иллюстрируются диаграммой рис. 2.10.

               
       


К множеству сущностей

Stars

 
 


Рис. 10. Связи isa на ER-диаграмме

Хотя, вообще говоря, набор множеств сущностей, соединенных связями /sa, может обладать структурой любой топологии, мы сосредоточим внимание на гораздо более распространенных древовидных (tree-like) isa-структурах, обладающих одним корневым (root) множеством сущностей (таким как Movies на рис. 2.10), из которого "произрастают" и "ветвятся" множества более частного характера.





Дата публикования: 2014-11-29; Прочитано: 2146 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.017 с)...