想像してみましょう: ジョブボードの一種です。製品はそこに仮想です。エントリを投稿するための追加オプションと料金があります。データベース:税金の保存料金と情報
現在、私たちの国では、VATという非常に複雑なルールがあります。ビジネスはPLに位置しています:
- PLからのユーザ - VAT率は23%
ある - EUから個々のユーザー - VAT率は23%
ある - EUから企業 - NP(適用されない)
- 企業/個々のユーザーEU外 - 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
情報が格納されます。しかし、2番目のテーブルの構造については考えていません。
編集
それを明確にする:私には0%ルールはありません、それはNP(適用されない)と呼ばれています。しかし、税規則には1つの大きな要件があります:EUからの企業は有効なVAT IDを提供する必要があります。そのため、企業アカウントと個人ユーザーの2つのアカウントタイプを作成しました。
「私には0%のルールはありません。それはNP(not applicable)」と呼ばれています。あなたが*呼び出す*ルールは本当に重要ではありません。適用されないルールは、付加価値税の計算には実質的に0%です。同じパーツに数値パーセンテージと文字列( 'NP')を格納することはできません。それらは異なる制約を持つ異なるデータ型です。 –
ユーザーの請求先住所、配送先住所などを確認して、ユーザーがEUの内外にいるかどうかを判断しますか? –
@Catcall - 提供された住所の詳細に基づいたユーザー国 - そのため、私たちは国ごとに別々のテーブルを使用しました。 – DaveW