
- •В.В. Мокеев методология моделирования данных в среде erwin
- •Оглавление
- •Тема 1. Создание диаграммы сущность-связь Основные цели
- •Теоретическая часть
- •Учебное задание
- •Технология выполнения учебного задания
- •Рекомендации при выборе первичного ключа.
- •Контрольные вопросы
- •Самостоятельное задание
- •Тема 2. Разработка модели данных, основанной на ключах Основные цели
- •Теоретическая часть
- •Учебное задание
- •Технология выполнения учебного задания
- •Контрольные вопросы
- •Учебное задание
- •Технология выполнения учебного задания
- •Контрольные вопросы
- •Самостоятельное задание
- •Тема 4. Создание физического уровня модели Основные цели
- •Теоретическая часть
- •Учебное задание
- •Технология выполнения учебного задания
- •Контрольные вопросы
- •Учебное задание
- •Технология выполнения учебного задания
- •Контрольные вопросы
- •Самостоятельное задание
- •Приложение 1. Методология моделирования данныхIdef1x
- •Диаграмма сущность-связь
- •Сущность
- •Именование сущностей
- •Описание сущностей
- •Атрибут
- •Тип связи
- •Идентифицирующая и неидентифицирующая связи
- •Связи типа «один-ко-одному», «один-ко-многим», «многие ко-многим»
- •Имя связи
- •Мощность связи
- •Правила ссылочной целостности
- •Модель данных, основанная на ключах
- •Правила ссылочной целостности
- •Зависимые и независимые сущности.
- •Идентифицирующие и неидентифицирующие связи.
- •Связь «многие ко многим»
- •Распространенные ошибки при моделировании сущностей и выборе ключей
- •Моделирование ролей
- •Перегрузка сущностей
- •Избыточные сущности
- •Выбор неправильного первичного ключа
- •Использование неудачных имен сущностей
- •Использование неудачных описаний сущностей
- •Полная атрибутивная модель
- •Нормализация
- •Денормализация
- •Создание физического уровня модели
- •Приложение 2. Наиболее часто задаваемые вопросы
Правила ссылочной целостности
При генерации схемы базы данных на основе опций логической модели, задаваемых во вкладке Rolename/RI Actions, будут сгенерированы правила декларативной ссылочной целостности, которые должны быть предписаны для каждой связи, и триггеры, обеспечивающие ссылочную целостность.
Триггеры представляют собой программы, выполняемые всякий раз при выполнении команд вставки, замены или удаления (INSERT,UPDATEилиDELETE).
Например, между сущностями АГЕНТ и ФИЛИАЛ существует идентифициующая связь. Что будет, если удалить филиал? Экземпляр сущности АГЕНТ не может существовать без филиала (атрибут первичного ключа «В каком филиале работает/Номер филиала» не может принимать значениеNULL); следовательно, нужно либо запретить удаление филиала, пока в ней числится хотя бы один агент.
Возможна установка следующих правил удаления (если таковые поддерживаются СУБД):
SET DEFAULT— при удалении атрибуту внешнего ключа присваивается значение по умолчанию. Например, при удалении филиала фирмы все агенты могут быть переведены в другой филиал.
NONE— при удалении значение атрибута внешнего ключа не меняется. Запись об агенте «повисает в воздухе», т. е. ссылается на несуществующий филиал. Такая ситуация характерна для «плоских» таблиц. Например, если информация об агентах и филиалах фирмы хранится в dbf-файлах, можно удалить запись о филиале, при этом файл агентов «ничего не будет знать» о том, что соответствующего филиала не существует. Поэтому в настольных или файл-серверных системах функциональность, обеспечивающая правила ссылочной целостности, реализуется в клиентском приложении.
RESTRICT — для удаления записи необходимо удалить все дочерние записи с внешним ключом, равным первичному ключу удаляемой записи. Например, для удаления филиала сначала нужно удалить всех агентов этого филиала.
CASCADE. — при удалении опорного экземпляра сущности (соответствующего концу связи «один») нужно удалить и все экземпляры сущности, соответствующие концу связи «многие». Например, вместе с филиалом фирмы будут удаляться все агенты данного филиала.
Правила удаления управляют тем, что будет происходить в базе данных при удалении строки. Аналогично правила вставки и обновления управляют тем, что будет происходить с базой данных, если строки изменяются или добавляются.
Зависимые и независимые сущности.
При построении модели, основанной на ключах, приходится сталкиваться с сущностями, уникальность которых зависит от значений атрибута внешнего ключа. Для этих сущностей внешний ключ является частью первичного ключа дочернего объекта.
Дочерняя сущность, уникальность которой зависит от атрибута внешнего ключа, называется зависимой сущностью.
Рис. П7. Пример зависимых сущностей
В примере на рис. П7 сущность «СЕАНС» является зависимой сущностью потому, что его идентификация зависит от сущностей «ЗРИТЕЛЬ» и «ФИЛЬМ». В обозначениях IDEF1X зависимые сущности представлены в виде закругленных прямоугольников.
Зависимые сущности далее классифицируются на
сущности, которые не могут существовать без родительской сущности
сущности, которые не могут быть идентифицированы без использования ключа родителя (сущности, зависящие от идентификации).
Сущность Сеанс принадлежит к первому типу зависимых сущностей, так как сеанс не может существовать без фильма.
Рассмотрим две сущности: «СТРАХОВАНИЕ», в процессе которого могут учитываться «Страховые факторы», снижающие страховые риски. Связь между этими двумя сущностями может быть выражена в виде «ФАКТОР РИСКА» <снижает риск> в одном или нескольких «СТРАХОВАНИЯХ». Но существуют такие страхования (страховки), для которых нет факторов, снижающих страховой риск. В этом случае, «СТРАХОВАНИЕ» может быть идентифицировано с использованием нулевого ключа родителя («ФАКТОР РИСКА»), но без экземпляра родительской сущности.
Сущности, независящие при идентификации от других объектов в модели, называются независимыми сущностями. В вышеописанном примере сущности Зритель и Фильм можно считать независимыми. В IDEF1X независимые сущности представлены в виде прямоугольников.