TestTool/Datenmodell: Unterschied zwischen den Versionen

Aus Foxwiki
Zeile 48: Zeile 48:


So ungefähr läuft der Anmeldevorgang:
So ungefähr läuft der Anmeldevorgang:
  $db = DB();
  $db = new DB();
  $user = $db->getUser($username);
  $user = $db->getUser($username);
  if ($user->hasSameHash($password)) {
  if ($user->hasSameHash($password)) {

Version vom 21. Januar 2021, 15:39 Uhr

Das Datenmodell bildet die Grundlage für das Erstellen des testTools.

Datenbanklogik

Die Datenbanklogik erklärt, wie Daten in der Datenbank dargestellt werden. Es werden die Haupttabellen und ihre Beziehungen gezeigt.

Aktueller Stand

Fragen (questions)

Beziehungen:

  • Mehrere Fragen (questions) Können zu einem Thema (topic) gehören, welche zu einem Fachgebiet (subject) gehören können.
  • Eine Frage kann mehrere Aufgaben (tasks) beinhalten, welche mehrere Antworten (answers) haben können.
  • Eine Frage ist im Besitz eines Benutzers (user) und wurde zuletzt von einem Benutzer geändert.

Begründungen:

  • Es gibt nur eine Tabelle welches drei Typen (fill in, multiple choice, match) von Fragen speichert. Dies wird gemacht damit man den Fragetyp (question_type) einer Frage ganz einfach ändern kann.
  • Ob eine Aufgabe angezeigt/benotet wird, hängt von dem Fragetyp ab und ob die Antworten richtig oder falsch sind (task_are_answers_correct). Es macht kein Sinn Fill-In-Fragen mit falschen Antworten anzuzeigen.
  • Die Reihenfolge der Aufgaben (tasks) muss irgendwie kontrolliert werden. Entweder man sortiert sie nach dem Inhalt (task_text) oder nach einer vorgegebenen Reihenfolge (task_position). Momentan ist es das Letztere der Beiden.

Benutzer (users)

Beziehungen:

  • Mehrere Benutzer (Users) Können zu einer Gruppe (Group) gehören.
  • Mehrere Benutzer Können eine Rolle (Role) haben.
  • Ein Benutzer kann beliebig viele Fragen erstellen.

Erläuterungen:

  • Gruppen(groups) sind ein Weg mehrere Benutzer (users) auf einmal zu kontrollieren.
  • Rollen(roles) geben einen Benutzer Rechte.

Noch erforderlich

Prüfungen (Tests)

  • Sollen Möglichkeit haben wiederholbar zu sein.
  • Sollten Dauer und Zeitpunkt haben.
  • Sollten von mehreren Gruppen durchführbar sein.
  • Sollten Noten erstellen.

Änderungspotential

  • Benutzer(users) sollten zu mehreren Gruppen(groups) gehören.
  • Die Aufteilung der Fragetypen(question_type), z.B. könnten alle Fragetypen einzelne Tabellen haben.
  • Die Tabellenrepräsentation der Reihenfolge der Aufgaben (Tasks) in einer Frage (Question).
  • Wie die große Anzahl an Rechten einer Rolle (Role) aufgeteilt werden soll damit die Tabelle nicht unübersichtlich wird.

PHP-Schnittstelle

Die Datenbanktabellen werden durch Klassen dargestellt, die durch einer Fabrik-Klasse aus der Datenbank gelesen und erstellt werden.

So ungefähr läuft der Anmeldevorgang:

$db = new DB();
$user = $db->getUser($username);
if ($user->hasSameHash($password)) {
    // LOGGED IN
} else {
    // NOT LOGGED IN.
}