ruby-on-rails - 组织数据产品及其历史价格的最佳方式是什么?
问题描述
我有一些问题要解决,希望你能帮助我。我想存储价格变化的历史。我已经为产品建模(每次我买东西时,我都会将它添加到我的仓库中 - 名称、价格、数量等)我也想获得最后添加的价格 - 我该如何以正确的方式解决它?拥有最新价格、价格变动历史并保持干燥。所以即:
仓库 has_many 产品(有数量)
产品 has_many 价格
我也有膳食食谱,我想知道实际的食物成本(使用最后添加的价格),我想了解历史,几个月前给定的膳食或产品花了我 30 美元,今天花了我 40 美元......
有任何想法吗?
解决方案
您可能希望为此具有多个维度。我会为每次价格更改为最新价格时更新的产品当前状态推荐一张表。同样的更新将在另一个表中创建一个新行,该行仅存储对价格所做的更改,并在第三个表中创建膳食信息。这将存储所需的数据,但您仍需要进行一些查询以加入表以获取膳食信息
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)
推荐阅读
- javascript - 缩小文件时,JavaScript 变量名是否更改为随机字母?
- flutter - 可以使用共享首选项在数据库上应用过滤器吗?
- javascript - 为什么 jsx 不渲染 Firestore 数据
- flutter - ?应用程序正在运行,但 firebase_auth 和 firebase_core_web 出现错误
- ios - 存档时为所有 Cocoa Pod 生成“多个命令”
- android - 创建 SearchView 时是否可以用 ListView 代替 ScrollView?
- google-data-studio - 识别期间未出现的元素(Google 数据洞察)
- kubernetes - 将静态 IP 配置到使用 MACVLAN 接口连接的 POD 时遇到问题
- python - 编辑单元格时如何在 QTableView 中使用 Enter 键导航
- mysql - Laravel 复制品加入生产