2015-12-28 44 views
2

我們有桌子比薩餅和訂單如何購買多件一體機產品 - 最佳實踐

Logical model

SQL數據建模生成關係模型是這樣的:

Relational model

我們忘了,客戶可以購買2個或更多相同的披薩。我們發現,我們可以添加列表片到表pizza_orders,或者我們可以爲表Pizza_Orders(Pizza_Orders_Id)創建特殊的主鍵。哪種解決方案更好?還是還有其他更好的解決方案?

+0

在你的'Pizza_Orders'表中,爲什麼每個比薩餅不會出現一次'Order_id'多次?我不確定在這裏看到問題。 –

+1

我需要購買2個相同的披薩(比如2個比薩薩拉米)。我不能插入表pizza_orders(14,2),然後再插入表pizza_orders(14,2) – Pivoman

+1

現在很清楚,謝謝。 –

回答

4

修改您Pizza_Orders表,包括字段數量:

Pizza_Orders

Orders_Order_id 
Pizza_Pizza_id 
Pizza_Pizza_quantity 

否則插入到這個表很容易,如果整個順序一次知道。換句話說,如果所有披薩的數量和種類一般都是已知的,那麼插入應該不成問題。這也解決了與不止一種類型的相同披薩訂單的問題。

請注意,此新Pizza_Orders表中的主鍵仍然是訂單號和匹薩號的組合,並且不涉及數量。原因是訂單號和比薩類型最多隻能出現在一條記錄中,而不管數量多少。

+0

我個人的感覺是,這樣一個領域既不需要也不需要 - 但如果要添加,我建議將它放在PIZZA表格中,而不是在交叉點。YMMV。 –

+2

@BobJarvis,我不同意你說的一切。 –

+0

@DanBracuk - 至少我們可以同意我們不同意。 –

3

您應該將列數量添加到表Pizza_Orders。我想你錯過了披薩的大小。訂購時沒有選擇尺寸的選項,但對於下單很重要。

+0

加1,因爲在發表評論時,@Suvro沒有足夠高的聲望發表評論。 –

+0

這是一個學校項目,所以我會讓它在沒有比薩尺寸的情況下輕鬆完成。但是,謝謝! – Pivoman

+0

我預計不同大小的比薩餅可能會花費不同的金額,所以他們會在PIZZA表中表現爲不同的比薩餅。 –