3.0 KiB
Datenmodell und Begriffe
Dieses Dokument beschreibt die fachliche Bedeutung der zentralen Datensätze. Es soll verhindern, dass technisch ähnliche Felder als unterschiedliche Sachverhalte interpretiert oder dieselben Informationen mehrfach gespeichert werden.
Lerngruppe (LearningGroup)
Eine Lerngruppe ist die konkrete Unterrichtsgruppe eines Fachs in genau einem Schuljahr. Sie kann als Klasse oder Kurs organisiert sein.
Name: frei gewählte Bezeichnung, zum Beispiel5b NAT (BEN)oderMathe GSubjectId: Verweis auf das unterrichtete FachSchoolYear: Schuljahr dieser konkreten LerngruppeGradeLevel: Klassen- beziehungsweise Jahrgangsstufe
Der Fachname wird ausschließlich im Subject-Stammdatensatz gepflegt. Die
Lerngruppe speichert keine zweite Kopie des Fachnamens.
Gruppenzuordnung (GroupMembership)
Eine Gruppenzuordnung verbindet einen Schüler mit einer Lerngruppe. Sie ist keine Aufnahme oder Einschreibung an der Schule.
StudentId: SchülerGroupId: LerngruppeAddedOn: Tag, an dem die Zuordnung in der App angelegt wurdePeriod: ganzes Schuljahr, erstes Halbjahr, zweites Halbjahr oder eigener ZeitraumJoinedAt/LeftAt: Grenzen eines eigenen TeilnahmezeitraumsNiveau: optionale Niveaudifferenzierung
Das Schuljahr wird über die Lerngruppe ermittelt und deshalb nicht zusätzlich
in der Gruppenzuordnung gespeichert. Für eine spätere echte Schulaufnahme wäre
ein eigenes Feld wie Student.SchoolEntryDate zu verwenden.
Pro Kombination aus Schüler und Lerngruppe darf es höchstens eine Zuordnung geben.
Bewusst gespeicherte Momentaufnahmen
Einige berechnete Werte bleiben absichtlich gespeichert:
ExamResult.TotalPointsundExamResult.Gradehalten das zuletzt berechnete Klausurergebnis fest.Exam.GradingKeyhält den für die konkrete Klausur verwendeten Notenschlüssel fest und ist unabhängig von später geänderten Vorlagen.Exam.Taskshält die Aufgabenstruktur der konkreten Klausur fest.
Änderungen an Aufgaben oder Notenschlüssel müssen die betroffenen Ergebnisse kontrolliert neu berechnen. Diese Werte sind daher fachliche Momentaufnahmen und nicht bloß unkontrollierte Kopien.
Bewusste Denormalisierung
Lesson.GroupId bleibt zusätzlich zu Lesson.UnitId gespeichert. Dadurch kann
der häufige Kalenderzugriff auf alle Stunden einer Lerngruppe direkt indiziert
werden. Beim späteren Ausbau der Unterrichtsplanung muss sichergestellt werden,
dass Lesson.GroupId mit der Lerngruppe der zugehörigen Einheit übereinstimmt.
Eindeutige Schlüssel
Die Datenbank schützt folgende Kombinationen mit eindeutigen Indizes:
- Gruppenzuordnung:
StudentId + GroupId - Klausurergebnis:
ExamId + StudentId - Mitarbeitseintrag:
SessionId + StudentId - Fach: normalisierter Fachname
Altdaten werden beim Öffnen der Datenbank automatisch migriert. Die Migration
verknüpft bisherige Fachtexte mit den Fachstammdaten, benennt die bisherige
enrollments-Collection in group_memberships um und entfernt daraus das
doppelt gespeicherte Schuljahr.