正所謂沒有實踐就無法累計經驗,我們曾經也維護過客戶的簡易版商城網站,發現有一些不足的地方,例如商城網站開發者為了省事,訂單信息中不保存價格信息。當然,這有可能是受限于開發成本的限制。不過我們并不十分建議這樣操作,可能一些真的非常簡單的購物網站可以這樣做,但凡是有點規模的網站,這樣設計訂單表結構就很容易出問題,例如:用戶的歷史訂單價格隨時都有可能變化。
我們建議將訂單和產品信息完全分開,而且,訂單表其實應該分成多個表,最基本的應該有兩個:訂單表和訂單商品表。其中,訂單表用來保存訂單號、總金額、商品數量、下單時間、訂單狀態和購買者等關鍵信息。而訂單中所包含的詳細商品信息則保存在訂單商品表中,例如:商品的SKU編號、商品名稱、規格信息、單價、購買數量等詳細信息。這個時候有人會問了,這里為什么要保存單價呢?商品表中不是已經有了嗎?是的,商品表中的價格確實有,但是商品表中的價格隨時有可能會變動,而訂單商品表中的價格需要記錄下來,就只是代表了用戶下單購買時候的歷史價格而已。如果去調用商品表中的單價,那么就會出現文章開頭的問題了,這是不因該出現的情況。
另外我們再聊一下購物車中數據提交時的驗證思路,我們在學習編程的時候,老師應該不止一次的強調,不可以相信用戶提交的數據。我們在處理購物車數據的時候,應該只獲取用戶提交的商品ID和購買數量,而商品的價格和訂單總金額,則應該通過校驗后的商品ID和購買數量去數據庫中實時讀取數據和計算出來的。