很抱歉,如果標題是很難理解..:S數據庫設計用於存儲在表中的未知數量的行
我有與訂單表,這個順序應該是能夠有數目不詳的比薩餅。我如何實現這一點?
我有一張比薩餅桌子和一張比薩餅披薩。順序表應具有pizzaIDs的一個未知的數..:S
感謝
很抱歉,如果標題是很難理解..:S數據庫設計用於存儲在表中的未知數量的行
我有與訂單表,這個順序應該是能夠有數目不詳的比薩餅。我如何實現這一點?
我有一張比薩餅桌子和一張比薩餅披薩。順序表應具有pizzaIDs的一個未知的數..:S
感謝
您需要爲訂單表,比薩餅表並用Orders的junction table關聯比薩餅
Pizza
-----
Id
Name
Order
-----
Id
Date_Of_Order
Pizza_Order
-----------
Order_Id
Pizza_Id
Quantity
您應該圍繞它們連接的另一種方式。比薩餅應該指出它與哪個訂單相關聯,因爲每個比薩餅只來自一個訂單。
例如,您的比薩餅記錄可能是這個樣子:
PizzaId, **OrderId**, BaseType, StuffedCrust, PizzaType
然後,你可以簡單地在數據庫中查詢到相關的n階所有的比薩餅。
的「訂單ID」列添加到比薩餅表,並使它成爲一個外鍵「ID 'Orders表中的列。
這是相當基本的關係數據庫設計的東西,你可能想看看一些基本的教程。
您需要三個表:
因此,您在比薩餅和訂單表之間有多對多的關係。
我想創建3個表此處
一個用於訂單
一個表的OrderItems是1-n的連接通過存儲OrderID和n-1個由存放PizzaID比薩餅對TE訂單表。您還應該將價格信息存儲在此表中,因爲比薩餅的價格可能會隨時間而變化,並且可能會影響您的舊訂單
和另一個包含所有可用披薩項目的比薩餅(如果您計劃稍後擴展到意大利麪和飲料;))
同意,儘管我的偏好是保持所有表中ID的列名相同:PizzaId,OrderId – Yoav
當然引入第三個表只會增加額外的不必要的複雜性? 爲什麼不直接通過OrderId將披薩鏈接回訂單?如果您想表示一些相同的比薩餅,則無需爲每個比薩插入一條記錄,您仍然可以包含數量。 –
@Dave - 如果我正確理解了OP的問題,比薩表中的記錄代表特定的「匹薩」(澆頭,底座類型等)。你的建議意味着每個特定的披薩只能包含在一個特定的「訂單」中。聯結表是必要的,以便能夠將許多「比薩餅」映射到許多「訂單」。 –