Mam quiz (nazwijmy to quizem1). Quiz1 używa tej samej listy słów za każdym razem, gdy jest generowany. Jeśli użytkownik potrzebuje, można je pominąć słowa do zakończenia quizu. Chciałbym przechowywać te pominięte słowa w mysql, a następnie wykonać na nich statystyki.
Początkowo miałem zamiar przechowywać nieodebrane słowa w jednej kolumny jako ciąg znaków. Każde słowo zostanie oddzielone przecinkiem.
|testid | missedwords | score | userid |
*************************************************************************
| quiz1 | wordlist,missed,skipped,words | 59 | 1 |
| quiz2 | different,quiz,list | 65 | 1 |
Problem z tego podejścia jest to, że chcę pokazać statystyki na koniec każdego quizu o której słowa były najczęściej pominięte przez użytkowników, którzy wzięli quiz1.
jestem przy założeniu, że przechowywanie nieodebranych słowa w jednej kolumnie, jak wyżej jest nieefektywne w tym celu, jak bym trzeba wyodrębnić informacje, a następnie zgadzają się - (prawdopodobnie tally użyciem PHP-chyba że rejestrowane dane przechowywane w osobnej tabeli).
Wówczas pomyślałem, że być może muszę utworzyć oddzielny stolik dla pominiętych słów. Zaletą poniższej tabeli jest to, że powinno być łatwo dopasować słowa z poniższej tabeli.
|Instance| missed word |
*****************************
| 1 | wordlist |
| 1 | missed |
| 1 | skipped |
Innym podejściem mogę utworzyć tabelę z tallys i aktualizować każdy quiz1 czas została podjęta.
Testid | wordlist| missed| skipped| otherword|
**************************************************
Quiz1 | 1 | 1| 1| 0 |
Problem z tym podejściem polega na tym, że dla każdego quizu potrzebowałbym innej tabeli, ponieważ w każdym quizie będą używane różne słowa. Również informacje są tracone, ponieważ tylko dane są przechowywane, a nie powiązane dane, które użytkownik pominął które słowa.
Pytanie
Które podejście byłoby użyć? Czemu? Alternatywne podejścia do tego zadania są mile widziane. Jeśli zauważysz jakieś błędy w mojej logice, możesz je wskazać.
EDIT Użytkownicy będą mogli odzyskać quizu tyle razy, ile chcą. Ich informacje nie będą aktualizowane, zamiast tego dla każdego quizu, który odtworzyli, zostanie utworzona nowa instancja.
Najwyraźniej 'testid' brakuje w tabeli z' brakującym słowem'. Jeśli celowe przedstawienie pytania nie zostało celowo zmniejszone, najpierw sprawdź bazy danych, SQL. –
Czy pominięte słowa muszą być powiązane z konkretnymi użytkownikami, czy przechodzisz do bardziej anonimowych statystyk? (w swoich propozycjach używasz dwóch metodologii, więc może być potrzebne dodatkowe wyjaśnienie.) – Jon
Chciałbym zachować jak najwięcej informacji, więc chciałbym zachować nieodebrane słowa związane z konkretnym użytkownikiem. Później planuję pokazywać użytkownikowi indywidualne statystyki (lub przynajmniej mieć możliwość późniejszego opracowania). – TryHarder