如何在数据库中存税?

时间:2011-09-18 19:11:12

标签: database database-design relational-database

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

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

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

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


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


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

2 个答案:

答案 0 :(得分:6)

你真正需要的是这样的:

enter image description here

将总税收合并到一个字段中的问题是,虽然您可能或可能不会在收据上以这种方式向客户展示,但各个司法管辖区都会期望您和您的会计师分别跟踪收取和应付的税款。因此,混合利率是不会的,因为您需要分配金额,这样您就可以向税务人员付款并让审计员满意。

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

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

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

答案 1 :(得分:1)

首先,您必须确定税收的控制维度是什么:州/省(卖方或买方的位置适用?)和交易的时间(年?)。这些字段必须成为税表查找的关键字段。

另见这里的讨论:How can I properly implement commerce data relationships in a sql database?