2010-03-08 51 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