Hm, ich brauche mal einen kleinen Denkanstoß für einen Vokabeltrainer.
Problem:
-Vokablen sollen aus einer
DB zufällig abgefragt werden.
-Es soll für jede Vokabel einen "Übungslevel" geben.
-Wird eine Vokabel richtig übersetzt dann steigt der Übungslevel
-Wird eine Vokabel falsch übersetzt dann fällt der Übungslevel
-Vokabeln mit niedrigem Übungslevel werden öfter abgefragt
-Vokabeln mit hohem Übungslevel werden seltener abgefragt
Also so eine Art "Lernen mit Karteikasten".
Gesucht ist nun eine elegante Methode dies softwaretechnisch umzusetzen.
-Ich möchte idealerweise bei richtiger oder falscher Antwort einfach etwas addieren oder subtrahieren müssen (innerhalb einer Bereiches natürlich)
-Ich möchte per
SQL-Abfrage (darum in der Spalte Datenbank) eine zufällig bestimmte Vokabel mit der richtigen Häufigkeit abrufen können (möglichst simpel).
Die Tabelle stelle ich mir ungefähr so vor:
USER INT //für eine Benutzer-ID, da für mehrere Benutzer mit eigenen Vokabeln
LANG INT //für eine Sprach-Kennung, da für mehrere Sprachen offen
NATIVE VARCHAR //das Wort in der Muttersprache
FOREIGN VARCHAR //das Wort in der Fremdsprache
LEVEL INT //der Übungslevel
LAST DATE //Datum der letzten Abfrage
Für die gewichtete Zufallszahl dachte ich mir einen Bereich festzulegen, z.B. 1-14
1-5 = Level 1
5-8 = Level 2
9-11 = Level 3
12-13 = Level 4
14 = Level 5
Damit sollte ich Vokabeln im Level 1 öfter zufällig ausgewählt bekommen, als eine Vokabel im Level 5.
Ich kann dann zwar bei richtiger Antwort einfach addieren, bis 14 erreicht ist, wenn ich aber diesen Wert in der
DB speichere, dann müsste ich bei der
SQL-Abfrage für eine Vokabel im Level 1 beispielsweise schreiben WHERE LEVEL=1 OR LEVEL=2 OR LEVEL=3 OR LEVEL=4 OR LEVEL=5. Finde ich jetzt nicht elegant. Das geht bestimmt besser.
Hat jemand eine Idee?
Gruß,
Guido