-
Notifications
You must be signed in to change notification settings - Fork 2
Struktur der Aufgaben
Die einzelnen Aufgaben des Trainers wurden als Task
-Interface definiert und in der Tasks.ts
-Datei in einer Liste abgespeichert.
Aufgrund der hohen Anzahl an Teilaufgaben sind die einzelnen Aufgabenobjekte sehr umfangreich und werden deshalb im Folgenden detailliert beschrieben.
Die ID der Aufgaben ist eine einfache Zahl und wird für das Routing und die URL der Aufgabe verwendet.
Beispiel:
id: 1
Der Titel der Aufgabe wird auf der Task-Selection Seite angezeigt.
Beispiel:
title: 'Skriptverkauf'
Die Beschreibung der Aufgabe ist der Text, der auf allen Aufgabenseiten über der Tabelle angezeigt wird.
Beispiel:
description: 'In der folgenden Tabelle wird beschrieben, welche Personen in ihren Veranstaltungen Skripte in welcher Anzahl verkaufen.'
Die in der Tabelle angezeigten Daten sind als Liste von Objekten formatiert. Jedes Objekt ist dabei eine Zeile der Tabelle.
Beispiel:
tableData: [
{
Veranstaltungsnummer: 112,
Veranstaltungsname: 'Englisch',
Personalnummer: 198,
Name: 'Schulz',
Skriptnummer: 2,
Preis: 25,
Anzahl: 4
},
...
]
Dies ist ein boolean, der festlegt, ob die Tabelle bereits in der ersten Normalform ist (false
). Ist dies nicht der Fall, müssen die Spalten, welche die erste Normalform verletzen in violatingColumns
hinterlegt werden.
Beispiel:
hasViolatingColumns: false
Falls die Tabelle Spalten besitzt, die die erste Normalform verletzen, müssen diese hier hinterlegt werden.
Beispiel (Aufgabe 2):
violatingColumns: ['Behandlungstag', 'Diagnose_Beschreibung', 'Diagnose', 'Therapie']
Hier müssen alle funktionalen Abhängigkeiten der Daten hinterlegt werden. Diese werden bei verschiedenen Aufgaben verwendet.
Die Abbildung der Primärschlüssel auf die zugehörigen Columns wird zunächst in der Aufgabe funktionale Abhängigkeiten abgefragt. Der Typ der Abhängigkeit wird anschließend in Typen der funktionalen Abhängigkeiten abgefragt.
In der Anwendung wird dies in der Form
** Primärschlüssel 1, Primärschlüssel 2, ... -> Spalte 1, Spalte 2, ... **
dargestellt (siehe Abbildung)
Beispiel:
functionalDependencies: [
{
primaryKeys: ['Veranstaltungsnummer'],
columns: ['Veranstaltungsname'],
type: 'partiell'
},
...
]
Hier muss eine Liste aller Primärschlüssel angegeben werden. Diese werden in der Aufgabe Primärschlüssel abgefragt.
Beispiel:
primaryKeys: ['Veranstaltungsnummer', 'Personalnummer', 'Skriptnummer']
Hier werden die Abhängigkeiten der zweiten Normalform festgelegt (siehe functionalDependencies
)
Beispiel:
secondNormalForm: [
{
primaryKeys: ['Veranstaltungsnummer'],
columns: ['Veranstaltungsname']
},
...
]
Hier werden alle anzuzeigenden Untertabellen angelegt. Jedes Listenelement ist dabei eine eigene Tabelle und somit analog zu tableData
eine Liste von Zeilen-Objekten.
Beispiel:
secondFormTableData: [
[
{
Veranstaltungsnummer: 202,
Veranstaltungsname: 'Spanisch'
},
{
Veranstaltungsnummer: 112,
Veranstaltungsname: 'Englisch'
}
],
...
]
Hier muss angegeben, ob die zweite Normalform mit der dritten Normalform übereinstimmt. Dies wird in der Aufgabe Dritte Normalform abgefragt.
Beispiel:
alreadyThirdNormalForm: true,
Hier müssen analog zu secondNormalForm
und functionalDependencies
alle Abhängigkeiten der dritten Normalform angegeben werden.
Beispiel:
thirdNormalFormSolutions: [
{
primaryKeys: ['Veranstaltungsnummer'],
columns: ['Veranstaltungsname']
},
...
]