2012-08-01 84 views
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

+1

爲什麼要在SalesLine和用戶之間建立單獨的關係? – Olaf 2012-08-01 17:49:44

+0

用戶銷售訂單 - > 1用戶可以創建很多銷售訂單,用戶 - 項目 - > 1用戶可以創建許多項目 但中間表並不關於誰創建了它關於主鍵的組合,通過我不知道的方式爲什麼我想分開銷售線和用戶! – Fara 2012-08-01 18:01:37

回答

1

看起來像你的實體之間的自然realtionships是:

  • 用戶可以將0,1個或多個SalesOrders的
  • 一個SalesOrder可包括1個或多個SalesLines
  • 一SalesLine恰好對應於一個商品
  • 可以在許多銷售訂單上訂購商品

我建議打破用戶和項目表之間的關係,並將訂購的特定項目的數量移到SalesLine表中。用戶,SalesOrder和Item應該有簡單的,可能是代理的主鍵。 SalesLine的主鍵可能是複合的,由SalesOreder表的外鍵和訂單中的行號組成。