2016-03-28 29 views
0

在數據庫設計中,一個訂單可以有多個產品,這是沒有問題的。但是一件產品總是隻能一個訂單,不是嗎?例如,如何將相同的iPhone放置在兩個不同的訂單中?爲什麼訂單 - 產品關係多對多?

我認爲它應該是一對多的關係,而不是多對多。邏輯有什麼問題?

回答

1

假設你是一家電子商務公司,並有70000個IPhone庫存。

根據您建議的設計,在您的「產品」數據庫表中,您將存儲70000行(每個IPhone有1行)。這樣每個「訂單」將引用一個獨特的iPhone。你看到你的數據庫有多快會有數據爆炸。

你應該做的,而不是爲存儲的IPhone的一般特徵(名稱,價格,品牌等),在1行的表,並使用一個名爲「盤點」

列,以保持庫存盤點的軌道下面

像這樣(請注意,您可以在下面進一步改善這種設計,但是這將是足夠的瞭解多到很多邏輯在這裏)

Product 
------------- 
id | name | brand | price | inventory 
1 | IPhone | Apple | 600 | 70000 

現在對於在它有一個IPhone每一份訂單,該訂單將引用產品表的同一行。因此1個產品將以多個訂單。

讓我知道你是否需要更多的解釋。乾杯!

0

產品 - 訂購多對多關係意味着,您可以按照一個訂單訂購許多產品,例如你可以一次購買許多產品,賣家會給你一張收據(一個訂單)。而對面的一個產品類型可以多次密封,例如存儲訂購(進口)iPhone並密封。事實證明,相同的產品有很多訂單。 欲瞭解更多信息,請參閱維基百科的Many-to-many (data model)

希望我幫助你!