Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Punktacja
Forum PHP.pl > Forum > Przedszkole
Barcelona
Witam ponownie, ogólnie tematyka jest prosta, jednak wole się upewnić czy przyjąłem dobrą technikę punktacji.
Moim celem jest stworzenie systemu do dodawania, oraz odejmowania punktów użytkownikowi. Mógłbym w tabeli z userami dać kolumnę "punkty", ale takie rozwiązanie wydaje mi się mało wydajne.
Chciałbym mieć możliwość stworzenia historii punktacji, a więc pomyślałem że stworze oddzielną tabele z polami: id, id_user, data, punkt, za_co
I takie rozwiązanie wydaje mi odpowiednie, w zapytaniu robię tylko SUM dla pola punkt z uwzględnieniem danego usera i mam wynik punktacji. Nie wiem jednak jak to się sprawdzi w przypadku ujemnych punktów. Czy wystarczy jak do pola punkt dodam ujemny punkt?
irmidjusz
Sprawdź!

Czy tak trudno najpierw samemu spróbować, przekonać się co jak działa, czy domysły są słuszne?
Własna nauka i doświadczenie są bezcenne! Działanie rozwija zrozumienie.
nospor
Cytat
Mógłbym w tabeli z userami dać kolumnę "punkty", ale takie rozwiązanie wydaje mi się mało wydajne.

Cytat
I takie rozwiązanie wydaje mi odpowiednie, w zapytaniu robię tylko SUM dla pola punkt z uwzględnieniem danego usera i mam wynik punktacji.

Nie kumam Twojego toku myślenia. Uważasz, że latanie po x rekordach i ich sumowanie jest bardziej wydajne od odczytania pola z jednego rekordu? W którym wymiarze tak jest? wink.gif

Skoro chcesz mieć historię to połącz obie metody. Stwórz tabelę z historią, ale też stwórzy pole w tabeli usera i te pole na bieżącą aktualizuj. Będziesz miał szybko i historię
Barcelona
Cytat
Czy tak trudno najpierw samemu spróbować, przekonać się co jak działa, czy domysły są słuszne?

Kolego, wiele razy miałem tak że z początku coś zdawało egzamin, jednak kiedy potrzebowałem zwiększyć funkcjonalność to już musiałem od zera pisać bo nie pomyślałem o tym od razu. Po II jest to dział "Przedszkole", a nawet dzieci w przedszkolu zadają pytania. Na forum są osoby z o wiele większą praktyką i na pewno znajdzie się osoba, która przerabiała ten temat. Z chęcią wysłucham na co zwrócić uwagę i jak optymalnie napisać kod

Tyle słowem wstępu.

Cytat
Nie kumam Twojego toku myślenia. Uważasz, że latanie po x rekordach i ich sumowanie jest bardziej wydajne od odczytania pola z jednego rekordu? W którym wymiarze tak jest?

Skoro chcesz mieć historię to połącz obie metody. Stwórz tabelę z historią, ale też stwórzy pole w tabeli usera i te pole na bieżącą aktualizuj. Będziesz miał szybko i historię

Właśnie brałem pod uwagę taką opcję, jednak nie wiedziałem jak na jednym polu tworzyć historię punktacji. Stworzenie dodatkowej tabeli gdzie mógłbym tworzyć taką historię jest bardzo dobrym rozwiązaniem, tylko boje się że w pewnym momencie stracę zbieżność informacji między dwoma tabelami.
nospor
Cytat
tylko boje się że w pewnym momencie stracę zbieżność informacji między dwoma tabelami.
Nic nie stoi na przeszkodzie byś raz na jakiś czas kolumne w tabeli usera aktualizował na podstawie bieżących danych w historii.
Barcelona
Ok, zabieram się do działania smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.