如何为此示例执行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]
一个用户可以拥有多个订单和/或可以是许多订单的发票用户......
答案 0 :(得分:1)
您应该命名未命名的关联端属性并使用两个单独的关联。您拥有它的方式,无法与其他Invoice User
分开到User
。这些用户究竟是什么?您可能需要进行更多分析以了解所涉及的角色。这是我的猜测:
这给你一个这样的模型:
------ |Seller| ------ 1 | creatingSeller | * | createdInvoice ------- * 1 ----- |Invoice|----------------------------------|Buyer| ------- receivedInvoice receivingBuyer -----
现在您可以导航到两个“用户”。
BTW,Buyer
和Seller
都可能是代理人扮演的角色,例如Person
或Organization
。我不打算为你塑造整件事。
您也知道,还有其他方法可以在RDBMS中实现此模型,使用“参考数据”/“枚举文字”来区分两个关联和代理的两个角色。您的原始问题表明您需要更多物理模型,但我认为您通过跳过分析模型来解决问题,这可以在RDBMS中实现。