用于在表中存储未知行数的数据库设计

时间:2009-09-21 10:40:22

标签: database-design

很抱歉,标题很难理解..:S

我有一张包含订单的表,这个订单应该能够有一个未知数量的比萨饼。我该如何实现呢?

我有一个比萨饼桌,还有一排PizzaID。订单表应该有一个未知数量的pizzaID ..:S

由于

5 个答案:

答案 0 :(得分:4)

你需要一个Orders表,一个Pizzas表和一个junction table Pizzas与Orders联系

Pizza                 
-----  
Id
Name             

Order
-----
Id
Date_Of_Order

Pizza_Order
-----------
Order_Id
Pizza_Id
Quantity

答案 1 :(得分:1)

你应该以相反的方式链接它们。披萨应该指明它与哪个订单相关联,因为每个披萨只会来自一个订单。

例如,您的披萨记录可能如下所示:

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

然后您可以简单地在数据库中查询与订单n相关的所有比萨饼。

答案 2 :(得分:0)

将“OrderID”列添加到Pizzas表中,并使其成为Orders表中“ID”列的外键。

这是相当基本的关系数据库设计,你可能想看一些基本的教程。

答案 3 :(得分:0)

您需要三张桌子:

  • Pizzas (使用PizzaID +定义特定披萨的其他列)
  • 订单(使用OrderID +您需要的其他列,例如客户,订单日期时间等......
  • PizzaOrders (包含OrderID,PizzaID和Quantity) - 多行将具有相同的OrderID,但不同的PizzaID值+这些比萨的数量。

所以你在Pizzas和Orders表之间有多对多的关系。

答案 4 :(得分:0)

我会在这里创建3个表

一个订单

通过存储PizzaID将一个表orderItems 1-n链接到te orders表,方法是将orderID和n-1存储到Pizzas。您还应该将价格信息存储在此表中,因为比萨饼的价格可能会随着时间的推移而变化,这可能会影响您的旧订单

另一张Pizzas表将包含所有可用的披萨产品(如果您计划稍后扩展到意大利面和饮料,请将其称为MenueItems;)