我已获得完成以下任务的任务:
我将使用C#和Sql服务器来解决上述问题。然而,我需要了解我将需要多少桌子,因为我对此完全陌生。我试过这个,如果有人可以解决我的查询,或者可以给我一个更好的替代解决方案。 这就是我现在已经尝试过的。 我现在已经制作了3张桌子,如下图所示:
现在,如果您在第二张图片中发现,我可以将订单号仅适用于一方。但是,我仍然面临的问题是,当一方订购多种产品时,我必须在订单表中生成2个采购订单编号。
我的问题解决方案是什么?我如何进一步规范它?
P.S。这可能听起来像一个简单的问题,因为这是我对标准化的第一次尝试。
答案 0 :(得分:1)
也许你可以使用这个设计。请注意下面每个订单每个订单只有1个PO编号。这假设您要手动提供采购订单编号;否则,您可以将OrderID用作方便的自动生成的采购订单编号。
答案 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表存储了所有产品的列表。
这是我看到的数据结构图....请注意,它没有每个细节。但希望它会给你足够的开始。
答案 2 :(得分:0)
4桌:
将产品添加到(已创建)订单只需将产品ID和订单ID添加到[orderline]中,在同一产品输入两次时增加金额。