- •Новосибирский государственный университет экономики и управления
- •«Проектирование информационных систем» Раздел «Моделирование и проектирование данных»
- •Новосибирск 2009
- •1. Концепции er-модели
- •Примеры сущностей с физическим и концептуальным существованием
- •Способы представления сущностей на диаграмме
- •Представление атрибутов на диаграммах
- •1.3. Типы связей
- •Представление связей на диаграммах
- •1.4. Атрибуты связей
- •Date_View и Comments
- •2. Структурные ограничения
- •2.1. Показатель кардинальности
- •Связи «один к одному»
- •Связь „один ко многим"
- •Связи "многие ко многим"
- •2.2. Степень участия
- •3. Проблемы er-моделирования
- •3.1. Ловушки разветвления
- •3.2. Ловушки разрыва
- •4. Eer-модель
- •4.1. Суперклассы и подклассы типов сущностей
- •4.2. Наследование атрибутов
- •4.3. Специализация
- •4.4. Генерализация
- •4.5. Ограничения, накладываемые на процедуры специализации и генерализации
- •4.6. Категоризация
3.1. Ловушки разветвления
Ловушка разветвления: имеет место в том случае, когда модель отображает связь между типами сущностей, но путь между отдельными сущностями этого типа определен неоднозначно.
Ловушка разветвления возникает в случае, когда две или больше связей типа 1:М разветвляются из одной сущности. Потенциальная ловушка разветвления показана на рис.3.1, на котором две связи типа 1:М (IsAllocated и Operates) выходят из одной и той же сущности Division.
Рассмотрев показанную на рис. 3.1 ER-модель, можно сделать вывод, что один отдел (Division) может быть представлен сразу в нескольких отделениях компании (Branch) и в нем может работать многочисленный штат сотрудников. Проблемы начинаются при попытках выяснить, в каком отделении компании работает каждый из сотрудников отдела. Для исследования этой проблемы рассмотрим показанную на рис. 3.1 ER-модель на уровне отдельных сущностей, для чего представим ее в виде семантической сетевой модели — (рис. 3.2).
Рис. 3.1. Пример ловушки разветвления
Рис. 3.2. Семантическая сетевая модель ER-модели, показанной на рис. 3.1
С помощью семантической сетевой модели попробуем ответить на такой вопрос: "В каком отделении компании работает сотрудник с номером 'SG37'?". К сожалению, на этот вопрос нельзя дать ответ, используя только данную структуру. Из семантической модели, показанной на рис. 3.2, можно сделать вывод, что этот сотрудник работает в отделении 'ВЗ' или 'В7'. Неспособность дать точный ответ на поставленный вопрос является результатом ловушки разветвления, связанной с неправильной интерпретацией связей между сущностями Staff, Division и Branch. Устранить эту проблему можно путем перестройки ER-модели для представления правильного взаимодействия между этими сущностями так, как показано на рис. 3.3.
Рис. 3.3. Пример преобразования представленной на рис. 3.1 ER-модели с целью устранения ловушки разветвления
Если проверить эту структуру на уровне отдельных сущностей (так, как показано на рис. 3.4), можно убедиться, что теперь легко дать однозначный ответ на поставленный выше вопрос. С помощью семантической сетевой модели можно определить, что сотрудник с номером 'SG37' работает в отделении компании с номером 'ВЗ', который является частью отдела 'D1'.
Рис. 3.4. Семантическая сетевая модель ER-модели, представленной на рис. 3.3
3.2. Ловушки разрыва
Ловушка разрыва:появляется в том случае, когда в модели предполагается наличие связи между типами сущностей, но не существует пути между отдельными сущностями этих типов.
Ловушка разрыва может возникнуть при наличии связи с частичным участием, образующей часть пути между связанными сущностями. На рис. 3.5 потенциальная ловушка разрыва показана на примере связей между сущностями Branch, Staff и Property_for_Rent.
Рассмотрев представленную ER-модель, можно сделать вывод, что одно отделение компании имеет много сотрудников, которые работают со сдаваемыми в аренду объектами. Однако, не все сотрудники непосредственно работают с объектами, а также не все сдаваемые в аренду объекты недвижимости в каждый конкретный момент находятся в ведении кого-либо из работников компании. В данном случае проблема возникает, когда необходимо выяснить, какие объекты недвижимости приписаны к тому или иному отделению компании. Для исследования этой проблемы рассмотрим представленную на рис. 3.5 ER-модель на уровне семантической сетевой модели, показанной на рис. 3.6.
Рис. 3.5.. Пример ловушки разрыва
Рис. 3.6. Семантическая сетевая модель ER модели. представленной на рис. 3.5
С помощью этой семантической сетевой модели попробуем ответить на следующий вопрос: "Какое отделение компании отвечает за работу с объектом под номером 'РА14'?". К сожалению, на данный вопрос нельзя дать ответ, поскольку этот объект в текущий момент не связан ни с одним из сотрудников, работающих в каком-либо из отделений компании. Неспособность дать ответ на заданный вопрос рассматривается как утрата информации (поскольку известно, что объект недвижимости должен быть приписан к какому-то отделению компании), в результате которой и возникает ловушка разрыва. Частичное участие сущностей Staff и Property for Rent в связи Oversees означает, что некоторые объекты недвижимости не могут быть связаны с отделением компании посредством сотрудников. Следовательно, для разрешения этой проблемы следует ввести отсутствующую связь Has между сущностями Branch и Property_for_Rent. ER-диаграмма, показанная на рис. 3.7, отображает истинные связи между этими сущностями. Такая структура гарантирует, что нам всегда будут известны объекты недвижимости, связанные с каждым отделением компании, включая объекты недвижимости, которые в данный момент не поручены никому из сотрудников организации.
Рис. 3.7. ER-диаграмма, представленная на рис. 3.5, после переработки с целью устранения ловушки разрыва
Если теперь исследовать эту структуру на уровне отдельных сущностей (так, как показано на рис. 3.8), то станет ясно, что мы можем дать ответ на поставленный выше вопрос: объект недвижимости с номером 'РА14' приписан к отделению компании с номером 'В7'.
Рис. 3.8. Семантическая сетевая модель ER-модели, представленной на рис. 3.7