1

我正在尝试使用 NORMA for Visual Studio 2010 对下面 ORM 图中描述的约束进行建模: 在此处输入图像描述

当且仅当该商家使用支持该货币的处理器时,该商家才使用该货币进行交易。

根据链接,我要建模的是连接子集约束。这是上面链接中的一个示例:

在此处输入图像描述

如果该人在跨越该项目的部门工作,则该人只能在该项目上工作。

这似乎与我试图建模的相同。

如果添加子集约束,单击一个角色,然后单击另一个角色,我尝试了几种组合,但总是会出现以下错误:

  • 模型“ORMModel1”中的约束“SubsetConstraint1”在“1”列中具有不兼容类型的角色扮演者。
  • 模型“ORMModel1”中的约束“SubsetConstraint1”在“2”列中具有不兼容类型的角色扮演者。

我该如何去建模这个约束?

4

1 回答 1

1

你正朝着正确的方向前进。您需要定义一个超集角色对和一个子集角色对。每对有一个商人角色和一个货币角色,并且这些角色在对中的顺序必须匹配。你可以检查匹配我点击约束;然后角色以蓝色突出显示,其中 1,1 1,2 2,1 2,2 显示角色序列。

超集 Merchant 角色是“Merchant uses Processor”中的 Merchant 角色。超集货币角色是“处理器支持货币”中的货币角色。

子集 Merchant 和 Currency 角色是“Merchant transacts in Currency”的两个角色。

一个类似的示例是此处仓库示例中“DirectOrderMatch”的子集约束:ActiveFacts Example Models。请注意指向 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;
于 2014-03-20T05:51:15.100 回答