代码之家  ›  专栏  ›  技术社区  ›  Johannes

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

  •  0
  • Johannes  · 技术社区  · 15 年前

    对不起,如果标题很难理解……的S

    我有一张有订单的桌子,这个订单应该可以有一个未知数量的比萨饼。我如何实现这一点?

    我有一张比萨饼桌,还有一排比萨饼。订货单上应该有一个不知道数量的比萨饼。的S

    谢谢

    5 回复  |  直到 14 年前
        1
  •  4
  •   Russ Cam    15 年前

    你需要一张订餐台,一张披萨桌和一张 junction table 将比萨饼与订单关联起来

    Pizza                 
    -----  
    Id
    Name             
    
    Order
    -----
    Id
    Date_Of_Order
    
    Pizza_Order
    -----------
    Order_Id
    Pizza_Id
    Quantity
    
        2
  •  1
  •   Dave D    15 年前

    你应该用另一种方式把它们联系起来。比萨饼应该指明它与哪个订单相关,因为每个比萨饼只能来自一个订单。

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

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

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

        3
  •  0
  •   Robert Koritnik    15 年前

    您需要三张桌子:

    • 比萨饼 (使用pizzaid+定义特定pizza的其他列)
    • 命令 (使用orderid+您需要的其他列,如customer、order datetime等…
    • 比萨饼 (使用orderid、pizzaid和quantity)-多行具有相同的orderid,但不同的pizzaid值+这些pizzas的数量。

    所以比萨饼和订单表之间有很多对很多的关系。

        4
  •  0
  •   Heiko Hatzfeld    15 年前

    我会在这里创建3个表

    订单一台

    一个表orderitems是1-n,通过存储orderid链接到te orders表,而n-1通过存储pizzaid链接到pizzas。您还应该将价格信息存储在这个表中,因为比萨饼的价格可能会随着时间的推移而变化,这可能会影响您以前的订单。

    以及另一个包含所有可用比萨项目的桌上比萨(如果您计划稍后扩展到面食和饮料,则称之为菜单项;)

        5
  •  0
  •   belugabob    14 年前

    将“orderid”列添加到pizzas表中,并使其成为orders表中“id”列的外键。

    这是相当基础的关系数据库设计工具,您可能需要看一些基础教程。