【问题标题】:What is the optimal way to organise data product - and its history prices? [closed]组织数据产品及其历史价格的最佳方式是什么? [关闭]
【发布时间】:2020-09-22 20:29:11
【问题描述】:
我有一些问题要解决,希望你能帮助我。我想存储价格变化的历史。我已经为产品建模(每次我买东西时,我都会将它添加到我的仓库中 - 名称、价格、数量等)我也想获得最后添加的价格 - 我该如何以正确的方式解决它?拥有最新价格、价格变动历史并保持干燥。所以即:
仓库有_many产品(有数量)
产品有_很多价格
我也有膳食食谱,我想知道实际的食物成本(使用上次添加的价格),我想了解历史,几个月前给定的膳食或产品花了我 30 美元,今天花了我 40 美元...
有什么想法吗?
【问题讨论】:
标签:
ruby-on-rails
database
【解决方案1】:
您可能希望为此设置多个维度。我会为每次价格更改为最新价格时更新的产品当前状态推荐一张表。同样的更新将在另一个表中创建一个新行,该行仅存储对价格所做的更改,并在第三个表中创建膳食信息。这将存储所需的数据,但您仍需要进行一些查询以加入表以获取膳食信息
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)