0

我被分配完成以下任务:

在此处输入图像描述

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

在此处输入图像描述

现在,如果您在第二张图片中注意到,我可以使订单号仅适用于一方。但是,我仍然面临的问题是,当一方订购多于一种类型的产品时,我将不得不在订单表中生成 2 个 PO 编号。

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

PS这听起来像一个简单的问题,因为这是我第一次尝试标准化。

4

3 回答 3

1

我建议添加另一个名为“订单”的表。此表将包含整个订单的相同信息,例如 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 表存储所有产品的列表。

这是我看到的数据结构图......请注意,它并没有包含所有细节。但希望它能给你足够的开始。

在此处输入图像描述

于 2012-10-08T15:13:39.690 回答
1

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

在此处输入图像描述

于 2012-10-08T15:22:51.403 回答
0

4张桌子:

  1. 当事人信息:身份证、姓名、地址
  2. 产品信息:id、名称、价格
  3. 订单信息:id:日期等
  4. Orderline: orderID, ProductID, Amount 其中orderID和ProductID是productinformation和orderinformation的外键

将产品添加到(创建的)订单仅涉及将 productID 和 OrderID 添加到 [orderline] 中,当输入两次相同的产品时增加金额。

于 2012-10-08T15:18:43.383 回答