假設Order
有很多Line
項目,我們將在訂單表中存儲訂單的總成本(基於訂單行上的價格總和)。必須插入一條記錄,然後更新相同的記錄權證1:1關係設計?
--------------
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領域的訂單對於初學者...
我的解決方案迄今是有一個order_totals表1:1的重請撥訂單表。但我認爲這是多餘的。理想情況下,因爲計算總成本(訂單上的行)所需的一切都在數據庫中,所以我會在每次需要時計算出該值,但這非常昂貴。
你有什麼想法?
當然,如果你存儲彙總數據,你必須有觸發器,以確保它始終保持正確的。依賴於此應用程序是一個非常糟糕的選擇,因爲可以通過多種方式更改數據。 – HLGEM
觸發器是一個有趣的選項,謝謝。 – dianovich