Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Conception de la comptabilité et de la base de données, stockage des montants débiteurs et créditeurs

Utiliser une colonne pour tout, puis utiliser des nombres négatifs pour les débits ou les crédits ne fonctionne pas, comme vous l'avez découvert. Les valeurs comptables ne sont pas des scalaires -- ce sont des vecteurs qui contiennent une énumération (débit ou crédit) et un nombre décimal à virgule fixe (qui peut être positif ou négatif).

Toute opération comptable doit contenir un nombre égal de débits et de crédits. Si ce n'est pas le cas, ce n'est pas une transaction valide.

De même, un solde de compte est également ce même type de vecteur. À tout instant, le total des débits et le total des crédits sur tous les comptes d'un système comptable doivent être égaux, sinon quelque chose s'est cassé.

Une autre façon de voir cela est de considérer une valeur comptable comme un nombre complexe, où les débits sont réels et les crédits sont imaginaires. Cela signifie que 4 débits + 3 crédits =4 + 3i. Cela rend évident que vous ne pouvez pas simplifiez cela davantage en effondrant le terme imaginaire en un terme réel négatif - ce n'est pas le même axe de droite numérique. Ce serait la même chose que de prétendre que 4 + 3i =4 - 3. Mathématiques non valides.

Si une base de données pouvait stocker des nombres complexes de manière native, alors les nombres complexes seraient en fait un bon moyen de stocker des données comptables, dissiperaient probablement une grande partie de la confusion que les programmeurs ont généralement sur la comptabilité et conduiraient à toutes sortes de propriétés intéressantes. Par exemple, une transaction équilibrée aurait toujours un angle de phase de 45 degrés, tout comme un ensemble de comptes équilibré. Mais la plupart des bases de données ont besoin que vous décomposiez le nombre complexe en ses termes réels et imaginaires avant le stockage, et que vous stockiez ces termes dans différentes colonnes -- dans le monde comptable, les noms de ces deux colonnes sont "débits" et "crédits", respectivement.

P.S. :Je suis conscient que certaines personnes utilisent le négatif pour les crédits et le positif pour les débits, mais cela demande beaucoup de soin et est fragile. Vous devez suivre le solde normal de n'importe quel compte chaque fois que vous le touchez - par exemple, puisqu'un compte d'actif a un solde débiteur normal, vous pouvez utiliser un nombre positif pour l'augmenter. Mais un compte de passif a un solde normal négatif, donc une augmentation de la valeur de ce compte est un nombre négatif. Vous ne pouvez pas additionner ces deux valeurs à tout moment - elles ne sont pas la même chose. Un débit est quelque chose que vous avez, tandis qu'un crédit est quelque chose que vous devez. Mettre les deux dans la même colonne d'une table de base de données sent mauvais.