|
|
Zeile 1: |
Zeile 1: |
| Das Datenmodell bildet die Grundlage für das Erstellen des testTools.
| |
|
| |
|
| = Datenbanklogik =
| |
| Die Datenbanklogik erklärt, wie Daten in der Datenbank dargestellt werden.
| |
|
| |
| == 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 (question_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 die 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 das Login-verfahren:
| |
| $db = DB();
| |
| $user = $db->getUser($username);
| |
| if ($user->hasSameHash($password) == false) {
| |
| exit;
| |
| } else {
| |
| // LOGGED IN.
| |
| }
| |
| [[Category:Projekt:TestTool]]
| |