TestTool/Datenmodell: Unterschied zwischen den Versionen
K Dirkwagner verschob die Seite Projekt:testTool:DatenmodellX nach Projekt:TestTool:Datenmodell, ohne dabei eine Weiterleitung anzulegen |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
Das Datenmodell bildet die Grundlage für das Erstellen des testTools. | 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]] | [[Category:Projekt:TestTool]] |
Version vom 21. Januar 2021, 13:57 Uhr
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. }