Методологии построения ER—диаграмм
В настоящее время существуют разнообразные методологий (нотации) построения ER—модели.
1 Методология Питера Чена. В 1976 году Питером Ченом была предложена семантическая модель "сущность—связь" — ER—модель, которая в настоящее время стала самой распространенной.
Соглашения, используемые при изображении диаграммы:
— классы объектов отображаются прямоугольником, свойства эллипсами, связи ромбами;
— уникальный идентификатор (первичный ключ) отображается в виде эллипса, обведенного двойной линией;
— мощность связи «один» отображается линией, «много» — линией со стрелкой.
Особенности этой методологии:
— метод позволяет показать связь между двумя, тремя и более классами объектов (сущностями);
— связь может иметь собственные атрибуты;
— нет возможности отображения взаимоисключающих связей и непереносимости связей;
— взаимоисключающие связи неявно реализуются в виде супертипов и подтипов;
— нельзя выразить опциональность атрибутов и связей.
На рисунке 6 приведен пример фрагмента ER—диаграммы в методологии Питера Чена.
Рисунок 6 — Пример фрагмента ER—диаграммы в методологии Питера Чена
На диаграмме отображены следующие бизнес—правила предприятия: «каждому заказу, имеющему такие свойства как номер и дата, должна соответствовать одна или более позиций заказа, имеющая такие свойства, как номер, цену за единицу товара, количество товара»; с другой стороны – «каждая позиция товара должна относиться к одному и только одному заказу».
Необходимо отметить, что в примере приведен фрагмент описания предметной области. В ней также должны существовать такие классы объектов, как «Товар», «Единица измерения» и другие.
2 Методология IDEF1. Используется в CASE—средствах ERwin, Design/IDEF. В методологии используются следующие соглашения:
— каждому классу объектов присваивается уникальное имя и номер;
— обязательная связь отображается сплошной линией, необязательная – пунктирной;
— мощность связи "один" отображается линией, "много" – точкой;
— связь может дополнительно определяться с помощью указания мощности (типа) связи. Мощность может принимать следующие значения: N – ноль, один или более (принимается по умолчанию); Z – ноль или один, P – один или более.
— свойства класса объектов отображаются в виде списка имен внутри блока, отображающего класс объектов;
— атрибуты первичного ключа изображаются вверху и отделяются от других.
Пример представления ER—диаграммы в методологии IDEF1 приведен на рисунке 7.
Рисунок 7 — Пример представления ER—диаграммы в методологии IDEF1.
На рисунке 7 отображена та же ситуация в предметной области, что и на рисунке 6.
3 Методология Ричарда Баркера. Используемые в методологии элементы: класс объектов, свойство класса объектов, уникальные идентификаторы, опциональность свойств, мощность (тип), опциональность и переносимость связей, уникальность объектов из связей, супертипы, подтипы, арки.
Используются следующие соглашения:
— класс объектов отображается в виде четырехугольника с закругленными углами. Имя класса объектов указывается внутри четырехугольника, это имя существительное в единственном числе, отображенное заглавными буквами;
— свойства записываются внутри четырехугольника, отображающего класс объектов строчными буквами, это имя существительное в единственном числе;
— четырехугольник, отображающий класс объектов, можно увеличивать до любых размеров, четырехугольники могут быть разных размеров;
— опциональность свойств помечается: обязательное свойство – звездочкой (*), необязательное – кружочком (о);
— уникальный идентификатор помечается #, если уникальных идентификаторов несколько, тогда каждый помечается номером, указанным в скобках, например, # (1), #(2);
— обязательная связь помечается сплошной линией, необязательная – пунктирной;
— тип (мощность) связи «один» помечается линией, «много» — «вороньей лапой».
Более сложные элементы, используемые в ER—диаграмме, построенной по методологии Ричарда Баркера, рассмотрим далее в примерах.
Шаблоны моделирования
Любая рассматриваемая предметная область имеет свои особенности. Но в тоже время обладает и общими для всех предметных областей элементами. Так, в основной массе решаемых задач автоматизации обязательно фигурируют такие классы объектов, как предприятие (организация), структурная единица предприятия (цех, отдел, факультет, отделение и т.п.), люди, или физические лица, разного рода материальные объекты. Все процессы, происходящие в предметной области и которые необходимо учитывать в базе данных, осуществляются на основе документов, которые в свою очередь фиксируют сбор, перемещение, расход каких—либо данных. Таким образом, многие ситуации можно смоделировать, применяя существующие шаблоны. Рассмотрим шаблоны моделирования на примере построения фрагментов ER − диаграмм по методологии Ричарда Баркера.
1 Моделирование семейного положения.Ситуацию предметной области, описанную следующими предложениями: «каждое ФИЗИЧЕСКОЕ ЛИЦО (мужского пола) может являться супругом другого ФИЗИЧЕСКОГО ЛИЦА (женского пола)» и, с обратной стороны, «каждое ФИЗИЧЕСКОЕ ЛИЦО (женского пола) может являться супругой другого ФИЗИЧЕСКОГО ЛИЦА (мужского пола)», можно смоделировать, используя рекурсивную связь. Это связь между объектами одного класса объектов. Такая связь может обладать всеми свойствами, присущими любой другой связи. Пример приведен на рисунке 8. На рисунке изображена рекурсивная связь, имеющая с обеих сторон одинаковый тип — «один», и опциональность «необязательная». На представленной ER—диаграмме отображены и названия связей, рассматриваемая методология изображения ER—диаграмм позволяет это сделать.
Рисунок 8 — Пример рекурсивной связи
2 Моделирование иерархии данных. Иерархия данных наблюдается, если в модели предметной области присутствует:
— произвольное число иерархий классов объектов;
— одинаковые свойства у классов объектов, входящих в иерархию;
— связи между такими классами объектов одинаковые.
На рисунке 9 представлен фрагмент ER—диаграммы, выполненный по методологии Ричарда Баркера и отображающий пример иерархии данных.
Рисунок 9 — Пример иерархии данных
На любом предприятии организационная структура обычно представлена в виде иерархии. В примере приведена организационная структура высшего учебного заведения. Классы объектов отображают структурные единицы вуза, располагающиеся на разных уровнях иерархической структуры подчинения. Классы объектов имеют одинаковые свойства, между классами объектов, расположенных на разных уровнях иерархии присутствуют одинаковые связи. Прочитав фрагмент такой предметной области, можно убедиться в её адекватности. Однако, такое представление имеет некоторый недостаток – при добавлении ещё одного уровня иерархии, например, добавления структурной единицы «Лаборатория» в подчинение какой—либо кафедре потребует добавления ещё одного класса объектов в модель, то есть любое изменение в организационной структуре предприятия потребует корректировки модели.
Для отображения подобной иерархии данных можно использовать рекурсивную связь. При этом она должна иметь тип 1:М и быть необязательной в обоих направлениях. Сторона «один» отображает правило «имеет в подчинении», сторона «много» — «подчиняется». Самый верхний элемент иерархии никому «не подчиняется», самый нижний элемент никого «не имеет в подчинении». Использование шаблона позволяет добавлять и удалять уровни иерархии в соответствии с требованиями предметной области, не меняя базовую модель.
Замена иерархии данных рекурсивной связью осуществляется по следующему алгоритму:
— создается один класс объектов, содержащий свойства, присущие каждому классу объектов в иерархии данных;
— классу объектов присваивается общее имя (в иерархии подчинения подразделений предприятия это может быть, например, класс объектов с именем «СТРУКТУРНАЯ ЕДИНИЦА ПРЕДПРИЯТИЯ»);
— создается дополнительный класс объектов, который будет отображать название для отличия каждого узла иерархии данных, например, класс объектов «ТИП СТРУКТУРНОЙ ЕДИНИЦЫ ПРЕДПРИЯТИЯ».
Как вывод, необходимо сделать следующие замечания:
— шаблон имеет один недостаток: классы объектов, находящиеся на всех уровнях иерархии должны иметь одинаковые свойства;
— иерархия, смоделированная как рекурсивная связь, должна быть необязательной в обоих направлениях. Обязательная ветвь, направленная вверх или вниз, создает бесконечную иерархию, не имеющую применения в реальном мире;
— если при преобразовании модели предметной области происходит слияние частей диаграммы в одну, то необходимо найти в предметной области класс объектов «ТИП», который позволит отобразить уникальность каждой части
Пример использования шаблона, моделирующего иерархию данных, приведен на рисунке 10.
Рисунок 10 – Пример использования шаблона для моделирования иерархии данных.
3 Разрыв связей M:M. Наличие связи M:M в ER — диаграмме допустимо, но необходимо помнить, что это признак не адекватного отображения предметной области, она не дообследована. Надо пытаться найти класс объектов (сущность), который разорвет такую связь. Как правило, это какой—то документ, или позиция документа. Например, связь «многие ко многим» между классами объектов «ПОСТАВЩИК» и «ТОВАР» («каждый ПОСТАВЩИК может поставлять много ТОВАРОВ» и «каждый ТОВАР может поставляться разными ПОСТАВЩИКАМИ») может быть разорвана с помощью таких классов объектов, как «ПОЗИЦИЯ НАКЛАДНОЙ», «ПОЗИЦИЯ ПРАЙС — ЛИСТА», «ПОЗИЦИЯ ДОГОВОРА» и другие. На рисунке 11 приведен пример разрыва связи М:М. В роли поставщика в примере выступает юридическое лицо.
Рисунок 11 — Разрыв связи М:М
Необходимо отметить, что классы объектов, разрывающие связь М:М, как правило, содержат свойства, значения которых динамически меняется. Это такие свойства, как «количество», «цена».
4 Моделирование ролей. Под ролями человека или организации в предметной области понимают разные должности и обязанности. Если роли моделировать с помощью классов объектов, то может возникнуть ситуация, что объекты, принадлежащие разным классам, будут дублировать друг друга. Например, класс объектов «ВРАЧ» и класс объектов «ПАЦИЕНТ» созданы для отображения разных ролей человека – один лечит, другой лечится. В случае если врач становится пациентом, то информация о нем должна быть также отображена и в классе объектов «ПАЦИЕНТ». Возникает ситуация информационного дублирования. Правильное решение - роли должны моделироваться с помощью связей, необходимо создавать ситуацию, чтобы объект одного и того же класса объектов мог выступать в нескольких ролях.
Пример неправильного моделирования ролей приведен на рисунке 12, правильного – на рисунке 13.
Рисунок 12 — Неправильное моделирование ролей
Рисунок 13 — Правильное моделирование ролей
На рисунке 12 классы объектов «ПОСТАВЩИК» и «ПОТРЕБИТЕЛЬ» выделены отдельно. При возникновении ситуации, что какое—то юридическое лицо станет выступать как в роли поставщика, так и в роли потребителя, модель будет неадекватно отображать предметную область – информация будет продублирована. Правильным моделированием ситуации будет выделение одного класса объектов «ЮРИДИЧЕСКОЕ ЛИЦО», а роли «поставщик» и «потребитель» отобразить в виде соответствующих связей (рисунок 13).
Примеры предметных областей, где необходимо моделировать роли, приведены в таблице 9.
Таблица 9 — Примеры моделирования ролей.
Предметная область | Неправильное моделирование | Правильное моделирование |
Купля—продажа, поставка товара | Классы объектов: ПОКУПАТЕЛЬ, ПРОДАВЕЦ, ПОСТАВЩИК | Классы объектов: ЮРИДИЧЕСКОЕ ЛИЦО или ФИЗИЧЕСКОЕ ЛИЦО. Связи (роли): покупает, продает, поставляет |
Образовательное учреждение, обучение | Классы объектов: АБИТУРИЕНТ, СТУДЕНТ, ПРЕПОДАВАТЕЛЬ, АСПИРАНТ | Классы объектов: ФИЗИЧЕСКОЕ ЛИЦО, РАБОТА ФИЗИЧЕСКОГО ЛИЦА, ОБУЧЕНИЕ ФИЗИЧЕСКОГО ЛИЦА, ТИП ОБУЧЕНИЯ ФИЗИЧЕСКОГО ЛИЦА, ТИП ПЕРЕМЕЩЕНИЯ ФИЗИЧЕСКОГО ЛИЦА. Связи (роли): сдает документы, работает, обучается. |
Документооборот | Классы объектов: ВХОДЯЩИЙ ДОКУМЕНТ, ИСХОДЯЩИЙ ДОКУМЕНТ, ПРИКАЗ, РАСПОРЯЖЕНИЕ | Классы объектов: ДОКУМЕНТ, ПОЗИЦИЯ ДОКУМЕНТА, ТИП ДОКУМЕНТА, ТИП ПЕРЕМЕЩЕНИЯ ДОКУМЕНТА. Связи (роли): относится (к типу) |
На рисунке 14 приведен фрагмент ER—диаграммы, отображающей предметную область «Управление персоналом». Класс объектов «ПОЗИЦИЯ ПРИКАЗА О ПЕРЕМЕЩЕНИИ» отображает сведения о перемещениях сотрудников (физических лиц) на предприятии, класс объектов «ВИД ПЕРЕМЕЩЕНИЯ» — виды кадровых перемещений – прием, перевод, увольнение и тому подобное. Между классами объектов «ПРИКАЗ О ПЕРЕМЕЩЕНИИ» и «ПОЗИЦИЯ ПРИКАЗА О ПЕРЕМЕЩЕНИИ» присутствуют три связи, две из них – моделируют роли:
— «каждый ПРИКАЗ О ПЕРЕМЕЩЕНИИ должен быть подписан одним сотрудником, являющимся начальником отдела кадров, о чем есть соответствующая информация в классе объектов ПОЗИЦИЯ ПРИКАЗА О ПЕРЕМЕЩЕНИИ», начальник отдела кадров может подписывать много приказов»;
Рисунок 14 — Пример моделирования ролей
— «каждый ПРИКАЗ О ПЕРЕМЕЩЕНИИ должен быть подписан одним сотрудником, являющимся руководителем предприятия, о чем есть соответствующая информация в классе объектов «ПОЗИЦИЯ ПРИКАЗА О ПЕРЕМЕЩЕНИИ», руководитель предприятия может подписывать много приказов».
Представленный на рисунке 14 фрагмент описания предметной области можно назвать шаблоном, который может быть использован для отображения ситуации, когда какие—либо документы подписываются должностными лицами и в базе данных необходимо отслеживать историю – кто и когда из физических лиц, находясь в той или иной должности, визировал тот или иной документ. Это важно, поскольку в любой предметной области все перемещения материальных и не материальных объектов (приход, расход товаров, перемещение кадров, движение контингента больных, учет выпущенных в эфир передач и тому подобное) осуществляются на основании документов.
В рассматриваемом примере должно поддерживаться следующее семантическое утверждение: «дата подписываемого приказа должна быть более поздней, чем дата приказов, в которых определены роли подписывающих приказ лиц».