首页 > 解决方案 > 组织数据产品及其历史价格的最佳方式是什么?

问题描述

我有一些问题要解决,希望你能帮助我。我想存储价格变化的历史。我已经为产品建模(每次我买东西时,我都会将它添加到我的仓库中 - 名称、价格、数量等)我也想获得最后添加的价格 - 我该如何以正确的方式解决它?拥有最新价格、价格变动历史并保持干燥。所以即:

仓库 has_many 产品(有数量)

产品 has_many 价格

我也有膳食食谱,我想知道实际的食物成本(使用最后添加的价格),我想了解历史,几个月前给定的膳食或产品花了我 30 美元,今天花了我 40 美元......

有任何想法吗?

标签: ruby-on-railsdatabase

解决方案


您可能希望为此具有多个维度。我会为每次价格更改为最新价格时更新的产品当前状态推荐一张表。同样的更新将在另一个表中创建一个新行,该行仅存储对价格所做的更改,并在第三个表中创建膳食信息。这将存储所需的数据,但您仍需要进行一些查询以加入表以获取膳食信息

PRODUCT_TABLE (one line for each product)
  PROD_ID (primary key)
  PROD_INVENTORY_QUANTITY
  PROD_PRICE_CURRENT  
  PROD_UPDATE_TIMESTAMP

PRICE_CHANGE_TABLE (many to one relationship to PRODUCT_TABLE)
  CHNG_ID
  CHNG_DATE
  CHNG_PRICE_FROM
  CHNG_PRICE_TO
  PROD_ID (foreign key)

MEAL_TABLE  (one to many relationship with PRODUCT_TABLE)
  MEAL_ID
  PROD_ID (foreign key)
  PROD_QUANTITY_NEEDED (amount needed for meal would be multiplied by current price for the current cost and joined to the change table with with a date to get past price then summed up with a group by for the meal total)

推荐阅读