Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Punktacja, Dodawanie punktów userowi
Barcelona
post
Post #1





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
irmidjusz
post
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 60
Dołączył: 25.02.2012

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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? (IMG:style_emoticons/default/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ę
Go to the top of the page
+Quote Post
Barcelona
post
Post #4





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post
Barcelona
post
Post #6





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


Ok, zabieram się do działania (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 15:39