假设一个 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 表。但我认为这是多余的。理想情况下,由于计算总成本(订单行)所需的一切都在数据库中,我会在每次需要时计算出该值,但这是非常昂贵的。
你有什么想法?
最佳答案
我认为最好不要有订单总计列或表格。
只需在需要显示它们时通过汇总行记录来计算订单总计。想象一下,如果行记录发生变化,那么您将不得不不断地维护另一个列或表来更新订单的总价。
关于mysql - 必须插入一条记录,然后更新同一记录保证 1 :1 relationship design?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11252783/