Sql 在产品单价频繁变化时创建库存数据库

Sql 在产品单价频繁变化时创建库存数据库,sql,database-design,Sql,Database Design,我正在从事这个涉及销售管理的项目。我有下面的模式。我有一个单位价格经常变化的情况。我想防止产品主表中的产品重复。另外,我将通过从销售价格中减去单价来计算每月利润。请我需要如何更新价格的帮助,并确保旧单价与购买的旧产品关联,新单价与新产品关联。谢谢 我可以马上想到两种方法: 如果旧价格只对了解给定时间段内的利润很重要: 产品主目录应包含当前价格 为订购时的单价向采购订单详细信息添加另一个字段 将记录添加到采购订单详细信息时,将当前价格从生产主数据复制到采购订单详细信息 需要时,随时更新产品主控中的

我正在从事这个涉及销售管理的项目。我有下面的模式。我有一个单位价格经常变化的情况。我想防止产品主表中的产品重复。另外,我将通过从销售价格中减去单价来计算每月利润。请我需要如何更新价格的帮助,并确保旧单价与购买的旧产品关联,新单价与新产品关联。谢谢


我可以马上想到两种方法:

如果旧价格只对了解给定时间段内的利润很重要

  • 产品主目录
    应包含当前价格
  • 为订购时的单价向采购订单详细信息添加另一个字段
  • 将记录添加到
    采购订单详细信息
    时,将当前价格从
    生产主数据
    复制到
    采购订单详细信息
  • 需要时,随时更新
    产品主控
    中的价格
  • 如果您希望跟踪旧价格,即使没有以该价格订购任何商品

  • Product master
  • 添加一个新表,用于价格更新。这将有三个字段:

  • 产品ID
  • 更改价格的日期/时间
  • 新价格
  • 当您要计算给定采购订单详细信息的价格时,请查看此新表。查找比
    [Purchase order].[order date]
    更早的最新记录(价格更改的日期/时间较小)

  • 如果要更新价格,请在此新表中添加一条记录

  • 如果以文本格式而不是图像格式包含模式,可能会更好。此外,即使您使用Access,您的问题通常也是SQL问题;在上面设置模式可能是个好主意。从下拉列表中选择MSSQL Server 2017,因为Microsoft Access SQL最接近SQL Server。另外请注意,字段和表名中使用空格通常不是一个好主意——这意味着您必须在SQL中用方括号括住这些表和字段名,例如在查询中使用
    [Receiving details].[Product ID]
    ,而不是
    ReceivingDetails.ProductID
    Receiving\u details.Product\u ID
    @ZevSpitz:nitpicking,在T-SQL中,您需要那些可怕的方括号。在“SQL”中,对于包含非法字符的标识符,您需要双引号,例如
    “接收详细信息”
    ——但我同意:不要使用需要双引号的标识符。如果您只对利润感兴趣,最简单的方法是在实际的
    采购订单详细信息
    记录上保存单价和销售价格