【问题标题】:Creating inventory database when product unit price change frequently产品单价频繁变化时创建库存数据库
【发布时间】:2019-12-29 09:13:09
【问题描述】:

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

【问题讨论】:

  • 以文本格式而不是图像包含架构可能会更好。此外,即使您使用的是 Access,您的问题通常也是 SQL 问题;在SQL Fiddle 上设置您的架构可能是个好主意。从下拉列表中选择 MSSQL Server 2017,因为 Microsoft Access SQL 最接近 SQL Server。
  • 另请注意,在字段和表名中包含空格通常是一个坏主意——这意味着您必须在 SQL 中用方括号将这些表和字段名括起来,例如[Receiving details].[Product ID] 在您的查询中,而不是 ReceivingDetails.ProductIDReceiving_details.Product_ID
  • @ZevSpitz:吹毛求疵,在 T-SQL 中你会需要那些可怕的方括号。在“SQL”中,对于包含非法字符的标识符,您需要双引号,例如"Receiving Detail" - 但我同意:远离需要这样做的标识符
  • 如果你只关心利润,最简单的方法是将单价和销售价格保存在实际的Purchase Order Detail记录上

标签: sql database-design


【解决方案1】:

顺便说一句,我可以想到两种方法:

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

  1. Product master 应该包含当前价格
  2. Purchase order details 中添加另一个字段,用于下单时的单价。
  3. Purchase order details 添加记录时,将当前价格从Produce master 复制到Purchase order details
  4. 随时更新Product master 中的价格。

如果您想跟踪旧价格,即使没有以该价格订购的商品

  1. Product master 中删除价格字段
  2. 添加一个新表,用于更新价格。这将包含三个字段:

    1. 产品编号
    2. 价格更改的日期/时间
    3. 新价格
  3. 当您要计算给定 Purchase order details 的价格时,请查看此新表。查找比[Purchase order].[order date] 更早(价格变化的日期/时间更短)的最新记录。

  4. 当您想更新价格时,向这个新表中添加一条记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    相关资源
    最近更新 更多