假设一个Order
有许多Line
项目,我们将订单的总成本(基于订单行上的价格总和)存储在订单表中。
--------------
orders
--------------
id
ref
total_cost
--------------
--------------
lines
--------------
id
order_id
price
--------------
在一个简单的应用程序中,订单和行是在结帐过程的同一步骤中创建的。所以这意味着
INSERT INTO orders ....
-- Get ID of inserted order record
INSERT into lines VALUES(null, order_id, ...), ...
我们在创建订单记录后获取订单 ID。
我遇到的问题是试图找出存储订单总成本的最佳方式。我不想
- 创建订单
- 在订单上创建行
- 根据行计算订单成本,然后更新在 1. 在订单表中创建的记录
这意味着初学者的订单上有一个可为空的 total_cost 字段......
到目前为止,我的解决方案是创建一个与orders表 1:1 关系的order_totals表。但我认为这是多余的。理想情况下,由于计算总成本(订单行)所需的所有内容都在数据库中,所以每次需要时我都会计算出该值,但这非常昂贵。
你怎么认为?