1

当您在线购买商品时,您将它们添加到您的购物篮中,当您将商品添加到您的购物篮后,您创建了一个订单。从本质上讲,我正在尝试考虑允许将多个项目放入一个订单中的最佳方法。这更像是不知道如何将数据存储在 Access 中的数据库中的情况。我不知道应该调用什么字段。我目前的尝试是这样的:

tblOrders
OrderID (Primary Key)
CustomerID (Foreign Key)
OrderDetailsID


tblOrderDetails
OrderDetailsID
PartID (Foreign Key)
Quantity

是带有示例数据的第一个表的图像,是第二个表的示例。我很可能错过了一些非常明显的东西。

先感谢您。

4

1 回答 1

1

我会这样构造它:

OrderHeader
  ID (Primary Key)
  CustomerID (Foreign Key)

OrderDetail
  ID (Primary Key)
  OrderHeaderID (Foreign Key)
  PartID (Foreign Key)
  Quantity
  • 阅读匈牙利符号作为命名约定,并考虑删除您的tbl前缀。这只是您可以选择忽略的偏好。
  • OrderDetailIDonOrderHeader将不起作用,因为您将无法1:M在订单可以有多个明细行的情况下生成必要的关系。
  • 为您的主键使用代理ID字段。他们使工作JOIN变得更容易。如果您想强制一个订单只能使用一次的条件,那么您应该对列OrderHeaderID和使用唯一的数据库约束来执行此操作PartID

这是您的评论的示例查询...

SELECT H.ID OrderID, D.PartID, D.Quantity
FROM OrderHeader AS H INNER JOIN
     OrderDetail AS D ON H.ID = D.OrderHeaderID
WHERE H.ID = 1234;
于 2012-04-05T13:18:18.400 回答