Ограничение трех сущностей в ролевых моделях объектов в NORMA - PullRequest
1 голос
/ 28 сентября 2011

Я пытаюсь смоделировать ограничение, изображенное на диаграмме ORM ниже, используя NORMA для Visual Studio 2010: enter image description here

Торговец совершает сделки в Валюте тогда и только тогда, когда этот Торговец использует Процессор, поддерживающий эту Валюту.

Согласно этой ссылке, я пытаюсь смоделировать ограничение подмножества соединений. Вот пример по ссылке выше:

enter image description here

То, что читается как Человек, может работать над Проектом, только если этот Человек работает в Отделе, который финансирует этот Проект.

Это похоже на то, что я пытаюсь смоделировать.

Я пробовал несколько комбинаций, если добавлял ограничение подмножества, щелкая одну роль, затем другую, но всегда приводил к таким ошибкам, как:

  • Ограничение SubsetConstraint1 в модели ORMModel1 имеет ролевых игроков в столбце 1 с несовместимыми типами.
  • Ограничение SubsetConstraint1 в модели ORMModel1 имеет ролевых игроков в столбце 2 с несовместимыми типами.

Как я могу смоделировать это ограничение?

1 Ответ

0 голосов
/ 20 марта 2014

Вы движетесь в правильном направлении. Вам необходимо определить пару ролей надмножества и пару ролей подмножества. Каждая пара имеет одну роль Торговца и одну роль Валюты, и порядок этих ролей в парах должен совпадать. Вы можете проверить соответствие моего нажатия на ограничение; роли затем выделяются синим цветом с 1,1 1,2 2,1 2,2, который показывает последовательности ролей.

Роль коммерсанта superset - это роль Торговца в «Торговце использует Процессор». Роль Валюты надмножества - это роль Валюты в «Процессор поддерживает валюту».

Подмножество ролей «Торговец» и «Валюта» - это две роли «Сделки торговца в валюте».

Аналогичным примером является ограничение подмножества для DirectOrderMatch в приведенном здесь примере хранилища: Примеры моделей ActiveFacts . Обратите внимание на две стрелки, которые указывают на PurchaseOrderItem и SalesOrderItem. В CQL это ограничение выражено (в подробной форме; этот сайт показывает краткую форму):

some Purchase Order Item matches some Sales Order Item
    only if that Purchase Order Item is for some Product that is in that Sales Order Item;

Итак, для сравнения ваш пример, написанный на CQL, будет выглядеть так:

some Merchant transacts in some Currency
    only if that Merchant uses some Processor that supports that Currency;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...