Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyniki egzaminów, Wyliczać, czy zapisywać?
Omenomn
post 1.11.2016, 12:01:07
Post #1





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 4.02.2014

Ostrzeżenie: (20%)
X----


Cześć, potrzebuję wyświetlić na stronie wyniki testów rozwiązywanych w aplikacji i zastanawiam się, czy zapisywać je po rozwiązaniu testu przez użytkownika do bazy danych, czy dynamicznie je wyliczać?

Aktualnie mam tabelę z results z różnymi polami, np. ilość pytań łączna, ilość pytań poprawnych poprawnych, ilość pytań błędnych, zdany (true/false), wynik w procentach itd.

Rozwiązanie to jest pod względem szybkości dość dobre według mnie, bo przy wyświetlaniu po prostu pobieram rekordy z bazy.
Natomiast jest to jednak powielanie danych w bazie, bo wszystkie te pola mógłbym wyliczać dynamicznie w mysql i pytanie do Was, które rozwiązanie jest lepszą praktyką, wiem, że powielanie danych w bazie, nie jest dobrą praktyką, jak sądzicie?
Go to the top of the page
+Quote Post
charzak
post 1.11.2016, 18:06:35
Post #2





Grupa: Zarejestrowani
Postów: 29
Pomógł: 1
Dołączył: 25.03.2014

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


Nie wiem czy inni się ze mną zgodzą ale jeśli nie jest to duży projekt to ja bym dodał kolejną kolumnę z obliczonym wynikiem egzaminu. Gdy potrzebny jest sam wynik pobieramy tylko wynik, natomiast gdy zajdzie potrzeba wyświetlenia szczegółowych informacji pobieramy cały rekord lub interesujące kolumny.
Go to the top of the page
+Quote Post
ohm
post 1.11.2016, 19:14:28
Post #3





Grupa: Zarejestrowani
Postów: 623
Pomógł: 144
Dołączył: 22.12.2010

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


Jeśli nie masz zmieniających się warunków do wyliczeń, to jak najbardziej zapisuj wyniki i wyświetlaj tylko wyniki. Ewentualnie, jak nie chcesz zapisywać tego w bazie, to użyj jakiegoś memcache'a.
Go to the top of the page
+Quote Post
Omenomn
post 1.11.2016, 20:07:35
Post #4





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 4.02.2014

Ostrzeżenie: (20%)
X----


Charzak, nie w tym tkwi rzecz tak mi się zdaje, bo przechowuję wynik egzaminu w tabeli results, tylko kwestia tego, że tabela result tak na prawdę powiela dane, bo mógłbym te wszystkie kolumny generować sobie dynamicznie selectem zaawansowanym i wtedy nie ma powielania danych w bazie i mniejsze ryzyko błędów, sam nie wiem.

Może ten temat w bazach danych powinienem był umieścić, a nie w php...
Go to the top of the page
+Quote Post
trueblue
post 1.11.2016, 20:14:56
Post #5





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Jakie dane powiela tabela results? A raczej: gdzie indziej przechowujesz wyniki?


--------------------
Go to the top of the page
+Quote Post
Omenomn
post 1.11.2016, 20:30:15
Post #6





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 4.02.2014

Ostrzeżenie: (20%)
X----


wyniki zliczane są na podstawie tego czy ilość poprawnych odpowiedzi udzielonych przez usera na pytanie jest równa ilości poprawnych odpowiedzi zaznaczonych przez tworzącego test i czy ilość niepoprawnych odpowiedzi jest równa zero.

Relacje w bazie danych są dość skomplikowane, ale w każdym razie po zakończeniu testu mam zapytanie, które podsumowuje wszystkie pytania i dodaje wyliczone pole correct, którego wartość to 1 - poprawne, 0 - niepoprawne lub null, jeśli pytanie wymaga sprawdzenia przez admina.

Na podstawie tego zapytania tworzę rekord w tabeli results, gdzie przechowuję ilość pytań, aktualny wynik, czy zdany, czy nie itd.

Mógłbym selectem obliczać na podstawie udzielonych odpowiedzi przez użytkownika, czy zaliczył, czy nie i resztę kolumn, a w results przechowywać jedynie id testu i id użytkownika, żeby mieć informacje o zakończonym teście.

Sam nie wiem.
Go to the top of the page
+Quote Post
trueblue
post 1.11.2016, 20:34:24
Post #7





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Czyli Twoje pytanie sprowadza się do tego, czy przechowywać końcowy wynik, tak?
Jeśli ten wynik jest gdzieś wykorzystywany/wyświetlany po teście, to nie zaszkodzi go przechowywać, tym bardziej, że, jak piszesz, procedura jego wyliczania jest dosyć skomplikowana.


--------------------
Go to the top of the page
+Quote Post
Omenomn
post 1.11.2016, 21:41:30
Post #8





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 4.02.2014

Ostrzeżenie: (20%)
X----


okej, dzięki.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 00:55