sql >> Database >  >> RDS >> Sqlserver

Boekhouding en databaseontwerp, opslaan van debet- en creditbedragen

Het gebruik van één kolom voor alles en vervolgens het gebruik van negatieve getallen voor afschrijvingen of tegoeden werkt niet, zoals je hebt ontdekt. Boekhoudwaarden zijn geen scalairen -- het zijn vectoren die een enum (debet of credit) en een decimaal getal met vaste komma (dat positief of negatief kan zijn) bevatten.

Elke boekhoudkundige transactie moet een gelijk aantal afschrijvingen en bijschrijvingen bevatten. Als dit niet het geval is, is het geen geldige transactie.

Evenzo is een rekeningsaldo ook zo'n soort vector. Op elk moment in de tijd moeten de totale afschrijvingen en de totale tegoeden over alle rekeningen in een boekhoudsysteem aan elkaar gelijk zijn, anders brak er iets.

Een andere manier om hiernaar te kijken is om een ​​boekhoudkundige waarde te zien als een complex getal, waarbij debetwaarden reëel zijn en credits denkbeeldig. Dit betekent dat 4 afschrijvingen + 3 tegoeden =4 + 3i. Dit maakt het duidelijk dat je niet kunt vereenvoudig dat nog verder door de denkbeeldige term in een negatieve reële term samen te vouwen - het is niet dezelfde getallenlijn-as. Het zou hetzelfde zijn als beweren dat 4 + 3i =4 - 3. Geen geldige wiskunde.

Als een database complexe getallen van nature zou kunnen opslaan, dan zouden complexe getallen eigenlijk een goede manier zijn om boekhoudgegevens op te slaan, zou waarschijnlijk een groot deel van de verwarring wegnemen die programmeurs gewoonlijk hebben over boekhouden, en zou leiden tot allerlei interessante eigenschappen. Een gebalanceerde transactie zou bijvoorbeeld altijd een fasehoek van 45 graden hebben, net als een gebalanceerde reeks rekeningen. Maar voor de meeste databases moet je het complexe getal ontleden in zijn echte en denkbeeldige termen voordat je het opslaat, en die termen in verschillende kolommen opslaan - in de boekhoudwereld zijn de namen van die twee kolommen respectievelijk "debet" en "credits".

P.S.:Ik ben me ervan bewust dat sommige mensen negatief gebruiken voor kredieten en positief voor afschrijvingen, maar dit vereist grote zorg om het goed te doen en is kwetsbaar. U moet het normale saldo van elke rekening bijhouden elke keer dat u deze aanraakt. Omdat een activarekening bijvoorbeeld een normaal debetsaldo heeft, kunt u een positief getal gebruiken om het te verhogen. Maar een passivarekening heeft een negatief normaal saldo, dus een stijging van de waarde van die rekening is een negatief getal. Je kunt die twee waarden op geen enkel moment bij elkaar optellen - ze zijn niet hetzelfde. Een debet is iets dat je hebt, terwijl een tegoed iets is dat je verschuldigd bent. Beide in dezelfde kolom in een databasetabel plaatsen stinkt.



  1. Bind IS NULL of NULL bij gebruik van PHP PDO en MySql

  2. Toekenning van PostgreSQL-privileges niet zichtbaar

  3. "Query niet toegestaan ​​in Waitfor" Fout 101 in SQL Server

  4. Gebruik van parameters voor mysql_query