0

在为多对多关系设计表时,1边主键将出现在中间表的[M]边,我当前的中间表是

Salesline : Itemid(PK), SOId(PK), userid(PK) 

或者

Salesline : Itemid(PK), SOId(PK), 
userid_salesorder(PK) , // links to the salesorder.userid attribute 
userid_item(PK) // links to the item.userid attribute 

哪个是正确的方法?

ERD

4

1 回答 1

1

看起来您的实体之间的自然关系是:

  • 一个用户可以放置 0 个、1 个或多个 SalesOrders
  • 一个 SalesOrder 可能包含 1 个或多个 SalesLines
  • 一个 SalesLine 正好对应于 1 个项目
  • 可以在多个 SalesOrders 上订购一个项目

我建议打破 User 和 Item 表之间的关系,并将订购的特定项目的数量移动到 SalesLine 表。User、SalesOrder 和 Item 应该有简单的,可能是代理的主键。SalesLine 的主键可能是复合的,由 SalesOreder 表的外键和订单中的行号组成。

于 2012-08-01T19:55:02.493 回答