2009-09-21 28 views

回答

4

您需要爲訂單表,比薩餅表並用Orders的junction table關聯比薩餅

Pizza     
----- 
Id 
Name    

Order 
----- 
Id 
Date_Of_Order 

Pizza_Order 
----------- 
Order_Id 
Pizza_Id 
Quantity 
+1

同意,儘管我的偏好是保持所有表中ID的列名相同:PizzaId,OrderId – Yoav

+0

當然引入第三個表只會增加額外的不必要的複雜性? 爲什麼不直接通過OrderId將披薩鏈接回訂單?如果您想表示一些相同的比薩餅,則無需爲每個比薩插入一條記錄,您仍然可以包含數量。 –

+0

@Dave - 如果我正確理解了OP的問題,比薩表中的記錄代表特定的「匹薩」(澆頭,底座類型等)。你的建議意味着每個特定的披薩只能包含在一個特定的「訂單」中。聯結表是必要的,以便能夠將許多「比薩餅」映射到許多「訂單」。 –

1

您應該圍繞它們連接的另一種方式。比薩餅應該指出它與哪個訂單相關聯,因爲每個比薩餅只來自一個訂單。

例如,您的比薩餅記錄可能是這個樣子:

PizzaId, **OrderId**, BaseType, StuffedCrust, PizzaType 

然後,你可以簡單地在數據庫中查詢到相關的n階所有的比薩餅。

0

的「訂單ID」列添加到比薩餅表,並使它成爲一個外鍵「ID 'Orders表中的列。

這是相當基本的關係數據庫設計的東西,你可能想看看一些基本的教程。

0

您需要三個表:

  • 比薩餅(與定義特定比薩餅PizzaID +其他列),你需要像客戶
  • 訂單(與訂單id +附加列,訂單日期時間等等...
  • PizzaOrders(與OrderID,PizzaID和數量) - 幾行將有相同的OrderID,但不同PizzaID值+這些比薩餅的數量。

因此,您在比薩餅和訂單表之間有多對多的關係。

0

我想創建3個表此處

一個用於訂單

一個表的OrderItems是1-n的連接通過存儲OrderID和n-1個由存放PizzaID比薩餅對TE訂單表。您還應該將價格信息存儲在此表中,因爲比薩餅的價格可能會隨時間而變化,並且可能會影響您的舊訂單

和另一個包含所有可用披薩項目的比薩餅(如果您計劃稍後擴展到意大利麪和飲料;))

相關問題