TestTool/Datenmodell: Unterschied zwischen den Versionen
K Dirkwagner verschob die Seite TestTool:Datenmodell nach TestTool/Datenmodell, ohne dabei eine Weiterleitung anzulegen: Textersetzung - „:“ durch „/“ |
|||
(8 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
= Datenbanklogik = | = Datenbanklogik = | ||
Die Datenbanklogik erklärt, wie Daten in der Datenbank dargestellt werden. | Die Datenbanklogik erklärt, wie testTool Daten in der Datenbank dargestellt werden. | ||
== Aktueller Stand == | == Aktueller Stand == | ||
[[Datei:TestTool designer 2021-01-25.png|1200px]] | |||
=== Fragen (questions) === | === Fragen (questions) === | ||
Beziehungen: | Beziehungen: | ||
* Mehrere Fragen (questions) Können zu einem Thema (topic) gehören | * Mehrere Fragen (questions) Können zu einem Thema (topic) gehören. Jedes Thema gehört zu einem Fachgebiet (subject). | ||
* | * Mehrere Teilaufgaben (pairing, fill_in, multiple_choice) können zu einer Frage gehören. Nur Ausfüllfragen (fill_in) können mehrere Antworten (fill_in_answers) haben. | ||
* Eine Frage ist im Besitz eines Benutzers (user) und wurde zuletzt von einem Benutzer geändert. | * Eine Frage ist im Besitz eines Benutzers (user) und wurde zuletzt von einem Benutzer geändert. | ||
Begründungen: | Begründungen: | ||
* Die Reihenfolge der Teilaufgaben (pairing, fill_in, multiple_choice) muss irgendwie kontrolliert werden. Entweder man sortiert sie nach dem Inhalt (*_text) oder nach einer vorgegebenen Reihenfolge (*_position). Momentan ist es das Letztere der Beiden. | |||
* Die Reihenfolge der | |||
=== Benutzer (users) === | === Benutzer (users) === | ||
Zeile 40: | Zeile 39: | ||
== Änderungspotential == | == Änderungspotential == | ||
* Benutzer(users) sollten zu mehreren Gruppen(groups) gehören. | * Benutzer(users) sollten zu mehreren Gruppen(groups) gehören. | ||
* Wie die große Anzahl an Rechten einer Rolle (Role) aufgeteilt werden soll damit die Tabelle nicht unübersichtlich wird. | * Wie die große Anzahl an Rechten einer Rolle (Role) aufgeteilt werden soll damit die Tabelle nicht unübersichtlich wird. | ||
Zeile 56: | Zeile 53: | ||
// NOT LOGGED IN. | // NOT LOGGED IN. | ||
} | } | ||
[[ | [[Kategorie:TestTool]] |
Aktuelle Version vom 29. März 2023, 13:16 Uhr
Das Datenmodell bildet die Grundlage für das Erstellen des testTools.
Datenbanklogik
Die Datenbanklogik erklärt, wie testTool Daten in der Datenbank dargestellt werden.
Aktueller Stand
Fragen (questions)
Beziehungen:
- Mehrere Fragen (questions) Können zu einem Thema (topic) gehören. Jedes Thema gehört zu einem Fachgebiet (subject).
- Mehrere Teilaufgaben (pairing, fill_in, multiple_choice) können zu einer Frage gehören. Nur Ausfüllfragen (fill_in) können mehrere Antworten (fill_in_answers) haben.
- Eine Frage ist im Besitz eines Benutzers (user) und wurde zuletzt von einem Benutzer geändert.
Begründungen:
- Die Reihenfolge der Teilaufgaben (pairing, fill_in, multiple_choice) muss irgendwie kontrolliert werden. Entweder man sortiert sie nach dem Inhalt (*_text) oder nach einer vorgegebenen Reihenfolge (*_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.
- 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. }