Sql 针对特定销售订单场景的数据库设计

Sql 针对特定销售订单场景的数据库设计,sql,database,crm,Sql,Database,Crm,请参考以下数据库设计: 考虑一个场景,其中基于“产品”表中的prodcuts创建销售订单。但如果任何产品的价格发生变化,则不应在过去创建的任何销售订单中更新价格。该价格只能用于新的销售订单。要解决这种情况,我需要做什么?您需要将成本和价格添加到SalesOrderProduct表中,并在该表的初始附加期间进行设置。您需要将成本和价格添加到SalesOrderProduct表中,并在该表的初始追加期间设置它们。您将需要一个单独的表来保存总订单。您只能持有单行的单个项目订单。由于salesorde

请参考以下数据库设计:



考虑一个场景,其中基于“产品”表中的prodcuts创建销售订单。但如果任何产品的价格发生变化,则不应在过去创建的任何销售订单中更新价格。该价格只能用于新的销售订单。要解决这种情况,我需要做什么?

您需要将成本和价格添加到SalesOrderProduct表中,并在该表的初始附加期间进行设置。

您需要将成本和价格添加到SalesOrderProduct表中,并在该表的初始追加期间设置它们。

您将需要一个单独的表来保存总订单。您只能持有单行的单个项目订单。由于salesorder是主键,因此无法判断是否有相同顺序的项目组。只需使用totalorder中的主键,并将其引用到另一个表,该表可以将属于一个顺序的所有内容分组。但是,如果这是您想要的功能,那么John Easley所说的很好。

您将需要一个单独的表来容纳全部订单。您只能持有单行的单个项目订单。由于salesorder是主键,因此无法判断是否有相同顺序的项目组。只需使用totalorder中的主键,并将其引用到另一个表,该表可以将属于一个顺序的所有内容分组。但如果这是您想要的功能,那么John Easley所说的很好。

SalesOrderProduct可以处理多个产品(记录)@Andy我不明白。那么,你是说我需要一个单独的表如果我想在同一个销售订单id下有一个或多个销售订单,我需要一个单独的表。如果没有,我可以使用John Easley的解决方案?John,如果它仅用于链接产品和销售订单,它将如何处理。每个单独的销售订单都是唯一的,因此salesorderproduct也是唯一的,但它不会将一组项目链接到一个完整的订单。除非我错了?@mvador99我的意思是有一个ordersummary来保存ordersummaryid(PK)总订单价格、用户ID或您希望记录的任何其他内容,然后使用该ordersummaryid将salesorder中的各个订单分组在一起。因此,如果您想知道整个订单中到底有多少个项目,您可以这样做,因为您可以在特定的时间按照特定的订单对它们进行分组,并且可以在特定的时间访问每个项目的成本。SalesOrder到SalesOrderProduct应该是一对多的联接。SalesOrderProduct可以处理多个产品(记录)@安迪,我不明白。那么,你是说我需要一个单独的表如果我想在同一个销售订单id下有一个或多个销售订单,我需要一个单独的表。如果没有,我可以使用John Easley的解决方案?John,如果它仅用于链接产品和销售订单,它将如何处理。每个单独的销售订单都是唯一的,因此salesorderproduct也是唯一的,但它不会将一组项目链接到一个完整的订单。除非我错了?@mvador99我的意思是有一个ordersummary来保存ordersummaryid(PK)总订单价格、用户ID或您希望记录的任何其他内容,然后使用该ordersummaryid将salesorder中的各个订单分组在一起。比如说,如果你想知道一个整体订单中到底有多少个项目,你可以,因为你在特定的时间按照特定的订单对它们进行分组,以及访问当时每个订单的成本。SalesOrder到SalesOrderProduct应该是一对多的联接。Product保持当前价格并用于构建每个新的销售订单。销售完成后,您希望为该订单保留产品的价格。在SalesOrderProduct中坚持“当时的价格”似乎是合理的,但我想看看其他人怎么说。如果订单总额将由salesorderproduct构建,那么salesorder中是否需要productid?在您知道每笔交易只购买一件商品的情况下,这是可以理解的。我现在感到困惑,因为我不知道如何考虑多个项目的销售。例如,如果我买了一件衬衫和一双鞋,这个模式将不起作用,因为它将把它作为两个单独的订单,而不是一个单独的订单。@andy你不能有记录1:salesorderid1,productid1(鞋),shoeprice;记录2:salesorderid1,ProductCTID2(衬衫),衬衫价格;等那么订单的总和就是该订单上项目的价格字段的总和。@andy您假设Salesorder到SalesOrderProduct是一对一联接,我假设SalesOrderProducts的唯一用途是一对多联接,否则,SaleOrder可以直接连接到Product。我想这就是为什么我建议从salesorder表中提取productid,并根据插入salesorderproduct时的成本计算salesorder总额(如果我遵循您的想法的话)。Product保持当前价格,并用于构建每个新的销售订单。销售完成后,您希望为该订单保留产品的价格。在SalesOrderProduct中坚持“当时的价格”似乎是合理的,但我想看看其他人怎么说。如果订单总额将由salesorderproduct构建,那么salesorder中是否需要productid?在您知道每笔交易只购买一件商品的情况下,这是可以理解的。我现在感到困惑,因为我不知道如何考虑多个项目的销售。例如,如果我买了一件衬衫和一双鞋,这个模式将不起作用,因为它将把它作为两个单独的订单,而不是一个单独的订单。@andy你不能有记录1:salesorderid1,productid1(鞋),shoeprice;记录2:salesorderid1,ProductCTID2(衬衫),衬衫价格;等那么订单的总和就是该订单上项目的价格字段的总和。@andy您假设Salesorder是SalesOrderProduc