NORMA中对象角色模型中的三实体约束

时间:2011-09-28 19:45:41

标签: orm object-role-modeling

我正在尝试使用NORMA为Visual Studio 2010建模下面ORM图中描述的约束: enter image description here

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

根据this链接,我想要建模的是连接子集约束。以下是上述链接中的示例:

enter image description here

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

这似乎与我想要建模的相同。

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

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

如何建模此约束?

1 个答案:

答案 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;