2010-03-08 54 views
6

在設計用於銷售和採購的庫存管理數據庫系統時,存儲各種稅收和其他金額的最佳方式是什麼?存儲銷售稅信息的最佳方式

幾個是可以被挽救的字段有:

  • 單價不含稅
  • 單價含稅
  • 每件
  • 總不含稅(四捨五入到2位小數)
  • 含稅總額(四捨五入爲小數點後二位)
  • 總稅額(四捨五入爲小數點後二位)
  • 稅收百分比
  • FK鏈接到稅務%(而不是存儲稅額)

目前最合理的解決方案至今被存儲下來(大約)項目,數量,總不含稅(四捨五入) ,總稅額(四捨五入)。

有沒有更好的方式來存儲這些通用系統的細節?

鑑於系統需要健壯,如果有多個可能需要分開的稅務價值(如州和市)需要做什麼?在這種情況下,一個單獨的表格將會是順序的,但是如果只有一個rowID和一個taxID映射到totalTax列,會被認爲是過度的嗎?

澄清:詢問如何存儲關於單個交易和那邊的數據;而不是關於特定稅率的細節。

+4

要小心以前的交易不FK這些數字的權利;如果您更新它們,您將更改過去的交易數量。有一個修訂設置。 – 2010-03-08 12:37:07

回答

8

問題的方法是如果在過去12個月英國的稅收變化,增值稅(銷售稅)改變了兩次。

當我在電子商務網站工作時,我們有一個表Tax_Rate,它持有商店處理的不同稅率,例如。

  1. TaxFree - 0%
  2. 還原 - 17.5%
  3. DiscountedVat - 15%
  4. 等..

,然後你的股票表中的字段可能有

  • 項目Id
  • 單價
  • fk_TaxRate

您invoice_detail行的表將

  • ˚F k_OrderId
  • fk_ItemId
  • PerItemPriceCharged(非規格化)
  • TaxRateCharged(非規格化)
  • QuantityOrdered

發票表將

  • 的OrderId
  • fk_CustomerId

其中fk_表示外鍵。請注意,OrderId在發票行表中不會唯一。編輯:今天頭到處都是。

由於您不希望物料價格或稅率的未來更改影響歷史發票,因此您需要非正常化發票行總額和稅率總計。

+0

有趣的方法,我沒有真正考慮過不在交易中存儲稅額細節,如果您的交易應該有多個稅率(如果需要出於某種原因),您可以只有一個fk表來鏈接主表和各種稅率。 – Seph 2010-03-08 12:53:51

+0

在最後一次編輯中,我添加了一個錯過的行TaxRateCharged,如果Tax_Rate發生更改,應該對其進行非規範化處理。 – gingerbreadboy 2010-03-08 12:56:12

+0

是的,你也有一點靈活性,因爲一個習俗可以有一個基於位置的fk_稅率,就像美國的STEVE有一個默認的TaxCode USA1。 – gingerbreadboy 2010-03-08 12:57:37