让我们想象一下: 有一个网站,一种工作板。产品在那里虚拟。发布条目有额外的选项和费用。数据库:存储税率和信息
现在,在我们国家,有增值税,真的很复杂的规则。企业位于PL:
- 用户PL - 增值税税率为23%
- 欧盟个人用户 - 增值税税率为23%
- NP(不适用)
- - 企业/个人用户从欧盟企业欧盟以外 - NP(不适用)。
现在我想知道数据库设计的最佳方法。我们有如下表:
countries
code VARCHAR(3) PK AI
NAME VARCHAR(200) NN
users
country VARCHAR(3) FK_countries_code
account_type TINYINT //0 - individual, 1 - company
当应用税收规则几点适用:
- 用户位置
- 用户帐户类型。
您对数据库设计有什么建议吗?我在考虑改变国家的表格,并在这里应用一些反规范化 - 创建几个列:vat_rate_eu_personal
等,但这是一个可怕的想法。我还在关于实施新表格的事情:tax_rates
和tax_rates_rules
当信息将被存储。但是不知道第二个表的结构。
编辑
要清楚:有没有我0%的规则,这就是所谓的NP(不适用)。但是,税收规则有一个主要要求:来自欧盟的公司需要提供有效的VAT ID。这就是为什么我们创建了两种账户类型:公司账户和个人用户。
“对我来说没有0%的规则,它被称为NP(不适用)”。你称之为*的规则并不重要。在计算增值税时,不适用的规则实际上为0%。您不能在同一列中存储数字百分比和字符串('NP');它们是具有不同约束的不同数据类型。 – 2011-12-17 16:17:25
您是否通过查看用户的帐单地址,送货地址或其他信息来确定用户是在欧盟内部还是欧盟以外? – 2011-12-17 16:19:12
@Catcall - 基于提供的地址详细信息的用户国家 - 这就是为什么我们为国家使用单独的表。 – DaveW 2011-12-17 17:01:21