我正在尝试使用NORMA为Visual Studio 2010建模下面ORM图中描述的约束:
当且仅当该商家使用支持该货币的处理器时,商家才会以货币进行交易。
根据this链接,我想要建模的是连接子集约束。以下是上述链接中的示例:
如果该人员在跨越该项目的部门工作,则该人员只能在项目上工作。
这似乎与我想要建模的相同。
如果添加子集约束,单击一个角色然后另一个角色,我尝试了几种组合,但总是会出现错误,例如:
如何建模此约束?
答案 0 :(得分:0)
你正朝着正确的方向前进。您需要定义超集角色对和子集角色对。每对都有一个Merchant角色和一个Currency角色,这些角色中的这些角色的顺序必须匹配。您可以检查匹配我点击约束;然后,角色以蓝色突出显示1,1 1,2 2,1 2,2,显示角色序列。
超集商家角色是商家在&#34中的角色;商家使用处理器"。 超集货币角色是货币在"处理器支持货币"。
中的作用Merchant和Currency角色的子集是" Merchant在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;