Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Projekt księgowości i bazy danych, przechowywanie kwot debetowych i kredytowych

Używanie jednej kolumny do wszystkiego, a następnie używanie liczb ujemnych dla debetów lub kredytów nie działa, jak odkryłeś. Wartości księgowe nie są skalarami — są to wektory, które zawierają wyliczenie (obciążenie lub kredyt) i stałą liczbę dziesiętną (która może być dodatnia lub ujemna).

Każda transakcja księgowa musi zawierać równą liczbę obciążeń i uznań. Jeśli tak nie jest, nie jest to prawidłowa transakcja.

Podobnie saldo konta jest również tego samego rodzaju wektorem. W dowolnym momencie łączne obciążenia i łączne kredyty na wszystkich rachunkach w systemie księgowym muszą być sobie równe, w przeciwnym razie coś się popsuło.

Innym sposobem patrzenia na to jest myślenie o wartości księgowej jako liczbie zespolonej, w której obciążenia są rzeczywiste, a kredyty są urojone. Oznacza to, że 4 debety + 3 kredyty =4 + 3i. To sprawia, że ​​jest oczywiste, że nie możesz uprościj to jeszcze bardziej, zwijając urojony składnik w ujemny składnik rzeczywisty -- to nie jest ta sama oś liczbowa. Byłoby to to samo, co twierdzenie, że 4 + 3i =4 - 3. Niepoprawna matematyka.

Gdyby baza danych mogła przechowywać liczby zespolone natywnie, to liczby zespolone byłyby właściwie dobrym sposobem przechowywania danych księgowych, prawdopodobnie wyjaśniłyby wiele zamieszania, jakie zwykle mają programiści na temat rachunkowości, i prowadziłyby do wielu interesujących właściwości. Na przykład zrównoważona transakcja miałaby zawsze kąt fazowy 45 stopni, podobnie jak zrównoważony zestaw kont. Jednak większość baz danych wymaga rozłożenia liczby zespolonej na jej rzeczywiste i urojone terminy przed przechowywaniem i przechowywania tych terminów w różnych kolumnach -- w świecie rachunkowości nazwy tych dwóch kolumn to odpowiednio „debety” i „kredyty”.

P.S.:Zdaję sobie sprawę, że niektórzy używają ujemnych wartości w przypadku kredytów i dodatnich w przypadku debetów, ale wymaga to dużej staranności i jest kruche. Musisz śledzić normalne saldo dowolnego konta za każdym razem, gdy go dotykasz – na przykład, ponieważ konto aktywów ma normalne saldo debetowe, możesz użyć liczby dodatniej, aby je zwiększyć. Ale konto pasywów ma ujemne saldo normalne, więc wzrost wartości tego konta jest liczbą ujemną. Nie możesz zsumować tych dwóch wartości w dowolnym momencie — to nie to samo. Debet to coś, co masz, a kredyt to coś, co jesteś winien. Umieszczenie obu w tej samej kolumnie w tabeli bazy danych brzydko pachnie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wymagane uprawnienia do przeglądania listy tabel w Management Studio

  2. 13 najlepszych praktyk w zakresie bezpieczeństwa SQL Server

  3. Błąd zatwierdzenia GitHub:odmowa uprawnień krytyczna:nie można przetworzyć ścieżki ~/App_Data/aspnet-MyProject.mdf

  4. Dlaczego kolumna WHERE =NULL nie zgłasza błędu w programie SQL Server?

  5. Zapytanie SQL dla testu Chi-SQUARE