为股票管理计划创建“篮子”?

时间:2012-04-05 13:15:59

标签: database database-design ms-access relational-database

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

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


tblOrderDetails
OrderDetailsID
PartID (Foreign Key)
Quantity

This是包含示例数据的第一个表的图像,this是第二个表的示例。我很可能错过了一些令人眼花缭乱的事情。

提前谢谢你。

1 个答案:

答案 0 :(得分:1)

我的结构如下:

OrderHeader
  ID (Primary Key)
  CustomerID (Foreign Key)

OrderDetail
  ID (Primary Key)
  OrderHeaderID (Foreign Key)
  PartID (Foreign Key)
  Quantity
  • 阅读Hungarian Notation作为命名约定,并考虑删除tbl前缀。这只是您可以选择忽略的偏好。
  • OrderDetailID上的
  • OrderHeader将无效,因为您无法生成必需的1:M关系,其中订单可以包含多个明细行。
  • 使用代理ID字段作为主键。他们使JOIN的工作变得更加容易。如果您希望强制执行订单只能使用一次的条件,那么您应该使用列OrderHeaderIDPartID上的唯一数据库约束来执行此操作。

以下是您评论的示例查询...

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;