Mam zamiar napisać prosty system kredytowy, który może "dodać", "odliczyć" kredyty w systemie. Obecnie myślę o dwóch podejściach.System kredytowy: oparty na historii lub w oparciu o saldo?
prosta: Przechowywać użytkownika kredyt jako
balance
pola w bazie danych, a wszystkie działania («add», «odliczenia») są rejestrowane, ale nie stosuje się do obliczania najnowszy bilans.Oparte na historii: Nie przechowuj salda w bazie danych. Saldo jest obliczane na podstawie historii transakcji, np. („Add”, „odliczenia”)
Zarówno sprawa będzie prace myślę, ale szukam, aby zobaczyć ewentualne zastrzeżenie przy projektowaniu takiego systemu, szczególnie jestem sprzyjanie System History based
.
Czy są jakieś implementacje referencyjne lub moduł open source, z którego korzystam?
Aktualizacja: Czy istnieje jakiś moduł oparty na Ruby/Rail, taki jak AuthLogic
, dzięki czemu mogę podłączyć się do mojego istniejącego kodu bez konieczności ponownego odkrywania koła (np. Transakcja, wycofywanie zmian, bezpieczeństwo itp.)?
Szczerze chciałbym wdrożyć zarówno i po prostu dodać hak do historii zaktualizować równowagę. To złagodzi potrzebę sprawdzania historii w celu ustalenia równowagi za każdym razem. Wydaje się to szczególnie przydatne w przypadku "odliczania" przedmiotów, w których chcesz się upewnić, że istnieje odliczenie do odliczenia. – engineersmnky
Jeśli korzystasz z MS SQL Server, możesz użyć _indeksowanego widoku_, aby system DBMS automatycznie utrzymywał poprawne saldo (na podstawie historii). –