如何规范表订单明细

时间:2012-10-08 15:07:46

标签: c# database database-design normalization

我已获得完成以下任务的任务:

enter image description here

我将使用C#和Sql服务器来解决上述问题。然而,我需要了解我将需要多少桌子,因为我对此完全陌生。我试过这个,如果有人可以解决我的查询,或者可以给我一个更好的替代解决方案。 这就是我现在已经尝试过的。 我现在已经制作了3张桌子,如下图所示:

enter image description here

现在,如果您在第二张图片中发现,我可以将订单号仅适用于一方。但是,我仍然面临的问题是,当一方订购多种产品时,我必须在订单表中生成2个采购订单编号。

我的问题解决方案是什么?我如何进一步规范它?

P.S。这可能听起来像一个简单的问题,因为这是我对标准化的第一次尝试。

3 个答案:

答案 0 :(得分:1)

也许你可以使用这个设计。请注意下面每个订单每个订单只有1个PO编号。这假设您要手动提供采购订单编号;否则,您可以将OrderID用作方便的自动生成的采购订单编号。

enter image description here

答案 1 :(得分:0)

我建议添加另一个名为“Orders”的表。此表将包含对整个订单相同的信息,例如PONumber,PODate,RefDate,PartyID。然后,您的OrdersDetail表将包含所订购的每个产品的信息,例如ProductId,Quantity,Rate,Amount,OrderId(FK到新的Order表中)。

另外,不要将所有数据类型设置为Text。考虑使用适合于存储信息的数据类型。我也会考虑不包括金额或将其作为计算字段,因为它是根据同一记录中的其他信息计算的(数量*费率)。

此外,您可以考虑使用除PONumber之外的其他值作为主键。作为一般规则,主键除了内部识别记录之外没有其他目的。我建议添加一个OrderDetailsId并将其作为主键。

编辑:(我已添加其他信息以回答下面的Lohits问题)

如果我理解你在问题中提到的内容,那么该党可以有多个订单;在每个订单上,该方可以购买多个产品。因此,PartyDetails和Order之间存在一对多的关系,Order和OrderDetail之间存在一对一的关系;以及ProductDetails和OrderDetails之间的一对一关系。 Party表存储有关购买订单的人的信息。 Order表存储有关该人员所下订单的信息。 OrderDetails存储有关每个订单购买的每个产品的信息。 ProductDetails表存储了所有产品的列表。

这是我看到的数据结构图....请注意,它没有每个细节。但希望它会给你足够的开始。

enter image description here

答案 2 :(得分:0)

4桌:

  1. 派对信息:身份证,姓名,地址
  2. 产品信息:身份证,姓名,价格
  3. 订单信息:id:日期等
  4. 订单行:orderID,ProductID,金额 其中orderID和ProductID是产品信息和订单信息的外键
  5. 将产品添加到(已创建)订单只需将产品ID和订单ID添加到[orderline]中,在同一产品输入两次时增加金额。