SQL:在UML/ERD中建模多对象关系的正确方法



如何为以下示例执行UML

Order(ID, user_id, invoice_user_id) where user_id and invoice_user_id are foreign keys and user_id != null

两个用户都存储在同一实体中。基数或UML原理如何?我是这么猜的:

[Order]0..n--1..2[User]

因此一个订单可以有2个用户。另一种选择(我希望你能理解我的文字图片…(这意味着一个订单最多可以有2个用户。或者这种方式正确吗:

[Order]n -- 1[User] |n |1 [(Invoice)User]

一个用户可以有多个订单和/或可以是多个订单的发票用户。。。

您应该命名未命名的关联结束属性,并使用两个单独的关联。按照你的方式,没有办法从其他User单独到达Invoice User。这些用户到底是什么?您可能需要做更多的分析来了解所涉及的角色。我的猜测是:

  • 卖方创建任意数量的发票
  • 买方收到任何数量的发票
  • 一名买方收到的发票
  • 发票由一个卖方创建

这给了你一个这样的模型:

------|卖方|------1|创建卖家|*|创建发票-------*1-----|发票|------------------------------|买方|-------收款发票收款买方-----

现在,您可以导航到这两个"用户"。

顺便说一句,BuyerSeller都可能是由代理扮演的角色,比如PersonOrganization。我不会为你做整件事的模特。

正如您所知,还有其他方法可以在RDBMS中实现此模型,使用"引用数据"/"枚举文字"来区分两个关联和代理的两个角色。你最初的问题表明你想要一个更物理的模型,但我认为你跳过分析模型是在找麻烦,因为它可以在RDBMS中实现。

最新更新