Язык ER-моделирования

Содержание

Слайд 2

Saturday, September 02, 2023 СОДЕРЖАНИЕ Общие сведения Основные понятия (сущность, атрибут,

Saturday, September 02, 2023

СОДЕРЖАНИЕ

Общие сведения
Основные понятия (сущность, атрибут, связь)
Более сложные понятия
Сопутствующие

понятия
Проектирование реляционной базы данных
Слайд 3

Saturday, September 02, 2023 Общие сведения Это язык определения информационной модели

Saturday, September 02, 2023

Общие сведения

Это язык определения информационной модели ПО.
Базируется

на концепции, согласно которой информацион- ная модель ПО может быть описана в терминах: сущность, атрибут, связь.
Используется на этапе анализа и прежде всего – концептуального моделирования.
Язык является существенно графическим.
Слайд 4

Saturday, September 02, 2023 Сущности Сущность - это реальный или воображаемый

Saturday, September 02, 2023

Сущности

Сущность - это реальный или воображаемый объект, информация

о котором подлежит сбору или хранению.

ИМЯ СУЩНОСТИ

Графически сущность представляется поимено- ванным прямоугольником с закругленными углами

Имя сущности дается в единственном числе заглавными буквами.

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

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

Слайд 5

Saturday, September 02, 2023 Связи Связь - это некоторая представляющая интерес

Saturday, September 02, 2023

Связи

Связь - это некоторая представляющая интерес поименованная ассоциация

двух сущностей.

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

Слайд 6

Saturday, September 02, 2023 Представление связей

Saturday, September 02, 2023

Представление связей

Слайд 7

Saturday, September 02, 2023 Именование и чтение связей При чтении связи

Saturday, September 02, 2023

Именование и чтение связей

При чтении связи со обязательной

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

Любой БИЛЕТ всегда выписывается на одного и только одного ПАССАЖИРа.
Любой ПАССАЖИР в общем случае имеет на свое имя один или не сколько БИЛЕТов.

Слайд 8

Saturday, September 02, 2023 Допустимые и недопустимые связи А В А

Saturday, September 02, 2023

Допустимые и недопустимые связи

А

В

А

В

А

А

В

А

В

С

А

В

А

А

А

Допустимые

Недопустимые

Слайд 9

Saturday, September 02, 2023 Атрибуты Атрибут - это любая деталь или

Saturday, September 02, 2023

Атрибуты

Атрибут - это любая деталь или аспект, способствующие

качественному или количественному описанию сущности, ее идентификации, классификации или отражению ее состояния.

Приводить атрибуты ER-схеме не обязательно.
Желательно приводить обязательные и идентифицирующие атрибуты (см. далее).
Можно приводить атрибуты с примером его значения.

Слайд 10

Saturday, September 02, 2023 Правило (1) – атрибут описывает одну сущность

Saturday, September 02, 2023

Правило (1) – атрибут описывает одну сущность

Атрибут должен

описывать ту сущность, к которой он отнесен!

Атрибутом какой сущности является "номер места": − билета, купона, посадочного талона, воздушного судна?

Слайд 11

Saturday, September 02, 2023 Правило (1) – атрибут описывает одну сущность

Saturday, September 02, 2023

Правило (1) – атрибут описывает одну сущность

Атрибут должен

описывать ту сущность, к которой он отнесен!

Атрибутом какой сущности является "номер места": − билета, купона, посадочного талона, воздушного судна?

Очевидно, это атрибут сущности МЕСТО

Слайд 12

Saturday, September 02, 2023 Правило (2) – атрибуты не должны повторяться

Saturday, September 02, 2023

Правило (2) – атрибуты не должны повторяться (1NF)

Сущность

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

Saturday, September 02, 2023 Правило (3) – атрибут может стать сущностью

Saturday, September 02, 2023

Правило (3) – атрибут может стать сущностью

Атрибут может

стать сущностью, если он представляет самостоятельный интерес и обладает собственными связями и атрибутами.
Слайд 14

Saturday, September 02, 2023 Правило (4) – факультативность атрибутов Атрибут, значение

Saturday, September 02, 2023

Правило (4) – факультативность атрибутов

Атрибут, значение которого может

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

обязательный
факультативный

Слайд 15

Saturday, September 02, 2023 Правило (5) – сущность обладает уникальной идентификацией

Saturday, September 02, 2023

Правило (5) – сущность обладает уникальной идентификацией

Каждая сущность

должна однозначно идентифицироваться посредством некоторой комбинации атрибутов и/или связей

Этот атрибут входит в состав уникального идентификатора сущности МЕСТО

Эта связь входит в состав уникального идентификатора сущности МЕСТО

Слайд 16

Saturday, September 02, 2023 Правило (6) – полнота уникального идентификатора (2NF)

Saturday, September 02, 2023

Правило (6) – полнота уникального идентификатора (2NF)

Значения

атрибутов, не входящих в уникальный идентификатор, должны зависеть ОТ ВСЕГО уникального идентификатора.

Удалите атрибуты, значения которых зависят лишь от той или иной части идентификатора. Присутствие таких атрибутов, как правило, указывает на наличие пропущенной сущности, связанной с данной

Слайд 17

Saturday, September 02, 2023 Правило (7) – зависимость только от уникального

Saturday, September 02, 2023

Правило (7) – зависимость только от уникального идентификатора

(3NF)

Значения атрибутов, не входящих в уникальный идентификатор, должны зависеть ТОЛЬКО ОТ уникального идентификатора.

Слайд 18

Saturday, September 02, 2023 Более сложные понятия супертип/подтип, базисные и переходные

Saturday, September 02, 2023

Более сложные понятия

супертип/подтип,
базисные и переходные сущности,
разрешение связей многие-ко-многим,


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

Saturday, September 02, 2023 Подтипы/супертипы Подтип - это разновидность сущности. Подтип

Saturday, September 02, 2023

Подтипы/супертипы

Подтип - это разновидность сущности.
Подтип неявно наследует

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

супертипы
подтипы

Слайд 20

Saturday, September 02, 2023 Пример типа/супертипа НЕРЕГУЛЯРНЫЙ ПОЛЕТ и РЕГУЛЯРНЫЙ РЕЙСОВЫЙ

Saturday, September 02, 2023

Пример типа/супертипа

НЕРЕГУЛЯРНЫЙ ПОЛЕТ и РЕГУЛЯРНЫЙ РЕЙСОВЫЙ ПОЛЕТ имеют один

и тот же атрибут – НОМЕР (наследуется из супертипа РЕЙСОВЫЙ ПОЛЕТ), но отличаются связями!

Сущность является простой, если она не является подтипом или сама не имеет подтипов.

Слайд 21

Saturday, September 02, 2023 Разрешение связей многие-ко-многим До После Связи многие-ко-многим

Saturday, September 02, 2023

Разрешение связей многие-ко-многим

До

После

Связи многие-ко-многим часто встречаются на

ранних этапах анализа ПО. Это, как правило, свидетельствует о том, что опущена сущность. Разрешение достигается введением новой переходной сущности, разделяющей окончания такой связи.
Слайд 22

Saturday, September 02, 2023 Взаимоисключающие связи Две или более связей одной

Saturday, September 02, 2023

Взаимоисключающие связи

Две или более связей одной и той

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

Saturday, September 02, 2023 Свойства взаимоисключающих связей Окончания связей, которые пересекает

Saturday, September 02, 2023

Свойства взаимоисключающих связей

Окончания связей, которые пересекает попереч- ная дуга,

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

Пример нарушения

Слайд 24

Saturday, September 02, 2023 Непереместимые связи Связь является непереместимой, если экземпляр

Saturday, September 02, 2023

Непереместимые связи

Связь является непереместимой, если экземпляр сущности, будучи

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

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

Указатель неперместимости

Слайд 25

Saturday, September 02, 2023 Квалифицированная степень Квалифицированная степень предоставляет возможность указать

Saturday, September 02, 2023

Квалифицированная степень

Квалифицированная степень предоставляет возможность указать пределы для

мощности (степени) окончания связи, ее стандартное, максимальное, среднее и максимальное значение.
Слайд 26

Saturday, September 02, 2023 Неизбыточные связи ER-диаграмма не должна содержать связей,

Saturday, September 02, 2023

Неизбыточные связи

ER-диаграмма не должна содержать связей, которые всегда,

при любых обстоятельствах, могут быть выведены из других связей.

Примечание: В БД избыточность является обычным способом достижения необ- ходимого быстродействия. Однако решения такого рода должны приниматься проектировщиком и не должны предопределяться системным аналитиком .

Связи не избыточны

Связи избыточны

Слайд 27

Saturday, September 02, 2023 Каскадное удаление В реальном мире мы, когда

Saturday, September 02, 2023

Каскадное удаление

В реальном мире мы, когда теряем о

чем-то все сведения, часто неявно теряем и все сведения о каких-то других взаимосвязанных вещах. Например, если мы удалим все сведения о БИЛЕТЕ, мы неявно удалим и все сведения о его КУПОНАХ.
Это так называемая зависимость по существованию

X - удалить всех детей при удалении родителя;
C - запретить удаление родителя, если существуют дети;
N - родители и дети могут удаляться независимо.

Слайд 28

Saturday, September 02, 2023 Правила каскадного удаления

Saturday, September 02, 2023

Правила каскадного удаления

Слайд 29

Saturday, September 02, 2023 Производные атрибуты

Saturday, September 02, 2023

Производные атрибуты

Слайд 30

Saturday, September 02, 2023 Основные понятия, связанные с сущностями Независимые/зависимые сущности

Saturday, September 02, 2023

Основные понятия, связанные с сущностями

Независимые/зависимые сущности
Базисные сущности
Родительские/дочерние сущности
Сущности

супертипы/подтипы и простые сущности
Переходные сущности и сущности-связки
Сущности-классификаторы
Слайд 31

Saturday, September 02, 2023 Сопутствующие понятия потоки данных - моделирование связей,

Saturday, September 02, 2023

Сопутствующие понятия

потоки данных - моделирование связей, существующие между

прикладными задачами, изображая данные, поступающие на вход и выход каждой задачи;
хранилище данных – способ объединения различных потоков данных в виде единого места хранения;
прикладные задачи – потребители данных;
события – инициаторы прикладных задач.
Слайд 32

Saturday, September 02, 2023 Проектирование реляционной базы данных Шаг 1. Преобразование

Saturday, September 02, 2023

Проектирование реляционной базы данных

Шаг 1. Преобразование сущностей в

таблицы.
Шаг 2. Преобразование атрибутов в столбцы.
Шаг 3. Пребразование связей один-ко-многим и один-к-одному во внешние ключи.
Шаг 4. Преобразование связей многие-ко-многим в сущности-связки
Шаг 5. Представление уникальных идентификаторов (ключами таблиц или столбцами-заменителями)
Шаг 6. Проектирование подтипов
Шаг 7. Проектирование взаимоисключающих связей
Шаг 8. Проектирование производных атрибутов
Слайд 33

Saturday, September 02, 2023 Шаг 1. Преобразование сущностей в таблицы Каждая

Saturday, September 02, 2023

Шаг 1. Преобразование сущностей в таблицы

Каждая простая сущность

преобразуется в таблицу. В качестве имени отношения используются иена сущностей (возможно во множественном числе)

ER-схема

Отношения

Слайд 34

Saturday, September 02, 2023 Шаг 2. Преобразование атрибутов в столбцы Каждый

Saturday, September 02, 2023

Шаг 2. Преобразование атрибутов в столбцы

Каждый атрибут преобразуется

в столбец с тем же именем. В этот момент выбирается формат столбца.
Факультативные атрибуты становятся null-столбцами.
Обязательные атрибуты становятся not-null-столбцами

Отношение с атрибутами

ER-схема

Слайд 35

Saturday, September 02, 2023 Шаг 3. Пребразование связи один-к-одному во внешний

Saturday, September 02, 2023

Шаг 3. Пребразование связи один-к-одному во внешний ключ

(1)

Первичный ключ любой сущности используется в качестве внешнего ключа другой сущности.
Внешний ключ стано- вится NOT NULL.
Обязательность связи со стороны первичного ключа поддерживается с помощью триггера.

CREATE TABLE PERSON ( PrsID NUMBER(3) PRIMARY KEY, ... );
CREATE TABLE AUTOBIOGRAPHY ( ... PrsID NOT NULL REFERENCES PERSON, ...);

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

Слайд 36

Saturday, September 02, 2023 Шаг 3. Пребразование связи один-к-одному во внешний

Saturday, September 02, 2023

Шаг 3. Пребразование связи один-к-одному во внешний ключ

(2)

Первичный ключ сущ- ности ЧЕЛОВЕК исполь- зуется в качестве внешнего ключа в сущности АВТОБИОГРАФИЯ.
Внешний ключ стано- вится NOT NULL.

CREATE TABLE PERSON ( PrsID NUMBER(3) PRIMARY KEY, ... );
CREATE TABLE AUTOBIOGRAPHY ( ... PrsID NOT NULL REFERENCES PERSON, ...);

Слайд 37

Saturday, September 02, 2023 Шаг 3. Пребразование связи один-ко-многим во внешний

Saturday, September 02, 2023

Шаг 3. Пребразование связи один-ко-многим во внешний ключ

Ключ

сущности у окончания «один» используется в качестве внешнего ключа сущности у окончания «много».
Если окончание «много» является обязательным, то внешний ключ имеет ограничение NOT NULL
Если окончание «один» является обязательным, то это поддерживается соответствующим триггером.

CREATE TABLE TICKET ( TickID NUMBER(3) PRIMARY KEY, ... );
CREATE TABLE COUPON ( ... TickID NOT NULL REFERENCES TICKET, ...);

Слайд 38

Saturday, September 02, 2023 Шаг 4. Преобразование связей многие-ко-многим в сущности-связки

Saturday, September 02, 2023

Шаг 4. Преобразование связей многие-ко-многим в сущности-связки

Каждая из

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

CREATE TABLE TICKET ( TickID NUMBER(3) PRIMARY KEY, ... );
CREATE TABLE FLIGHT ( FlhtID NUMBER (3) PRIMARY KEY, ...);
CREATE TABLE LINK ( TickID REFERENCES TICKET, FlhtID REFERENCES FLIGHT, CONSTRAINT prk PRIMARY KEY (TickID, FlhtID);

Слайд 39

Saturday, September 02, 2023 Шаг 5. Представление уникальных идентификаторов ключами таблиц

Saturday, September 02, 2023

Шаг 5. Представление уникальных идентификаторов ключами таблиц

Уникальнй

идентифика- тор составляет первич- ный ключ.
Если в состав уникаль- ного идентификатора входит кончание связи, то первчный ключ со- держит соответствую- щий внешний ключ

CREATE TABLE AIRCRAFT ( AirNo NUMBER(3) PRIMARY KEY, ... ); CREATE TABLE OFFICE ( OffID NUMBER (3) PRIMARY KEY, ...); CREATE TABLE SERVICE ( SrvDate DATE NOT NULL, Result CHAR(50), AirNo NOT NULL REFERENCES AIRCRAFT, OffID NOT NULL REFERENCES OFFICE, CONSTRAINT prk PRIMARY KEY (SrvDate, AirNo, OffID);

Слайд 40

Saturday, September 02, 2023 Шаг 5. Представление уникальных идентификаторов столбцами-заменителями Используется

Saturday, September 02, 2023

Шаг 5. Представление уникальных идентификаторов столбцами-заменителями

Используется в том

случае, когда имеет-ся длинная цепочка вхождения окончаний связей в первичные ключи.
В каждую создавае- мую таблицу вводит- ся дополнительный столбец, которому придается статус пе- рвичного ключа.
Всем уникальным ИД придаются ограниче- ния целостности UNIQUE, NOT NULL.

CREATE TABLE ROUTE ( RoID NUMBER(3)PRIMARY KEY, RoNO NUMBER(5)UNIQUE NOT NULL); CREATE TABLE ROUTE_FLIGHT ( FlID NUMBER(3) PRIMARY KEY, FlDate DATE NOT NULL, FlTime TIME NOT NULL, RoID NUMBER (3) REFERENCES ROUTE, CONSTRAINT unq UNIQUE (FlDate, FlTime, RoID)); CREATE TABLE BOARDING_PASS ( BPID NUMBER(3)PRIMARY KEY, BPDate DATE NOT NULL, BPTime TIME NOT NULL, FlID NUMBER(3) REFERENCES ROUTE_FLIGHT, CONSTRAINT unq2 UNIQUE (BPDate, BPTime, FlID));

Слайд 41

Saturday, September 02, 2023 Шаг 6. Проектирование подтипов

Saturday, September 02, 2023

Шаг 6. Проектирование подтипов

Слайд 42

Saturday, September 02, 2023 Шаг 7. Проектирование взаимоисключающих связей

Saturday, September 02, 2023

Шаг 7. Проектирование взаимоисключающих связей