2013-10-21 84 views
0

我試圖在MySQL Workbench中對一個簡單的訂單系統進行建模,在標準化方面我遇到了一些問題。現在,我使用WHERE id = x,another_id = x等來構建查詢。我的系統是相當簡單:MySQL Workbench中訂單系統的數據庫建模

  • 用戶表
  • Order表
  • UserOrder表
  • 產品表

的用戶有很多訂單,一個訂單有許多產品。這就是它。如何在MySQL工作臺中定義這種關係?是否有關於HasMany,HasOne和其他類型關係的教程?

enter image description here

+0

而不是'UserOrder'表,最好將FK存儲到'Order'表中的相關用戶;像'UserOrder'這樣的關聯表只對多對多關係是必需的,比如你需要在'Order'和'Product'之間 - 因此你需要一個'OrderProducts'表。 – eggyal

+0

但用戶可以做出很多訂單。 – vinnylinux

+0

確實。而且他們的FK可以在'Order'表中多次出現(前提是您不需要在FK上定義唯一性約束)。 – eggyal

回答

2

在大多數情況下您的設置是好的。但是,您不需要爲一對多映射映射表。例如,單個訂單可能屬於多個用戶並且訂單項可以屬於多個訂單的可能性非常小。這意味着你的表應該是:

  • 用戶(用戶ID)
  • 訂單(訂單ID,用戶ID)
  • OrdersItems(oiid,訂單ID,產品ID)
  • 產品(產品ID)
+0

有沒有更好的方法插入到表中?例如:我必須插入訂單,然後插入訂單項目。 – vinnylinux

+0

@vinnylinux使用交易 –