尤川豪   ·  5年前
445 貼文  ·  275 留言

電商網站,顧客下訂單之後,店家刪掉產品,database 如何處理?

如題,應該是個常見問題。

下單之後,店家如果修改產品價錢、若是刪掉產品,顧客端的訂單資訊該怎麼顯示?

1. 產品從 DB 刪除

顧客端顯示 [商品不存在],簡單快速的一種作法,多檢查 product_id 對應到的資料在不在即可

2. 產品 soft delete

簡單快速的一種作法

不過以上兩種作法都有個問題:如果是修改產品資訊,顧客端看到的資訊也會變。所以...

3. 把產品資訊 duplicate 到訂單相關資料表

如此一來,這些資訊會跟 orders.product_id 對應過去的資料成為 redundant data

小小違反 single source of truth 原則。


所以一些現有系統是怎麼處理的呢?觀察訂單相關的資料表大概可略知一二

Magento

https://inchoo.net/wp-content/uploads/2010/09/MAGENTO_v1.3.2.4-Database_Diagram.pdf

觀察此圖,會看到:

# sales_order
- entity_id
- store_id
- customer_id
- subtotal
- ...

# sales_flat_order_item
- item_id
- order_id
- product_id
- name
- price
- ...

的確就是上述 3. 的作法。

  分享   共 1,153 次點閱
按了喜歡:
共有 0 則留言
還沒有人留言。歡迎分享您的觀點、或是疑問。
您的留言
尤川豪
445 貼文  ·  275 留言

Devs.tw 是讓工程師寫筆記、網誌的平台。隨手紀錄、寫作,方便日後搜尋!

歡迎您一起加入寫作與分享的行列!

查看所有文章