СУЩНОСТЬ-СВЯЗЬ (ER МОДЕЛЬ) Основные элементы: СущностиСущности –Атрибуты –Ключи СвязиСвязи
СУЩНОСТЬ-СВЯЗЬ (ER МОДЕЛЬ) Сущность любой различимый объект (объект, который мы можем отличить от другого) (люди, места, предметы, события, вкус, цвет). Пример: автомобиль
СУЩНОСТЬ-СВЯЗЬ (ER МОДЕЛЬ) Необходимо различать такие понятия, как тип сущности и экземпляр сущности. Тип сущности- автомобиль. Экземпляр сущности - автомобиль BMW 730d р061уо
СУЩНОСТЬ-СВЯЗЬ (ER МОДЕЛЬ) К.Дейт определяет три основные класса сущностей: –Стержневая сущность (стержень) –Характеристическая сущность (характеристика) –Обозначающая сущность или обозначение (кодовая сущность) –Ассоциативная сущность (ассоциация)
СУЩНОСТЬ-СВЯЗЬ (ER МОДЕЛЬ) Стержневая сущность (стержень) Человек
СУЩНОСТЬ-СВЯЗЬ (ER МОДЕЛЬ) Характеристическая сущность (характеристика) Паспорт
СУЩНОСТЬ-СВЯЗЬ (ER МОДЕЛЬ) Обозначающая сущность или обозначение (кодовая сущность) Пол
СУЩНОСТЬ-СВЯЗЬ (ER МОДЕЛЬ) Ассоциативная сущность (ассоциация) Регистрация брака
СУЩНОСТЬ-СВЯЗЬ (ER МОДЕЛЬ) Атрибут поименованная характеристика сущности. Его наименование должно быть уникальным для конкретного типа сущности, но может быть одинаковым для различного типа сущностей Пример: Цвет, марка и т.д. Атрибуты используются для определения того, какая информация должна быть собрана о сущности. Здесь также существует различие между типом и экземпляром. Здесь также существует различие между типом и экземпляром. Вопрос внести атрибут в состав сущности или выделить в отдельную характеристическую сущность - очень творческий. Вопрос внести атрибут в состав сущности или выделить в отдельную характеристическую сущность - очень творческий.
СУЩНОСТЬ-СВЯЗЬ (ER МОДЕЛЬ) Ключ минимальный набор атрибутов, по значениям которых можно однозначно найти требуемый экземпляр сущности Пример: регистрационный номер Суррогатный или эрзац-ключ
Один – к – одному Один – ко – многим Многие – ко – многим
12
13 Между сущностями может быть несколько связей В одной связи может участвовать несколько сущностей
СУЩНОСТЬ - СВЯЗЬ Стержневая сущность (стержень) – это независимая сущность.
СУЩНОСТЬ - СВЯЗЬ Ассоциативная сущность (ассоциация) – это связь вида "многие-ко-многим" между двумя или более сущностями или экземплярами сущности. Ассоциации рассматриваются как полноправные сущности: они могут участвовать в других ассоциациях и обозначениях точно так же, как стержневые сущности; могут обладать свойствами, т.е. иметь не только набор ключевых атрибутов, необходимых для указания связей, но и любое число других атрибутов, характеризующих связь.
СУЩНОСТЬ - СВЯЗЬ Характеристическая сущность (характеристика) – это связь вида "многие- к-одной" или "одна-к-одной" между двумя сущностями (частный случай ассоциации).
СУЩНОСТЬ - СВЯЗЬ Обозначающая сущность (обозначение) – это связь вида "многие-к-одной" или "одна- к-одной" между двумя сущностями и отличается от характеристики тем, что не зависит от обозначаемой сущности.
СУЩНОСТЬ - СВЯЗЬ Отношение X Отношение Y Атрибут 1 Атрибут 2 Атрибут 3 Атрибут 4 Атрибут 5 Атрибут 6 Атрибут 7 Отношение X Отношение Y Атрибут 4 Прямые связи
СУЩНОСТЬ - СВЯЗЬ Отношение X Атрибут A Атрибут B Отношение Y Общийобъект Косвенные связи Отношение X Отношение Y Атрибут Прямые связи Отношение X Отношение Y Общее место действия Общий интервал дат Связи по месту и времени
Первичный ключ – внешний ключ
RESTRICT (ОГРАНИЧИТЬ) - не разрешать выполнение операции, приводящей к нарушению ссылочной целостности. CASCADE (КАСКАДНОЕ ИЗМЕНЕНИЕ) - разрешить выполнение требуемой операции, но внести при этом необходимые изменения в связанных таблицах так, чтобы не допустить нарушения ссылочной целостности и сохранить все имеющиеся связи. Изменение начинается в родительской таблице и каскадно выполняется в дочерних таблицах. В реализации этой стратегии имеется одна тонкость, заключающаяся в том, что дочерние таблицы сами могут быть родительскими для некоторых третьих таблиц. При этом может дополнительно потребоваться выполнение какой-либо стратегии и для этой связи и т.д. Если при этом какая-либо из каскадных операций (любого уровня) не может быть выполнена, то необходимо отказаться от первоначальной операции и вернуть базу данных в исходное состояние. Это сложная стратегия, но она не нарушает связей между родительскими и дочерними таблицами. Эти стратегии являются стандартными и присутствуют во всех СУБД, в которых имеется поддержка ссылочной целостности. RESTRICT (ОГРАНИЧИТЬ) - не разрешать выполнение операции, приводящей к нарушению ссылочной целостности. CASCADE (КАСКАДНОЕ ИЗМЕНЕНИЕ) - разрешить выполнение требуемой операции, но внести при этом необходимые изменения в связанных таблицах так, чтобы не допустить нарушения ссылочной целостности и сохранить все имеющиеся связи. Изменение начинается в родительской таблице и каскадно выполняется в дочерних таблицах. В реализации этой стратегии имеется одна тонкость, заключающаяся в том, что дочерние таблицы сами могут быть родительскими для некоторых третьих таблиц. При этом может дополнительно потребоваться выполнение какой-либо стратегии и для этой связи и т.д. Если при этом какая-либо из каскадных операций (любого уровня) не может быть выполнена, то необходимо отказаться от первоначальной операции и вернуть базу данных в исходное состояние. Это сложная стратегия, но она не нарушает связей между родительскими и дочерними таблицами. Эти стратегии являются стандартными и присутствуют во всех СУБД, в которых имеется поддержка ссылочной целостности. ОСНОВНЫЕ СТРАТЕГИИ ПОДДЕРЖАНИЯ ССЫЛОЧНОЙ ЦЕЛОСТНОСТИ
IGNORE (ИГНОРИРОВАТЬ) - разрешить выполнять операцию без проверки ссылочной целостности. В этом случае в дочерней таблице могут появляться некорректные значения внешних ключей, вся ответственность за целостность базы данных ложится на программиста или пользователя. SET NULL (ЗАДАТЬ ЗНАЧЕНИЕ NULL) - разрешить выполнение требуемой операции, но все возникающие некорректные значения внешних ключей изменять на null- значения. Эта стратегия имеет два недостатка. Во-первых, для нее требуется разрешение на использование null-значений. Во-вторых, записи дочерней таблицы теряют связь с записями родительской таблицы. Установить, с какой записью родительской таблицы были связаны измененные записи дочерней таблицы, после выполнения операции уже нельзя. SET DEFAULT (ЗАДАТЬ ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ) - разрешить выполнение требуемой операции, но все возникающие некорректные значения внешних ключей изменять на некоторое значение, принятое по умолчанию. Достоинство этой стратегии по сравнению с предыдущей в том, что она позволяет не пользоваться null-значениями. Установить, с какими записями родительской таблицы были связаны измененные записи дочерней таблицы, после выполнения такой операции тоже нельзя. IGNORE (ИГНОРИРОВАТЬ) - разрешить выполнять операцию без проверки ссылочной целостности. В этом случае в дочерней таблице могут появляться некорректные значения внешних ключей, вся ответственность за целостность базы данных ложится на программиста или пользователя. SET NULL (ЗАДАТЬ ЗНАЧЕНИЕ NULL) - разрешить выполнение требуемой операции, но все возникающие некорректные значения внешних ключей изменять на null- значения. Эта стратегия имеет два недостатка. Во-первых, для нее требуется разрешение на использование null-значений. Во-вторых, записи дочерней таблицы теряют связь с записями родительской таблицы. Установить, с какой записью родительской таблицы были связаны измененные записи дочерней таблицы, после выполнения операции уже нельзя. SET DEFAULT (ЗАДАТЬ ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ) - разрешить выполнение требуемой операции, но все возникающие некорректные значения внешних ключей изменять на некоторое значение, принятое по умолчанию. Достоинство этой стратегии по сравнению с предыдущей в том, что она позволяет не пользоваться null-значениями. Установить, с какими записями родительской таблицы были связаны измененные записи дочерней таблицы, после выполнения такой операции тоже нельзя. ДОПОЛНИТЕЛЬНЫЕ СТРАТЕГИИ ПОДДЕРЖАНИЯ ССЫЛОЧНОЙ ЦЕЛОСТНОСТИ
Нотации. Сущности. 23
Нотации. Связи. 24
25