Шаблоны моделирования
Любая рассматриваемая предметная область имеет свои особенности. Но в тоже время обладает и общими для всех предметных областей элементами. Так, в основной массе решаемых задач автоматизации обязательно фигурируют такие классы объектов, как предприятие (организация), структурная единица предприятия (цех, отдел, факультет, отделение и т.п.), люди, или физические лица, разного рода материальные объекты. Все процессы, происходящие в предметной области и которые необходимо учитывать в базе данных, осуществляются на основе документов, которые в свою очередь фиксируют сбор, перемещение, расход каких—либо данных. Таким образом, многие ситуации можно смоделировать, применяя существующие шаблоны. Рассмотрим шаблоны моделирования на примере построения фрагментов 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 фрагмент описания предметной области можно назвать шаблоном, который может быть использован для отображения ситуации, когда какие—либо документы подписываются должностными лицами и в базе данных необходимо отслеживать историю – кто и когда из физических лиц, находясь в той или иной должности, визировал тот или иной документ. Это важно, поскольку в любой предметной области все перемещения материальных и не материальных объектов (приход, расход товаров, перемещение кадров, движение контингента больных, учет выпущенных в эфир передач и тому подобное) осуществляются на основании документов.
В рассматриваемом примере должно поддерживаться следующее семантическое утверждение: «дата подписываемого приказа должна быть более поздней, чем дата приказов, в которых определены роли подписывающих приказ лиц».
Дата добавления: 2016-10-17; просмотров: 1240;