我很难找出在我正在处理的应用程序中为项目存储available_quantity
的最佳方法。这些是我现在的一些表格:
items
表,其中包含基本项目信息:
item_id name
1 Item 1
2 Item 2
inventory
表,用于记录商店收到商品的时间和价格:
inventory_id item_id quantity price
1 1 +10 12.50
2 1 +5 12.30
orders
表,用于记录商品的销售时间:
order_id item_id quantity price
1 1 -4 12.60
abc
表,由特定组件使用;此处的数量从总数中减去:
abc_id item_id quantity
1 1 -3
def
表,由特定组件使用;此处的数量从总数中减去:
def_id item_id quantity
1 1 -3
通常情况下,人们会查看所有表格并将数量相加以找到available_quantity
(在本例中为5)。遗憾的是,由于应用程序中存在一些复杂的业务逻辑,因此这不是最佳解决方案,并且随着时间的推移性能将不可避免地降低。
我正在寻找一种更方便,更可靠的方法来将available_quantity
存储在数据库中,以便随时快速运行。我想在items
表中创建一个名为available_quantity
的列。它将由一个函数更新,该函数在其他表中插入/更新时触发并添加提交的quantity
值,但我不确定在某个时间点之后这是否会不同步。此外,如果我让函数对表执行COUNT()
查询,它将具有与现在相同的效果。
在存储或计算数据库中项目的可用数量的复杂方案中,什么被认为是最佳做法?
答案 0 :(得分:1)
这取决于您的应用程序的规模。我通过使用redis或其他no_sql解决方案作为键值存储来解决此问题,并在插入,更新或删除相关对象时更新值。是的,您将面临异步的风险,但如果您正确实施它,您会发现该解决方案实际上具有非常高的可靠性。
但是,如果您不需要处理那么大规模的项目,我只需坚持执行所有数据库查询。