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

Sep*_*eph 6 sql database-design

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

可以保存的一些字段是:

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

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

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

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

澄清:询问如何存储有关个别交易及该方面的数据; 关于税收特定税率的详细信息.

gin*_*boy 8

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

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

  1. 免税 - 0%
  2. 增值税 - 17.5%
  3. DiscountedVat - 15%
  4. 等等...

然后你的股票表字段可能有

  • 项目Id
  • 单价
  • fk_TaxRate

你的invoice_detail行表将是

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

你的发票表将是

  • 的OrderId
  • fk_CustomerId

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

编辑:今天头到处都是.

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

  • 相信我,存储订单记录中收取的税率.这是历史信息(当时做了什么)而不是真正的非规范化.如果有人更改了税率表(即使您存储有效日期并纠正错误),您也不希望这种情况发生变化.您收取的税率是您收取的是否正确的税率. (5认同)
  • 另一个选项是在Tax_rate表中添加一个开始和结束日期,其中包含自动增量ID字段,可以在发票行表中用作FK ...当费率发生变化时,您仍然可以将其与正确的税率挂钩时间. (3认同)