Database-Design
處理數據庫中的貨幣
貨幣貨幣在數據庫中應該如何處理才能保持一致?我應該選擇在我的數據庫中使用的特定貨幣還是混合不同貨幣的不同價值更好?
假設我有
Product
桌子,這個產品有價格,但價格應該是什麼貨幣?它是否應該始終相同,或者我是否也應該有Currency
帶有貨幣程式碼或CurrencyID
指向特定貨幣的列?我應該為每個產品或全球每個數據庫設置貨幣嗎?你對此有何經驗?
沒有答案 - 這取決於。如果您是一家較小的服裝公司(例如美國的十幾家商店),那麼您真正關心的只是美元價格。如果您是一家國際零售商,其網站在許多國家/地區都有本地定價,您可能需要為每種產品保留不同貨幣的多個價格。
假設我有 Product 表,這個產品有價格,但價格應該是什麼貨幣?
它不應該在那裡。它不僅假設一種貨幣(這將是系統執行的基礎貨幣),而且根本沒有回扣系統。定價,除了非常簡單的系統,是一個單獨的表格。
推薦閱讀:數據模型資源書,第 1 卷 - 關於儲存價格的整章。
如果你像這樣儲存它,它要麼是基礎貨幣(儲存在中央某處),要麼是的,你添加一個貨幣 id 欄位來引用貨幣。我建議為此使用 ISO 貨幣程式碼,並在未分配官方程式碼時根據需要添加負數。
首先問自己一個產品有多少個價格?
其次,問問自己需要對價格進行哪些計算。
一張桌子
(product_id, currency_id, amount)
可能看起來很有吸引力,但似乎危險地接近 EAV歸根結底,數據庫需要支持您的業務實踐。