Chcę mieć możliwość śledzenia punktów użytkownika uzyskanych w mojej witrynie. Nie jest tak jak SO, ale system punktowy jest podobny, ponieważ chcę, aby każdy użytkownik miał całkowitą sumę, a następnie chcę śledzić transakcje, które doprowadziły do tej sumy.Śledzenie punktów użytkownika (jak SO)
Czy powinienem zatrzymać użytkownika w tabeli użytkownika, czy też powinienem wyciągnąć wszystkie transakcje, które wpływają na użytkownika w sumie pytań, sumować je i pokazywać sumę punktów?
Wygląda na to, że ta ostatnia to więcej pracy niż potrzeba, aby uzyskać całość. Ale potem znowu wzdrygam się na myśl o zachowaniu tych samych danych (mniej lub bardziej) w dwóch różnych miejscach.
Jaki jest właściwy sposób zaprojektowania tego?
EDYCJA: Wziąłem radę. Używanie obu i rekursy. Dodałem kolumnę RecalcDate, a jeśli ma ponad jeden dzień, zostanie ponownie rekalowana. Suma ta jest również przeliczana za każdym razem, gdy użytkownik robi coś, co powinno wpłynąć na ich całkowity punkt.
Czy ktoś podejmie takie podejście w przypadku systemu, który może generować setki transakcji dla każdego użytkownika dziennie? Na przykład gra, w której śledzisz punkty doświadczenia lub złoto. Są to częste rzeczy, które ludzie mogą próbować wykorzystywać, ale przechowywanie wielu transakcji wydaje się zwiększać rozmiar bazy danych. –
@Zachary - miejsce na dysku twardym jest najtańszym zasobem serwera, w rzeczywistości nie jest to zbyt wiele danych do zapisania. Spójrz na SO, mnóstwo transakcji dziennie, ale kiedy podchodzisz do czegoś takiego jak powiedzmy WoW, masz do czynienia z wyjątkowo dużą skalą. W takim przypadku może być inne podejście, może nagrywanie co miesiąc, co jest sumą i tylko trzymanie 3-miesięcznych danych lub coś takiego, więc masz możliwość wycofania zmian w przypadku zerwania zmiany itp. –