Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[конспект] Технологии баз данных [v0.8.1].pdf
Скачиваний:
79
Добавлен:
21.03.2016
Размер:
1.3 Mб
Скачать

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

Определение 2. Несогласованным значением внешнего ключа называется такое его непустое (т. е. отличное от !) значение в ссылающемся на него отношении, для которого не существует согласованного значения потенциального ключа в отношении, на которую создана ссылка.

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

Литература

1.Дейт К. Дж. Отсутствующая информация / пер. с англ. К. А. Птицына // Введение в системы баз данных (глава 19). — 8-е изд. — М. : Издательский дом „Вильямс“, 2005.

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

6.1. Ограниченность реляционной модели при проектировании

баз данных

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

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

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

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

Несмотря на то, что процесс проектирования начинается с выделения некоторых существенных для приложения объектов предметной области («сущностей») и выявления связей между этими сущностями, реляционная модель данных не предлагает какого-либо механизма для разделения сущностей и связей.

6.2. Общий подход семантического моделирования

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

Вобщем случае семантическое моделирование состоит из следующих этапов:

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

30

II.Определение набора соответствующих символических (т. е. формальных) объектов, которые могут использоваться для представления выявленных семантических концепций.

III. Определение набора формальных общих правил целостности (метаограничений), предназначенных для работы с выявленными формальными объектами.

IV. Задание набора формальных операторов, предназначенных для манипулирования формальными объектами.

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

6.3. Модель «сущность–связь». ER-диаграмма

Первоначальная модель «сущность-связь» (entity–relationship model) была предложена Питером Чэнем в 1976 году [1]. Вместе с ней была предложена технология построения диаграмм, называемых ER-диаграммами. Здесь будет приведена довольно упрощенная модель «сущностей–связей» без рассмотрения подтипов, супертипов, взаимно исключающих связей и другого. Немного дополнительной информации можно найти, например, в [5].

Основные понятия

Модель «сущность-связь» состоит из следующих объектов:

1.Сущности — некоторые различимые объекты.

2.Связи — сущность, служащая для обеспечения взаимодействия между двумя или более другими сущностями.

3.Свойства сущностей и связей — элементы информации, описывающие сущности и связи.

Определение 1. Сущностью (entity) называются понятие, которое могут быть четко идентифицировано и отражает реальный или представляемый объект, информация о котором должна сохраняться и быть доступной1.

Сущность называется слабой (weak), если её существование зависит от другой сущности (т. е. она не может существовать, если этой другой сущности не существует), в противном случае сущность называется обычной (regular) (или сильной (strong)).

Определение 2. Связью (relationship) называется ассоциация, объединяющая несколько сущностей. Сущности, включенные в связь, называются участницами (participants) связи, а их количество —

степенью (degree) связи.

Заметим, что связь может соединять одну и ту же сущность — ведь в определении не требуются различные сущности. Такого рода связи, когда одна и та же сущность участвует несколько раз в качестве участницы, называются рекурсивные (recursive). Например, пусть есть сущность «ЧЕЛОВЕК»: можно построить связь «ЯВЛЯЕТСЯ РОДИТЕЛЕМ», соединяющей сущность «ЧЕЛОВЕК» с сущностью «ЧЕЛОВЕК», означающая, что для некоторого экземпляра p сущности «ЧЕЛОВЕК» может существовать некоторый экземпляр сущности «ЧЕЛОВЕК», являющийся ребенком для p.

Не следует путать типы (types) сущностей и экземпляры типов (instances of types) сущностей (или проще: не нужно путать сущности и их экземпляры). То же самое со связями, хотя для них такая тонкость обычно не учитывается. Экземпляром связи является однозначно идентифицируемая ассоциация, которая включает по одному экземпляру каждой сущности-участницы данного типа связи.

Пусть R является типом связи, включающий тип сущности E в качестве участницы.

1 По это «определение» является тавтологией, но в области семантического моделирования стремятся максимально избегать формальностей.

31

Определение 3. Если каждый экземпляр сущности участвует по крайней мере в одном экземпляре связи R, то участие сущности в связи R называется полным (total), в противном случае — частичным

(partial).

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

Тогда можно выделить следующие виды двусторонних связей степени 2:

1.«Один к одному» (One-to-One) — каждому экземпляру одной сущности-участницы ставится в соответствие ровно один экземпляр другой сущности-участницы.

2.«Один ко многим» (One-to-Many) или «многие к одному» (Many-to-One) — каждому экземпля-

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

3.«Многие ко многим» (Many-to-Many) для сущностей E1 и E2 — каждому экземпляру сущности E1 ставится в соответствие ноль или более экземпляров сущности E2 и наоборот: каждому экземпляру сущности E2 ставится в соответствие ноль или более экземпляров сущности E1.

Примером связи «многие ко многим» может служить двусторонняя связь «ЯВЛЯЕТСЯ РЕБЕНКОМ/ЯВЛЯЕТСЯ РОДИТЕЛЕМ», соединяющей сущность «ЧЕЛОВЕК» сама с собой: ведь у каждого человека может быть один или несколько детей или не быть вовсе, в то же время у каждого ребенка есть несколько родителей.

Определение 4. Свойством (атрибутом; property, attribute) сущности (или связи) является элемент, служащий для уточнения, идентификации, классификации, числовой характеристики или выражения состояния сущности (связи).

Существуют различные классификации свойств и характеристики:

Простые (simple) и составные (composite) свойства: простые состоят из одного компонента с независимым существованием, а составные — из нескольких компонентов, каждый из которых характеризуется независимым существованием. Составные свойства можно разбить на несколько простых.

Ключевые (key) свойства — свойства, которые могут оказаться уникальным только в определенном контексте. Вообще в ER-модели можно ввести понятия различных ключей, как это делалось при определении реляционной модели, подробнее в [4].

Идентифицирующие (identifying) и неидентифицирующие (зависимые; non-identifying) свя-

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

Однозначные (single-) и многозначные (multi-valued) свойства: однозначные содержат одно значение для каждого экземпляра сущности (связи), а многозначные — несколько значений.

Возможность наличия отсутствующих (missing) значений свойства — некоторые экземпляры сущности или связи (при допущении) могут принимать неизвестное значение свойства (специальное !-значение).

Базовые (base) и производные (derived) свойства: значение производного свойства можно вычислить на основании значений других свойств, а с базовыми свойствами такое не выйдет.

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

Существуют различные нотации визуального отображения модели «сущностей–связей». Приведем основные:

32

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

Нотация Crow’s foot («воронья лапка»), еще называемая как Fork («вилка»), но первоначально автор Гордон Эверест назвал её Inverted Arrow («перевёрнутая стрелка»): одна из самых популярных нотаций; сущности обозначаются прямоугольниками, связи — линиями со специальными знаками на концах, характеризующие допустимое количество связываемых экземпляров сущностей (0, 1, много); свойства имеют только сущности и размещаются в блоке сущности.

Нотация IDEF1X (Integration Definition for Information Modeling) похожа на нотацию Crow’s foot, только символы связей другие.

Классовая диаграмма UML — это одна из классовых диаграмм семейства UML (Unified Modeling Language), где классы связаны с данными сущностей.

И многие другие.

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

Chen

Crow’s foot

 

IDEF1X

 

UML

 

Описание

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сущность

 

 

 

Сущность

Сущность

 

 

 

 

Обычная (сильная) сущность

 

 

 

Сущность

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сущность

 

 

 

Сущность

Сущность

 

 

 

 

Слабая сущность

 

 

 

Сущность

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Связь

 

 

 

 

 

 

 

 

 

 

 

 

Идентифицирующая связь

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Связь

 

 

 

 

 

 

 

 

 

 

 

 

Неидентифицирующая связь

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сущность

Сущность

Сущность

 

 

 

 

Связь ко одному

Сущность

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сущность

 

Сущность

Сущность

 

 

 

 

Связь к нулю или одному эк-

Сущность

 

 

 

 

 

 

 

 

 

 

 

земпляру

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сущность

 

Сущность

Сущность

 

 

 

 

Связь к нулю или более эк-

Сущность

 

 

 

 

 

 

 

 

земплярам

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сущность

 

Сущность

Сущность

 

 

 

 

Связь к одному или более эк-

Сущность

 

 

 

 

 

 

 

 

 

 

 

земплярам

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сущность

Сущность

 

 

 

Ключевое свойство сущности

Свойство

 

 

 

 

Сущность

 

 

 

 

 

Свойство

 

Свойство

 

 

Свойство

 

или связи

 

 

 

 

ВК

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Свойство

 

Обычное свойство сущности

Свойство

 

 

 

 

Свойство

 

Свойство

 

 

 

 

 

 

 

 

 

 

 

 

 

или связи

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Проектирование базы данных с помощью ER-модели

Каждая сущность превращается в отношение. Имя сущности становится именем отношения. Экземплярам сущности соответствуют кортежи соответствующего отношения.

Каждое свойство становится атрибутом отношения с тем же именем; может выбираться более точный формат представления данных. Атрибуты, соответствующие необязательным свойствам, могут содержать неопределенные !-значения; атрибуты, соответствующие обязательным свойствам, — не могут.

33