存储销售税信息的最佳方式

时间:2010-03-08 12:34:34

标签: sql database-design

在设计用于销售和购买的库存管理数据库系统时,存储各种税收和其他此类金额的最佳方式是什么?

可以保存的一些字段是:

  • 不含税的单价
  • 包含税的单价
  • 每件税项
  • 不含税总额(四舍五入至小数点后两位)
  • 包含税的总额(四舍五入到小数点后两位)
  • 总税(四舍五入到小数点后两位)
  • 税收百分比
  • Fk链接到Tax%(而不是存储税额)

目前,迄今为止最合理的解决方案是存储(大致)项目,数量,不含税总额(四舍五入)和总税额(四舍五入)。

是否有更好的方法来存储通用系统的这些细节?

鉴于系统需要健全,如果有多个税收价值可能需要分开(例如州和市),应该怎么办?在这种情况下,一个单独的表将按顺序排列,但只有一个rowID和一些taxID映射到totalTax列会被认为是过多吗?

澄清:询问如何存储有关个别交易及该方面的数据;与税收特定税率的细节不同。

1 个答案:

答案 0 :(得分:8)

方法的问题是,如果税收变化,英国的增值税(销售税)在过去12个月内发生了两次变化。

当我在电子商务网站工作时,我们有一张表Tax_Rate,其中包含商店可以处理的不同税率,例如。

  1. TaxFree - 0%
  2. 增值税 - 17.5%
  3. DiscountedVat - 15%
  4. 等...
  5. 然后您的库存表字段可能

    • 项目Id
    • 单价
    • fk_TaxRate

    您的invoice_detail行表将是

    • fk_OrderId
    • fk_ItemId
    • PerItemPriceCharged(非规范化)
    • TaxRateCharged(非规范化)
    • QuantityOrdered

    您的发票表将是

    • 的OrderId
    • fk_CustomerId

    其中fk_denotes是外键。请注意,OrderId在您的发票行表中不是唯一的。

    编辑:今天头到处都是。

    您需要对发票行总计和税率总额进行非规范化,因为您不希望项目价格或税率的未来变更会影响历史发票。