如何在数据库中存税?

mpe*_*pen 4 database database-design relational-database

我需要为我的项目添加每省/州税.

我在辩论是否应该在省和税之间添加多对多关系,或者只是为每个省添加tax1_name,tax1_rate,tax2_name,tax2_rate.我认为任何地方都不超过2税?

我还需要在购买时用每张发票存储税率.

所以我的选择是添加2个多对多表,或添加8个字段.你会选择哪个,为什么?


或者我可以只有1个合并税.如果它在发票上显示为"GST + PST",我认为不会太糟糕.这将解决愚蠢的魁北克问题,该问题在商品及服务税(税收征税!)之上收取QST.


或者我可以只有1个多对多表并存储每个税的开始和结束日期,然后当我生成发票时,我可以根据日期查找它.

Joe*_*own 7

你真正需要的是这样的:

在此输入图像描述

与总税收合并成一个单一领域的问题是,虽然你可能会或可能不会与展示它的收据给客户这种方式蒙混过关,各辖区要期待您和您的会计师跟踪收集的税收和单独支付.因此,混合利率是不会的,因为您需要分配金额,以便您可以向税务人员付款并满足审计员的要求.

在我建议的问题解决方案中,请注意该TAX_RATE表包含税收和jursidiction之间的交集.这样的速度可以改变,不仅从管辖区到管辖区,而且它可以随着时间的推移而改变.

另请注意,税率表包含一个calculation_order值.这可以是您喜欢的任何可以分类和比较的东西.我以前用过整数.这个想法是你从第一个开始按顺序申请税.如果您有两个适用于相同基本金额的税,则这些税收具有相同的计算顺序.如果您在第一税额之上缴纳税款2,那么税收2的计算订单会更高.

最后,我列出了一张表,可以让您随时跟踪税收减免情况.你可以处理这种不同的方式,我绘制它的方式可能不是最好的或最简单的.关键是要包括一个机制,说"产品X是否(或没有)获得税Y(在给定的日期范围内)".