Imaginons: Il existe un site Web, une sorte de tableau d'offres d'emploi. Les produits sont virtuels là-bas. Il y a des options et des frais supplémentaires pour poster une entrée.Base de données: Stockage des taxes Tarifs et informations
Maintenant, dans notre pays, il y a la TVA, des règles vraiment compliquées. Business est situé dans PL:
- utilisateurs de PL - Taux de TVA est de 23%
- utilisateurs individuels de l'UE - taux de TVA est de 23%
- les entreprises de l'UE - NP (pas appliquer)
- entreprises/utilisateurs individuels hors UE - NP (ne s'applique pas).
Maintenant je m'interroge sur la meilleure approche avec la conception de base de données. Nous avons des tables suivantes:
countries
code VARCHAR(3) PK AI
NAME VARCHAR(200) NN
users
country VARCHAR(3) FK_countries_code
account_type TINYINT //0 - individual, 1 - company
Lors de l'application des règles fiscales applicables peu de choses:
- emplacement de l'utilisateur
- type de compte utilisateur.
Avez-vous des suggestions pour la conception de la base de données? Je pensais à modifier la table des pays et à appliquer une dénormalisation ici - en créant quelques colonnes: vat_rate_eu_personal
, etc. mais c'est une idée terrible. Je pensais aussi à la mise en œuvre de nouvelles tables: tax_rates
et tax_rates_rules
lorsque les informations seront stockées. Cependant n'ont aucune idée de la structure de la deuxième table.
Modifier
Pour préciser: il n'y a pas 0% règle pour moi, il est appelé NP (non applicable). Cependant, les règles fiscales ont une exigence majeure: les entreprises de l'UE doivent fournir un numéro de TVA valide. C'est pourquoi nous avons créé deux types de compte: pour les comptes d'entreprise et les utilisateurs individuels.
"il n'y a pas de règle de 0% pour moi, ça s'appelle NP (ne s'applique pas)". Ce que vous appelez * la règle n'a pas vraiment d'importance. Une règle qui ne s'applique pas est effectivement de 0% pour le calcul de la TVA.Vous ne pouvez pas stocker de pourcentages et de chaînes numériques ('NP') dans la même colonne; ce sont des types de données différents avec des contraintes différentes. –
Est-ce que vous déterminez si un utilisateur se trouve à l'intérieur ou à l'extérieur de l'UE en consultant l'adresse de facturation, l'adresse de livraison ou autre chose de l'utilisateur? –
@Catcall - pays de l'utilisateur basé sur les détails de l'adresse fournie - c'est pourquoi nous avons utilisé un tableau séparé pour les pays. – DaveW