如何编辑关系属性以仅使用 LDM 中的 CDM 标识符的一部分?
Posted
技术标签:
【中文标题】如何编辑关系属性以仅使用 LDM 中的 CDM 标识符的一部分?【英文标题】:How to edit Relationship properties to only use part of the CDM Identifier in LDM? 【发布时间】:2021-09-12 10:46:27 【问题描述】:我正在使用 Power Designer 为简化的网络商店创建概念数据模型。
我在指定订单和收据之间的关系时遇到问题。我希望收据在逻辑模型的主键中只有一部分订单标识符(更具体地说,只有order_id
)。我无法通过调整关系属性来实现这一点(请参见下面的屏幕截图;有问题的关系用绿色箭头标记)。
我应该简单地省略概念模型中的关系吗?
概念数据模型
逻辑数据模型
编辑
如果可能不清楚我是如何设想我的桌子的……
用户
username | password | first_name | last_name | address | |
---|---|---|---|---|---|
hacker123 | greenGrass | david.norton@gmail.com | David | Norton | West Shire 40, 1240 Neverland |
musicman100 | SuperPassword | john.stewart@gmail.com | John | Stewart | Strange Alley 50, 1250 Outer Space |
产品
product_id | name | description | price_per_unit | unit_of_measure | supply |
---|---|---|---|---|---|
1 | Tooth Brush 100 | NULL | 5.99 | piece | 200 |
2 | Super Paste 200 | For sparkling smiles | 7.99 | piece | 50 |
订购
order_id | username | product_id | amount |
---|---|---|---|
50 | hacker123 | 1 | 2 |
50 | hacker123 | 2 | 1 |
51 | musicman100 | 1 | 5 |
收据
receipt_id | order_id |
---|---|
12 | 50 |
13 | 51 |
编辑#2
我刚刚意识到我可能应该将 Order 分成两张表!一个用于跟踪特定订单上有哪些产品,另一个用于跟踪下订单的人。
也许我什至可以将 Order 表分成 3 个部分
Order(order_id, order_time)
ProductsPerOrder(order_id, product_id, amount)
OrdersPlaced(order_id, username)
【问题讨论】:
【参考方案1】:你有矛盾... 一部分说Order是由User+Product+Order标识的;另一个说 Order 有自己的标识符 order_id。
我猜第二个是正确的,通常的设计是 Order 有一个 id。
并且您需要更改 CDM 中 Order 和 User/Product 之间的关系,以取消选中 Dependent 属性。这些链接只是强制性的,而不是依赖的(这意味着订单是相对于用户+产品定义的)。
附言Receipt 也是如此,它有自己的标识符。
【讨论】:
order_id 都是标识符,而 user_id、product_id 在 Order 主键中是多余的(这让我想起了几十年前第二范式的教训)。或者是相对于user_id+product_id(更可能是相对于user_id,有一个序号来跟踪这个客户的第N个订单),并且在Receipt中需要user_id+product_id... 我现在不太确定如何处理我的问题。一方面,我找到了一种规避糟糕设计的方法,但你的回答让我重新设计了我的模型,实际上让我原来的答案过时了。 保持你的问题原样......它可以触发其他人的aha时刻......【参考方案2】:您可以在逻辑模型中编辑关系!
如果您单击一个关系,则会出现一个Relationship properties 对话框。有一个名为 Joins 的标签。您可以在此处指定使用关系引用哪些列。
【讨论】:
以上是关于如何编辑关系属性以仅使用 LDM 中的 CDM 标识符的一部分?的主要内容,如果未能解决你的问题,请参考以下文章
数据库设计很棒的参考CDM-PDM-LDM-PowerDesigner
数据库——概念模型(CDM)逻辑模型(LDM)物理模型(PDM)