Привет студент. Er-модель данных

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

В этом смысле моделирование предметной области, базирующееся на использовании графических диаграмм, является удачным решением. Графическая форма позволяет отобразить в компактном виде (за счет наглядных условных обозначений) типологию и свойства сущностей и связей, а формализмы, положенные в основу ER-диаграмм, дают возможность сформулировать конечный набор правил проектирования логической структуры базы данных.

Диаграмма– графическое представление множества элементов, чаще всего изображаемое в виде связного графа с вершинами-объектами и ребрами-отношениями. На ER-диаграмме вершинами являются сущности и (например, в нотации Чена) свойства сущностей. Ребра ER-диаграммы представляют собой связи между сущностями и между сущностью и ее свойствами.

Существует несколько различных нотаций (языков) изображения ER-диаграмм. Исторически первой является нотация Чена; в семействе стандартов IDEF модель «сущность-связь» реализуется нотацией IDEF1Х; используются нотации Мартина и Баркера, а также графические элементы UML.

Рис. 5.5. ER-диаграмма в нотации UML

Нотация UML. На рис. 5.5 приведен пример ER-диаграммы ПрО в нотации UML.

Унифицированный язык моделирования UML (Unified Modeling Language) представляет собой язык для определения, представления, проектирования и документирования программных систем, организационно-экономических систем, технических систем и других систем различной природы. Структуру UML составляет стандартный набор диаграмм и нотаций.

Главными в разработке UML были следующие цели:

Предоставить готовый к использованию выразительный язык визуального моделирования, позволяющий разрабатывать осмысленные модели и обмениваться ими;

Предусмотреть механизмы расширяемости базовых концепций языка;

Обеспечить независимость от конкретных языков программирования и процессов разработки.

Интегрировать лучший практический опыт.

В настоящее время UML находится в процессе стандартизации, проводимом организацией по стандартизации в области объектно-ориентированных методов и технологий (OMG - Object Management Group).

Рассмотрим правила изображения сущностей, свойств и связей в этой нотации.

Каждый тип сущности в ER-диаграммах нотации UML представляется в виде прямоугольника, содержащего имя сущности и перечень свойств сущности. В качестве имени сущности обычно используется существительное в единственном числе (например, ОТДЕЛ, ПРОЕКТ, СОТРУДНИК). Имя сущности указывается в верхней части прямоугольника с прописной буквы, имена свойств перечисляются в нижней части прямоугольника и начинаются со строчной буквы.

Слабые сущности характеризуются тем, что их нельзя однозначно идентифицировать только с помощью собственных атрибутов (в силу их зависимости от «родительских» сущностей и невозможности самостоятельного существования). На ER-диаграммах слабые сущности не имеют первичных ключей (например, сущность ПОДЧИНЕННЫЙ)

Свойства служат для уточнения, идентификации, характеристики или выражения состояния сущности или связи. Отражение на ER-диаграммах типологии свойств представлено в табл. 5.2.

Таблица 5.2. Изображение типов свойств в UML

Тип свойства Описание Пример
Свойство первичного ключа после имени свойства в фигурных скобках помещается идентификация первичного ключа {PK}
Многозначное после имени свойства в квадратных скобках задаются возможные границы изменения количества значений
Производное имя свойства начинается с наклонной черты «/»
Условное (необязательное) после имени свойства в квадратных скобках задаются возможные границы изменения количества значений
Составное под именем составного свойства перечисляются с отступом вправо имена простых свойств

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

1..* - один или более;

0..* - ноль или более;

1 – ровно один;

0..1 – может быть один.

Может быть задан также диапазон (например,1..10) или точное количество, отличное от 1

Для обозначения n -арной связи используется ромб, внутри которого указывается имя связи. Кратность n -арной связи для каждой сущности показывает, каким может быть количество ее объектов в случае, если со стороны остальных сущностей-участниц в связи участвует ровно по одному объекту. Например, трехсторонняя связь на рис. 5.6 определяет, что поставлять партии любых деталей для любого проекта может любой поставщик.

Рис. 5.6. Пример трехсторонней связи

Присутствие в задании мощности связи значения «0» объявляет связь как неполную (необязательную). Например, связь РАБОТАЕТ между сущностями ОТДЕЛ и СОТРУДНИК на рис. 5.5 должна читаться следующим образом: «Каждый сотрудник обязательно работает только в одном отделе; в отделе работает произвольное число сотрудников или не работает ни одного».



Связь может быть модифицирована указанием роли. Например, для рекурсивной связи СОСТАВ на рис. 5.5 указаны роли: «Деталь состоит из …» и «Деталь в составе …».

Связь «многие ко многим» может иметь собственные свойства, характеризующие взаимодействие сущностей (например, связи УЧАСТИЕ и РЕАЛИЗАЦИЯ ПРОЕКТА на рис. 5.5). В этом случае для изображения связи используется графический элемент, соответствующий слабой сущности. Прямоугольник сущности присоединяется к линии связи (или к ромбу в случае n -арной связи) пунктирной линией.

Нотация Чена. Каждый тип сущности в нотации Чена представляется в виде прямоугольника, содержащего имя сущности (существительное в единственном числе).

Связь (и бинарная, и n -арная) на ER-диаграмме отображается в виде ромба с именем связи внутри. В качестве имени обычно используются отглагольные существительные.

Свойства отображаются в виде эллипсов, содержащих имя свойства. Эллипс соединяется с соответствующей сущностью или связью линией (рис. 5.7).

Рис. 5.7. Фрагмент ER-диаграммы в нотации Чена

Участники связи соединены со связью линиями. Двойная линия обозначает полное (обязательное) участие сущности в связи с данной стороны. Например, обязательная связь РУКОВОДСТВО со стороны сущности ПРОЕКТ (рис. 5.8) означает, что у каждого проекта должен быть руководитель. Однако не каждый сотрудник должен руководить проектом.

Тип связи указывается индексами «1» или «М» над соответствующей линией. Например, связь РУКОВОДСТВО (рис. 5.8) имеет тип «один ко многим»: один сотрудник может руководить многими проектами; связь УЧАСТИЕ (рис. 5.7) имеет тип «многие ко многим»: один сотрудник может участвовать во многих проектах, и в проекте могут участвовать многие сотрудники.

ER-модели в отрыве от тематики проектирования реляционных баз данных.

Но если требуется одновременно использовать термины ER-модели и реляционной модели данных, то, безусловно, требуется применять для терминов relation и relationship разные русские эквиваленты. За этими терминами стоят весьма различные понятия. В реляционной модели отношение ( relation ) – это единственная родовая структура данных . С помощью этого же механизма представляются "связанные" сущности (вспомните, например, про внешние ключи). Как мы увидим немного позже, в ER-модели для представления схемы базы данных используются два равноправных понятия – сущность и связь . Связи в ER-модели играют роль, отличную от той, какую играют отношения в реляционной модели данных.

Кроме того, в русскоязычную терминологию вошла и чистая транслитерация термина relation именно в смысле отношение . Мы говорим, например, про реляционную модель данных , реляционную алгебру и т. д., понимая модель данных , основанную на отношениях, алгебру отношений и т. п. По этому поводу, по крайней мере, в контексте баз данных, разумно окончательно зарезервировать термины relation и отношение для обозначения понятий реляционной модели данных, а для термина relationship использовать другой допустимый русскоязычный эквивалент – связь .

На использовании разных вариантов ER-модели основано большинство современных подходов к проектированию баз данных (главным образом, реляционных). Модель была предложена Питером Ченом (Peter Chen) в 1976 г. Моделирование предметной области базируется на использовании графических диаграмм, включающих небольшое число разнородных компонентов. Простота и наглядность представления концептуальных схем баз данных в ER-модели привели к ее широкому распространению в CASE-системах , поддерживающих автоматизированное проектирование реляционных баз данных . Среди множества разновидностей ER-моделей одна из наиболее популярных и развитых применялась в системе CASE компании Oracle . Мы обсудим некоторый упрощенный вариант этой модели. Если говорить более точно, сосредоточимся на ее структурной и целостной частях.

Основные понятия ER-модели

Основными понятиями ER-модели являются сущность , связь и атрибут . Сущность – это реальный или представляемый объект, информация о котором должна сохраняться и быть доступной. 4Понятно, что это "определение" на самом деле является тавтологией , поскольку, во-первых, мы пытаемся определить термин сущность через не определенный термин объект, а во-вторых, попытки определения термина объект настолько же безнадежны. Обычно авторы пытаются оправдываться тем, что в подобном контексте они имеют в виду "житейское", а не сколько-нибудь формализованное понятие объекта. Конечно, от этого не становится легче, поскольку понятие сущности должно пониматься в достаточно точном смысле. Но эта тавтология не изобретена автором этого курса; она традиционна для области семантического моделирования. В этой области стремятся максимально избегать формальностей. В диаграммах ER-модели сущность представляется в виде прямоугольника, содержащего имя сущности . При этом имя сущности – это имя типа , а не некоторого конкретного экземпляра этого типа . 5Хотя было бы правильнее всегда использовать термины тип сущности и экземпляр типа сущности , для избежания многословности (и следуя традиции) в тех случаях, где это не приводит к двусмысленности, мы будем использовать термин сущность в значении типа сущности . Для большей выразительности и лучшего понимания имя сущности может сопровождаться примерами конкретных экземпляров этого типа.


Рис. 9.1.

На рис. 9.1 изображена сущность АЭРОПОРТ с примерными экземплярами "Шереметьево" и "Хитроу". Эта примитивная диаграмма тем не менее несет важную информацию. Во-первых, она показывает, что в базе данных будут содержаться однотипные структуры данных (экземпляры сущности ), описывающие аэропорты. Во-вторых, поскольку в жизни существует несколько точек зрения на аэропорты (например, точка зрения пилота, точка зрения пассажира, точка зрения администратора) и этим точкам зрения соответствуют разные структуры данных, то приведенные примеры аэропортов позволяют несколько сузить допустимый набор точек зрения. В нашем случае приведены примеры международных аэропортов, так что, скорее всего, имеется точка зрения пассажира или пилота международных авиарейсов.

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

Связь – это графически изображаемая ассоциация, устанавливаемая между двумя типами сущностей . Как и сущность , связь – это типовое понятие, все экземпляры обоих связываемых типов сущностей подчиняются устанавливаемым правилам связывания. Поэтому правильнее говорить о типе связи , устанавливаемой между типами сущности , и об экземплярах типа связи , устанавливаемых между экземплярами типа сущности . 6Тем не менее, как и в случае типа сущности , мы будем часто использовать термин связь в значении типа связи . В обсуждаемом здесь варианте ER-модели эта ассоциация всегда является бинарной и может существовать между двумя разными типами сущностей или между типом сущности и им же самим (рекурсивная связь ). В любой связи выделяются два конца (в соответствии с существующей парой связываемых сущностей ), на каждом из которых указываются имя конца связи , степень конца связи (сколько экземпляров данного типа сущности должно присутствовать в каждом экземпляре данного типа связи ), обязательность связи (т. е. любой ли экземпляр данного типа сущности должен участвовать в некотором экземпляре данного типа связи ). 7 В некоторых вариантах ER-модели конец связи называют ролью связи в данной сущности . Тогда можно говорить об имени роли , степени роли и обязательности роли связи в данной сущности .

Связь представляется в виде ненаправленной линии, соединяющей две сущности или ведущей от сущности к ней же самой. При этом в месте "стыковки" связи с сущностью используются:

  • трехточечный вход в прямоугольник сущности , если для этой сущности в связи могут (или должны) использоваться много (many ) экземпляров сущности ;
  • одноточечный вход, если в связи может (или должен) участвовать только один экземпляр сущности .

Обязательный конец связи изображается сплошной линией, а необязательный – прерывистой линией.

Связь между сущностями БИЛЕТ и ПАССАЖИР , показанная на рис. 9.2 , связывает билеты и пассажиров. Конец связи с именем "для" позволяет связывать с одним пассажиром более одного билета, причем каждый билет должен быть связан с каким-либо пассажиром. Конец связи с именем "имеет" показывает, что каждый билет может принадлежать только одному пассажиру, причем пассажир не обязан иметь хотя бы один билет.


Рис. 9.2.
  • каждый БИЛЕТ предназначен для одного и только одного ПАССАЖИРА ;
  • каждый ПАССАЖИР может иметь один или более БИЛЕТОВ или не иметь вовсе.

На следующем примере (рис. 9.3) изображена рекурсивная связь , связывающая сущность МУЖЧИНА с ней же самой. Конец связи с именем " сын " определяет тот факт, что несколько людей могут быть сыновьями одного отца. Конец связи с именем " отец " означает, что не у каждого мужчины должны быть сыновья.

Лаконичная устная трактовка изображенной диаграммы состоит в следующем:

  • каждый МУЖЧИНА является сыном одного и только одного МУЖЧИНЫ ;
  • каждый МУЖЧИНА может являться отцом одного или более МУЖЧИН .

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

What is ER Modeling?

Entity Relationship Modeling (ER Modeling) is a graphical approach to database design. It uses Entity/Relationship to represent real world objects.

An Entity is a thing or object in real world that is distinguishable from surrounding environment. For example each employee of an organization is a separate entity. Following are some of major characteristics of entities.

  • An entity has a set of properties.
  • Entity properties can have values.

In this tutorial, you will learn-

Let"s consider our first example again. An employee of an organization is an entity. If "Peter" is a programmer (an employee ) at Microsoft, he can have attributes ( properties) like name, age, weight, height, etc. It is obvious that those do hold values relevant to him.

Each attribute can have Values . In most cases single attribute have one value. But it is possible for attributes have multiple values also. For example Peter"s age has a single value. But his "phone numbers" property can have multiple values.

Entities can have relationships with each other. Let"s consider a simplest example. Assume that each Microsoft Programmer is given a Computer. It is clear that that Peter"s Computer is also an entity. Peter is using that computer and the same computer is used by Peter. In other words there is a mutual relationship among Peter and his computer.

In Entity Relationship Modeling, we model entities, their attributes and relationships among entities.

Enhanced Entity Relationship (EER) Model

Enhanced Entity Relationship (EER) Model is a high level data model which provides extensions to original Entity Relationship (ER) model. EER Models supports more details design. EER Modeling emerged as a solution for modeling highly complex databases.

EER uses UML notation. UML is the acronym for Unified Modeling Language; it is a general purpose modeling language used when designing object oriented systems. Entities are represented as class diagrams. Relationships are represented as associations between entities. The diagram shown below illustrates an ER diagram using the UML notation.

Why use ER Model?

Now you may think why use ER modeling when we can simply create the database and all of its objects without ER modeling? One of the challenges faced when designing database is the fact that designers, developers and end-users tend to view data and its usage differently. If this situation is left unchecked, we can end up producing a database system that does not meet the requirements of the users.

Communication tools understood by all stakeholders(technical as well non-technical users) are critical in producing database systems that meet the requirements of the users. ER models are examples of such tools.

ER diagrams also increase user productivity as they can be easily translated into relational tables.

Case Study: ER diagram for "MyFlix" Video Library

Let"s now work with the MyFlix Video Library database system to help understand the concept of ER diagrams. We will using this database for all hand-on in the remainder of this tutorials

MyFlix is a business entity that rents out movies to its members. MyFlix has been storing its records manually. The management now wants to move to a DBMS

Let"s look at the steps to develop EER diagram for this database-

  1. Identify the entities and determine the relationships that exist among them.
  2. Each entity, attribute and relationship, should have appropriate names that can be easily understood by the non-technical people as well.
  3. Relationships should not be connected directly to eachother. Relationships should connect entities.
  4. Each attribute in a given entity should have a unique name.

Entities in the "MyFlix" library

The entities to be included in our ER diagram are;

  • Members - this entity will hold member information.
  • Movies - this entity will hold information regarding movies
  • Categories - this entity will hold information that places movies into different categories such as "Drama", "Action", and "Epic" etc.
  • Movie Rentals - this entity will hold information that about movies rented out to members.
  • Payments - this entity will hold information about the payments made by members.

Defining the relationships among entities

Members and movies

The following holds true regarding the interactions between the two entities.

  • A member can rent a more than movie in a given period.
  • A movie can be rented by more than one member in a given period.

From the above scenario, we can see that the nature of the relationship is many-to-many. Relational databases do not support many-to-many relationships. We need to introduce a junction entity . This is the role that the MovieRentals entity plays. It has a one-to-many relationship with the members table and another one-to-many relationship with movies table.

Movies and categories entities

The following holds true about movies and categories.

  • A movie can only belong to one category but a category can have more than one movie.

We can deduce from this that the nature of the relation between categories and movies table is one-to-many.

Members and payments entities

The following holds true about members and payments

  • A member can only have one account but can make a number of payments.

We can deduce from this that the nature of the relationship between members and payments entities is one-to-many.

Now lets create EER model using MySQL Workbench

In the MySQL workbench , Click - "+" Button

Double click on Add Diagram button to open the workspace for ER diagrams.

Following window appears

Let"s look at the two objects that we will work with.

The members" entity will have the following attributes

  • Membership number
  • Full names
  • Gender
  • Date of birth
  • Physical address
  • Postal address

Let"s now create the members table

1.Drag the table object from the tools panel

2.Drop it in the workspace area. An entity named table 1 appears

3.Double click on it. The properties window shown below appears

  1. Change table 1 to Members
  2. Edit the default idtable1 to membership_number
  3. Click on the next line to add the next field
  4. Do the same for all the attributes identified in members" entity.

Your properties window should now look like this.

Repeat the above steps for all the identified entities.

Your diagram workspace should now look like the one shown below.

Lets create relationship between Members and Movie Rentals

  1. Select the place relationship using existing columns too
  2. Click on membership_number in the Members table
  3. Click on reference_number in the MovieRentals table

Repeat above steps for other relationships. Your ER diagram should now look like this -

Summary

  • ER Diagrams play a very important role in the database designing process. They serve as a non-technical communication tool for technical and non-technical people.
  • Entities represent real world things; they can be conceptual as a sales order or physical such as a customer.
  • All entities must be given unique names.
  • ER models also allow the database designers to identify and define the relations that exist among entities.

The entire ER Model is attached below. You can simple import it in MySQL Workbench

Модель была предложена Петером Пин-Шен Ченом в 1976 г.. На использовании разновидностей ER-модели основано большинство со­временных подходов к проектированию баз данных (главным образом, реляционных). Моделирование предметной области базируется на исполь­зовании графических диаграмм, включающих небольшое число разнород­ных компонентов. В связи с наглядностью представления концептуальных схем баз данных ER-модели получили широкое распространение в CASE-системах, поддерживающих автоматизированное проектирование реляци­онных баз данных.

Базовыми понятиями ER-модели являются сущность, связь и атрибут.

Сущность – это реальный или воображаемый объект, информация о котором представляет интерес. В диаграммах ER-модели сущность представляется в виде прямоугольника, содержащего имя сущности. При этом имя сущности - это имя типа, а не конкретного объекта - экземпляра этого типа. Каждый экземпляр сущности должен быть отличим от любого дру­гого экземпляра той же сущности.

Связь – это графически изображаемая ассоциация, устанавливаемая между двумя сущностями. Эта ассоциация всегда является бинарной и мо­жет существовать между двумя разными сущностями или между сущнос­тью и ей же самой (рекурсивная связь). В любой связи выделяются два кон­ца (в соответствии с парой связываемых сущностей), на каждом из кото­рых указывается имя конца связи, степень конца связи (сколько экземпля­ров данной сущности связывается), обязательность связи (т. е. любой ли экземпляр данной сущности должен участвовать в данной связи).

Связь представляется в виде линии, связывающей две сущности или ведущей от сущности к ней же самой. При этом в месте "стыковки" связи с сущностью используются трёхточечный вход в прямоугольник сущности. Если для этой сущности в связи могут использоваться много экземпляров сущности, и одноточечный вход, если в связи может участвовать только один экземпляр сущности. Обязательный конец связи изображается сплош­ной линией, а необязательный - прерывистой линией.

Как и сущность, связь - это типовое понятие, все экземпляры обеих пар связываемых сущностей подчиняются правилам связывания.

Рис. 12. Пример связи между сущностями

Данная диаграмма может быть интерпретирована следующим образом: Каждый СТУДЕНТ учится только в одной ГРУППЕ; Любая ГРУППА состоит из одного или более СТУДЕНТОВ. На следующем рисунке изображена сущность ЧЕЛОВЕК с рекурсив­ной связью, связывающей ее с ней же самой.

Рис. 13. Пример рекурсивной связи

Лаконичной устной трактовкой изображенной диаграммы является следующая:

Каждый ЧЕЛОВЕК является сыном одного и только одного ЧЕЛО­ВЕКА;


Каждый ЧЕЛОВЕК может являться отцом для одного или более ЛЮ­ДЕЙ ("ЧЕЛОВЕКОВ").

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

Рис. 14. Изображение сущности с ее атрибутами

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

Как и в реляционных схемах баз данных, в ER-схемах вводится поня­тие нормальных форм, причем их смысл очень близко соответствует смыс­лу реляционных нормальных форм. Заметим, что формулировки нормальных форм ER-схем делают более понятным смысл нормализации реляци­онных схем, Мы рассмотрим только очень краткие и неформальные опре­деления трех первых нормальных форм.

В первой нормальной форме ER-схемы устраняются повторяющиеся ат­рибуты или группы атрибутов, т. е. производится выявление неявных сущ­ностей, "замаскированных" под атрибуты.

Во второй нормальной форме устраняются атрибуты, зависящие только от части уникального идентификатора. Эта часть уникального идентифи­катора определяет отдельную сущность.

В третьей нормальной форме устраняются атрибуты, зависящие от ат­рибутов, не входящих в уникальный идентификатор. Эти атрибуты явля­ются основой отдельной сущности.

Мы остановились только на самых важных понятиях ER-модели дан­ных. К числу более сложных элементов модели относятся следующие:

Подтипы и супертипы сущностей. ER-модель позволяет задавать от­ношение IS-A между типами. При этом если Т, IS-A Т 2 (где Т 1 и Т 2 - типы сущностей), то Т, называется подтипом Т 2 , а Т 2 - супертипом Т.. Т. о., су­ществует возможность наследования типа сущности, исходя из одного или нескольких супертипов.

Связи "многие-со-многими". Иногда бывает необходимо связывать сущ­ности таким образом, что с обоих концов связи могут присутствовать не­сколько экземпляров сущности (например, все члены кооператива сообща владеют имуществом кооператива). Для этого вводится разновидность связи "многие-со-многими".

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

Каскадные удаления экземпляров сущностей. Некоторые связи бывают настолько сильными (конечно, в случае связи "один-ко-многим"), что при удалении опорного экземпляра сущности (соответствующего концу связи "один") нужно удалить и все экземпляры сущности, соответствующие кон­цу связи "многие". Соответствующее требование "каскадного удаления" можно сформулировать при определении сущности.

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

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

Пример разработки простой ER-модели

При разработке ER-моделей необходимо получить следующую информацию о предметной области:

1. Список сущностей предметной области.

2. Список атрибутов сущностей.

3. Описание взаимосвязей между сущностями.

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

Задача: разработать ER-модель для АИС некоторой оптовой торговой фирмы .

Основные этапы решения задачи

1. Изучение предметной области и процессов, происходящих в ней - как правило, осуществляется путем опроса сотрудников фирмы, чтения документации, изучения формы заказов, накладных и т.п.

Например, в ходе беседы с менеджером по продажам, выяснилось, что он (менеджер) считает, что проектируемая АИС должна выполнять следующие действия:

· Хранить информацию о покупателях.

· Печатать накладные на отпущенные товары.

· Следить за наличием товаров на складе.

2. Определение сущностей. Для этого необходимо выделить все существительные в предложениях, описывающих процессы, происходящие в изучаемой предметной области. Это и будут потенциальные кандидаты на сущности и их атрибуты. Проанализируем их (непонятные термины будем выделять знаком вопроса):

· Покупатель - кандидат на сущность.

· Накладная - кандидат на сущность.

· Товар - кандидат на сущность.

· (?) Склад - а вообще, сколько складов имеет фирма? Если несколько, то это будет кандидатом на новую сущность.

· (?) Наличие товара - это, скорее всего, атрибут, но атрибут какой сущности?

3. Определение связей между сущностями. Для рассматриваемого примера сразу возникает очевидная связь между сущностями: «Покупатели могут покупать много Товаров » и «Товары могут продаваться многим Покупателям ». Первый вариант диаграммы выглядит так:

Задав дополнительные вопросы менеджеру, были выявлены новые данные о том, что:

· фирма имеет несколько складов, а каждый товар может: храниться на нескольких складах; быть проданным с любого склада;

· покупатели покупают товары, получая при этом накладные, в которые внесены данные о количестве и цене купленного товара;

· каждый покупатель может получить несколько накладных;

· каждая накладная выписывается на одного покупателя;

· каждая накладная содержит хотя бы один товар (не бывает пустых накладных);

· каждый товар, в свою очередь, может быть продан нескольким покупателям через несколько накладных;

· каждая накладная должна быть выписана с определенного склада, и с любого склада может быть выписано много накладных.

Учитывая новые сведения, диаграмма примет следующий вид:

4. Определение атрибутов сущностей. Беседуя с сотрудниками фирмы, были выяснены следующие обстоятельства:

· каждый покупатель является юридическим лицом и имеет наименование, адрес, банковские реквизиты;

· каждый товар имеет наименование, цену, а также характеризуется единицами измерения;

· каждая накладная имеет уникальный номер, дату выписки, список товаров с количествами и ценами, а также общую сумму накладной; накладная выписывается с определенного склада и на определенного покупателя;

· каждый склад имеет свое наименование.

Снова выпишем все существительные, которые будут потенциальными атрибутами, и проанализируем их:

· Юридическое лицо – т.к. фирма работает только с юридическими лицами (не работает с физическими лицами), то такой атрибут выделять нет смысла.

· Наименование покупателя - характеристика покупателя.

· Адрес - характеристика покупателя.

· Банковские реквизиты - характеристика покупателя.

· Наименование товара - характеристика товара.

· (?) Цена товара - похоже, что это характеристика товара. Отличается ли эта характеристика от цены в накладной?

· Единица измерения - характеристика товара.

· Номер накладной - уникальная характеристика накладной.

· Дата накладной - характеристика накладной.

· (?) Список товаров в накладной - список не может быть атрибутом. Вероятно, нужно выделить этот список в отдельную сущность.

· (?) - это характеристика, но характеристика чего? Это характеристика не просто "товара", а "товара в накладной".

· (?) Цена товара в накладной - характеристика товара в накладной. Но цена товара уже встречалась выше - это одно и то же?

· Сумма накладной - характеристика накладной. Эта характеристика не является независимой. Сумма накладной равна сумме стоимостей всех товаров, входящих в накладную.

· Наименование склада - характеристика склада.

В ходе дополнительной беседы с менеджером удалось прояснить различные понятия цен. Оказалось, что каждый товар имеет некоторую текущую цену. Эта цена, по которой товар продается в данный момент. Естественно, что эта цена может меняться со временем. Цена одного и того же товара в разных накладных, выписанных в разное время, может быть различной. Таким образом, имеется две цены - цена товара в накладной и текущая цена товара.

С возникающим понятием «Список товаров в накладной» все довольно ясно. Сущности Накладная и Товар связаны друг с другом отношением типа много-ко-многим . Такая связь должна быть разделена на две связи типа один-ко-многим. Для этого требуется дополнительная сущность. Этой сущностью и будет сущность Список товаров в накладной . Связь ее с сущностями Накладная и Товар характеризуется следующими фразами: «Каждая накладная обязана иметь несколько записей из списка товаров в накладной», «Каждая запись из списка товаров в накладной обязана включаться ровно в одну накладную», «Каждый товар может включаться в несколько записей из списка товаров в накладной», «Каждая запись из списка товаров в накладной обязана быть связана ровно с одним товаром».

Атрибуты Количество товара в накладной и Цена товара в накладной являются атрибутами сущности Список товаров в накладной .

Точно также поступим со связью, соединяющей сущности Склад и Товар . Введем дополнительную сущность Товар на складе . Атрибутом этой сущности будет Количество товара на складе . Таким образом, товар будет числиться на любом складе и количество его на каждом складе будет свое.

В результате ER-диаграмма примет вид:

Модели данных

Модель предметной области поддерживается в памяти компьютера с помощью СУБД. В силу этого результат моделирования зависит не только от предметной области, но и от используемой СУБД, т.к. каждая СУБД предоставляет свой инструментарий для отображения предметной области. Этот инструментарий принято называть моделью данных .

Модель данных определяется тремя компонентами:

· допустимой организацией данных;

· ограничениями целостности (семантической);

· множеством операций, допустимых над объектами модели данных.

Допустимая организация данных определяется разнообразием и количеством типов объектов модели данных, ограничениями на структуру данных.

Ограничения целостности поддерживаются средствами, предусмотренными в модели данных для выражения ограничений на значения данных и ассоциации, которые (ограничения) характеризуют достоверные состояния БД.

Ряд ограничений целостности поддерживается моделью данных по умолчанию и распространяется на все типовые ситуации, возникновение которых возможно при внесении изменений в БД. Например, если между записями типа ГРУППА и СТУДЕНТ установлена иерархическая связь, то СУБД воспрепятствует удалению сведений о студенческой группе, если с ней связана хотя бы одна запись о студенте.

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

Множество операций определяет виды обработок, которым могут подвергаться объекты модели данных. Прежде всего, это – операции выборки данных и операции, изменяющие состояние БД.

Поддерживаемые СУБД модели данных традиционно разбиваются на: сетевые , иерархические , реляционные (имеются также другие модели данных). Эта классификация условна, т.к. каждая СУБД поддерживает свою оригинальную модель данных. И даже если модель данных относится к одной из выделенных разновидностей, она может содержать достаточно много отличительных особенностей. Наиболее распространенными моделями являются реляционные модели данных (РМД).