![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 0 Dołączył: 4.02.2014 Ostrzeżenie: (20%) ![]() ![]() |
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? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 0 Dołączył: 4.02.2014 Ostrzeżenie: (20%) ![]() ![]() |
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 20:23 |