我前幾天創建了一個處理髮票的應用程序。我想知道如何最好地將折扣與我的發票相結合。我應該將其作爲負項目(在invoice_items表中)還是應在發票表中創建「折扣」列?發票數據庫設計
發票數據庫設計
回答
我將它作爲一個負值項目。原因是:
- 隨着開具發票,這是非常重要的是,計算值永遠保持永恆;即使您的計算公式稍後發生變化,您也可以正確複製任何給定的發票。如果這個值是不正確的在這個時候計算出來的 - 這是真的。
- 具有值量意味着對於特殊情況下手動調整很容易處理 - 例如,你的營銷經理/會計師可能決定放棄,因爲延遲交貨的100 $一折的折扣。這是微不足道的價值 - 只需增加一行,但很難/打折折扣
- 您可以有多個折扣金額每張發票
- 它是完全靈活的 - 它有自己的空間來存在和無論它需要是。事實上,我會做折扣的另一個「副產品」(甚至多個產品 - 一個爲每個不同的折扣原因,如聖誕節,優惠券,轉診等
- 憑藉自己的項目,你可以添加一個原因說明就像任何其他「產品」 - 如:或什麼
- 你不需要任何特殊代碼或數據庫列「現金支付10%的折扣」就總筆數達和以前一樣把它們打印在發票上「沒有勺子(折扣)「:?這只是一個行項目 - 什麼比這更簡單的比需要的任何代碼/ DB變化
- 並非所有的項目應該被忽略 - 如退款,退貨,訂閱(如果適用)它變得太複雜,沒有必要在數據庫中表示折扣的商業邏輯,保留計算等在應用程序代碼中,將結果存儲在分區中擁有自己的項目意味着計算可以任意複雜。這意味着隨着複雜性的增長,不需要維護數據庫。這一大堆的更易於維護/修改代碼比它是維持/改變數據庫
- 最後,我成功地建立了一個進銷存系統,我就拿「項目」的方式,它真的很好
+1,但只是只是。這裏提出了很多優點,但我不確定我是否同意整個結論。這可能取決於開具發票的行業。發票的穩定性是一個關鍵點;這可能會通過確保價格數據(尤其是產品描述等)在發票時刻準確無誤(可能通過將相關數據從產品表中複製到發票項目表中)或類似的東西來處理)。對於諸如一次性100美元折扣之類的東西,具有「特殊產品代碼」是可以的。 [...繼續...] – 2012-01-01 02:50:07
[...延續...]但是,我認爲僅僅通過特殊項目來處理折扣是錯誤的;該項目通常有折扣,並且可以與項目一起記錄爲百分比或金額。如果有整體折扣,可以用主發票記錄。在這兩種情況下,都不需要NULL來記錄沒有折扣;零值通常是合適的默認值(除非確實是列表價格是例外)。 – 2012-01-01 02:52:58
@JonathanLeffler你提出了很好的觀點。如果有很多折扣,那麼也許你是對的。然而,當列被定義但很少使用,即當折扣不是標準時,最終會得到「稀疏」數據,這對我來說是一個「紅旗」設計。 – Bohemian 2012-01-01 10:05:39
這些選擇對你來說會有什麼後果?例如,您想要多次折扣還是以後特別打折?如果每張發票只有一個折扣,那麼我不會讓它變得比需要更復雜。在我看來,將它放在發票表中會更容易和更清楚 - 我認爲,將其作爲負項目會使物品的處理更加困難。
我同意你的答案,當客戶決定他可能想要多次折扣時,我即將這樣做。因此我必須使用項目方法。 – redmoon7777 2012-01-02 04:22:47
很好,你問這個問題,做得好:) – Pelshoff 2012-01-02 19:05:03
我使其儘可能簡單完全同意,但有一點要考慮的是,如果任何項目應該從折扣免徵?在這種情況下,您需要在細節中添加一個布爾字段來記住哪一行應該有折扣。
- 1. 數據庫設計(報價和發票)
- 2. 用於投票的數據庫設計
- 3. 需要幫助設計我的發票數據庫結構
- 4. 多個網站和發票號碼 - 數據庫設計
- 5. 發票表設計
- 6. 數據庫設計:股票和期權交易
- 7. 如何爲個性化投票設計數據庫
- 8. 內容投票數據庫和應用程序設計
- 9. 數據庫設計:複雜投票系統
- 10. 產品投票系統的數據庫設計
- 11. 數據庫設計
- 12. 數據庫設計
- 13. 數據庫設計
- 14. 數據庫設計
- 15. 設計數據庫
- 16. 設計數據庫
- 17. 數據庫設計
- 18. 數據庫設計
- 19. 數據庫設計
- 20. 將發票存儲在數據庫中
- 21. 庫存數據庫設計
- 22. Magento數據庫:發票項目數據庫表?
- 23. 數據庫設計中的外鍵 - 數據庫設計
- 24. 數據庫設計(Big Table)
- 25. 幫助數據庫設計
- 26. 數據庫設計難點
- 27. 設計一個數據庫
- 28. 數據庫設計(DDL)
- 29. 關於設計數據庫
- 30. 數據庫設計問題
什麼這些選擇對你來說會有什麼後果?例如,您想要多次折扣還是以後特別打折? – Pelshoff 2011-12-28 20:13:21
感謝您的快速回復。每張發票只會有一個折扣。 – redmoon7777 2011-12-28 20:25:18
如果每張發票只有一個折扣,那麼我不會讓它變得比需要更復雜。 – Pelshoff 2011-12-28 20:27:19