sql >> Databáze >  >> RDS >> Sqlserver

Návrh účetnictví a databáze, ukládání debetní a kreditní částky

Jak jste zjistili, použití jednoho sloupce pro vše a pak použití záporných čísel pro debety nebo kredity nefunguje. Účetní hodnoty nejsou skaláry – jsou to vektory, které obsahují enum (debetní nebo kreditní) a desetinné číslo s pevnou desetinnou čárkou (které může být kladné nebo záporné).

Každá účetní transakce musí obsahovat stejný počet debetů a kreditů. Pokud tomu tak není, není to platná transakce.

Podobně je stejným druhem vektoru i zůstatek na účtu. V každém okamžiku se musí celkové debety a celkové kredity na všech účtech v účetním systému navzájem rovnat, jinak se něco zlomí.

Dalším způsobem, jak se na to dívat, je uvažovat o účetní hodnotě jako o komplexním čísle, kde debety jsou skutečné a kredity imaginární. To znamená, že 4 debety + 3 kredity =4 + 3i. Tím je zřejmé, že nemůžete zjednodušte to dále tím, že sbalíte imaginární člen do negativního reálného členu - není to stejná osa číselné osy. Bylo by to stejné jako tvrdit, že 4 + 3i =4 - 3. Neplatná matematika.

Pokud by databáze mohla nativně ukládat komplexní čísla, pak by komplexní čísla byla ve skutečnosti dobrým způsobem ukládání účetních dat, pravděpodobně by odstranila spoustu zmatků, které programátoři obvykle mají v účetnictví, a vedla by k nejrůznějším zajímavým vlastnostem. Například vyvážená transakce by vždy měla fázový úhel 45 stupňů, stejně jako vyvážená sada účtů. Většina databází však vyžaduje, abyste před uložením rozložili komplexní číslo na jeho skutečné a imaginární výrazy a uložili tyto výrazy do různých sloupců – v účetním světě jsou názvy těchto dvou sloupců „debety“ a „kredity“.

P.S.:Uvědomuji si, že někteří lidé používají záporné pro kredity a kladné pro debety, ale je třeba dbát na správné provedení a je to křehké. Pokaždé, když se ho dotknete, musíte sledovat normální zůstatek jakéhokoli účtu – například protože má majetkový účet normální zůstatek debetní, můžete ho zvýšit pomocí kladného čísla. Ale účet pasiv má záporný normální zůstatek, takže zvýšení hodnoty tohoto účtu je záporné číslo. Tyto dvě hodnoty nemůžete v žádném okamžiku sčítat dohromady - nejsou totéž. Debet je něco, co máte, zatímco kredit je něco, co dlužíte. Umístění obou do stejného sloupce v databázové tabulce zavání.



  1. Databáze vs tabulkový prostor, jaký je rozdíl?

  2. MySQL kombinující COUNT, MAX a SUM

  3. sql group tím, že se chová jako facebookové zprávy (mssql sp)

  4. Výpočet rozdílů hodnot mezi dvěma záznamy v Eloquent