Datenbankaufbau

Das relationale Schema des Stundenplans

Hier wird das grundlegende relationale Datenbankschema erläutert. Abweichungen von der eingesetzen Datenbank sind möglich, insbesondere durch individuell angepasste oder zusätzliche Datenbankfelder.

"Index" und "Null erlaubt"-Werte in Klammern sind Ist-Werte der Datenbank. Die Nullwerte wurden bei der Entwicklung etwas frei gehandhabt.
Die Fremdschlüssel sind ohne Löschweitergabe (CASCADE DELETE) um nicht versehentlich Unterrichtsstunden zu löschen. Zum Löschen nicht verwendeter Stammdaten kann "Wartung" im Stundenplanprogramm verwendet werden. Durch aktiviertes CASCADE UPDATE in den Datenbanktabellen können Änderungen an Primärschlüsseln der Stammdaten weitergegeben werden.
Durch Trigger wird verhindert, dass ein Dozent zum selben Termin an zwei Orten sein kann.
Eine Tabelle MSysConf ist für die Nutzung von SQL-Datenbanken durch MS Access anzulegen z.B. für eigene Auswertungen durch MS Access. Siehe Microsofts Access Dokumentation.

Tabelle Dozent

Dozent/Lehrer/Ausbilder usw. welcher Unterrichtstunden geben kann.

Spaltenname Typ (Sybase) Index Fremdschlüssel Null erlaubt Bemerkung
DozentID VarChar(5) x - -(x) Namensabkürzung
Titel VarChar(20) - - x
Vorname VarChar(20) - - x
Name VarChar(20) - - -(x)
weiblich bit - - - als Herr/Frau angezeigt
FachbereichID Varchar(3) x Fachbereich x zum Filtern verwendet
Stundensatz money - - x für Vorbelegung beim erstellen neuer Unterrichtstunden. Die Währung wird nicht gespeichert und wird nur aus der Windows-Systemsteuerung übernommen.
Tabelle Dozent_anwesend

Die Tabelle repräsentiert die Anwesenheit eines Dozenten und somit das eine Unterrichtsstunde zugewiesen werden kann. Durch setzen von "autom. Anwesenheit" im Programm wird beim anlegen einer Unterrichtsstunde auch eine entsprechende Zeile hier eingetragen.

Spaltenname Typ (Sybase) Index Fremdschlüssel Null erlaubt Bemerkung
Tag DateTime - Dozent_Kalender x Datum
Stunde smallint - Dozent_Kalender x Stundennummer
DozentID VarChar(5) - Dozent_Kalender x Dozent/Lehrer
Tabelle Dozent_Kalender

Die Tabelle repräsentiert einen Termin (anwesend oder nicht anwesend) eines Dozenten und somit auch das eine Unterrichtsstunde zugewiesen werden kann. Durch setzen von "autom. Anwesenheit" im Programm wird beim anlegen einer Unterrichtsstunde auch eine entsprechende Zeile zuerst hier eingetragen.

Spaltenname Typ (Sybase) Index Fremdschlüssel Null erlaubt Bemerkung
Tag DateTime - Tag x Datum
Stunde Byte - Stunde x Stundennummer
DozentID VarChar(5) - Dozent x Dozent/Lehrer
Bemerkung VarChar(20) - - x Benennung des Termins
Tabelle Ort

Ort/Zimmer/Raum in dem die Unterrichtsstunden stattfinden können.

Spaltenname Typ (Sybase) Index Fremdschlüssel Null erlaubt Bemerkung
OrtsID VarChar(5) x - x Ortsabkürzung
Ortsbezeichnung VarChar(20) - - x
Plaetze Int - - x wird im Stundenplan nicht ausgewertet
FachbereichID Varchar(3) - Fachbereich x zum Filtern verwendet
Tabelle Nutzung

Wird im Stundenplan als Fach bezeichnet.

Spaltenname Typ (Sybase) Index Fremdschlüssel Null erlaubt Bemerkung
NutzungsID VarChar(7) x - -(x) Fachabkürzung
Nutzungsbezeichnung VarChar(55) - - x
FachbereichID Varchar(3) x(-) Fachbereich x zum Filtern verwendet
Soll Int - - x kann weggelassen werden! Für einfache Soll-Ist Vergleiche der Stundenzahlen in den Summen
TypID Varchar(3) - Typ x kann weggelassen werden! Für Vorgabe im Bearbeitungsdialog.
Tabelle SG

Seminargruppe/Klasse/Lehrgangsgruppe welche an Unterrichtstunden teilnehmen kann.

Spaltenname Typ (Sybase) Index Fremdschlüssel Null erlaubt Bemerkung
SGID VarChar(5) x - -(x) Seminargruppenabkürzung
SGBezeichnung VarChar(20) - - x
FachbereichID Varchar(3) - Fachbereich x zum Filtern verwendet
OrtsID VarChar(5) - Ort x Vorbelegung bei neuem Unterricht
Tabelle SG_anwesend

Tage an denen die Seminargruppe anwesend ist und somit Unterrichtsstunden geplant werden können. Die Nichtanwesenheit kann im Programm farbig hervorgehoben werden.

Spaltenname Typ (Sybase) Index Fremdschlüssel Null erlaubt Bemerkung
Tag DateTime -(x1)(x) Tag x Datum der Anwesenheit. Die SG muss anwesend sein, damit Unterricht verplant werden kann.
SGID VarChar(5) -(x1) SG -(x) Seminargruppenabkürzung
Semester smallint - - x Semesternummer, welche in der "Übersicht Anwesenheit" ausgegeben werden kann und die Färbung der Balkengrafik beeinflusst
Tabelle Fachbereich

Muss nicht als Fachbereich/Abteilung/Institut/Sektion aufgefasst werden sondern dient als Filter um nicht alle Werte in Listen anzuzeigen.

Spaltenname Typ (Sybase) Index Fremdschlüssel Null erlaubt Bemerkung
FachbereichID VarChar(3) x - -(x) Fachbereichsabkürzung
Fachbereichsbezeichnung VarChar(30) - - x
Tabelle Tag

Enthält den Betriebskalender. Sonntage werden ausgelassen.

Spaltenname Typ (Sybase) Index Fremdschlüssel Null erlaubt Bemerkung
Tag DateTime x - -(x) Namensabkürzung
Bemerkung VarChar(20) - - x sobald ein Wert vorhanden ist z.B. eine Feiertagsbezeichnung wird der gesamte Tag markiert
Tabelle Stunde

Enthält die möglichen Stunden pro Tag.

Spaltenname Typ (Sybase) Index Fremdschlüssel Null erlaubt Bemerkung
Stunde smallint x - -(x) Stundennummer die angezeigt werden soll. niedrigste Zahl (z.B. 0 oder 1) wird erste Stundennummer
Anfang DateTime - - x Anfangszeit der Stunde, wird nur angezeigt aber nicht auf Ungültigkeit geprüft
Ende DateTime - - x Endezeit der Stunde, wird nur angezeigt aber nicht auf Ungültigkeit geprüft
Tabelle Typ

Für zusätzliche Angaben wie Klausur, Prüfung, Labor usw., welche oben rechts in der Unterrichtsstunde angezeigt werden kann.

Spaltenname Typ (Sybase) Index Fremdschlüssel Null erlaubt Bemerkung
TypID VarChar(3) x - - Abkürzung für den Typ wie Kl, Prü oder Lab
TypBezeichnung VarChar(30)
(50 MSAccess)
- - x
Tabelle Unterricht

Die Unterrichtsstunde ohne die SG. Die SG werden über die Tabelle Zuhoerer verknüpft. Dadurch können mehrere SG an einer Unterrichtsstunde teilnehmen. Durch den Primärschüssel wird eine Unterrichtsstunde durch einen Tag, eine Stunde, an einem Ort definiert!

Spaltenname Typ (Sybase) Index Fremdschlüssel Null erlaubt Bemerkung
Tag DateTime -(x1) Tag, Dozent_anwesend -(x) Datum
Stunde smallint -(x1) Stunde, Dozent_anwesend -(x) Stundennummer
OrtsID VarChar(5) -(x1) Ort -(x) Ort bzw. Zimmer
DozentID VarChar(5) x(-) Dozent_anwesend x Dozent/Lehrer
NutzungsID VarChar(7) - Nutzung -(x) Fach
Bemerkung VarChar(20) - - x freie Bemerkung, die andersfarbig angezeigt werden kann
TypID varchar(3) - Typ x
Stundensatz money - - x
Tabelle Zuhoerer

Die zur Unterrichtsstunde gehörenden SG. Alle Felder werden zum Primärschlüssel!

Spaltenname Typ (Sybase) Index Fremdschlüssel Null erlaubt Bemerkung
Tag DateTime -(x1)(x2) Unterricht, SG_anwesend -(x) Datum
Stunde smallint -(x1)(x2) Unterricht -(x) Stundennummer
OrtsID VarChar(5) x(x1)(x2) Unterricht -(x) Ort bzw. Zimmer
SGID VarChar(5) x(x1) SG_anwesend -(x) Seminargruppe
Tabelle Logbuch

Die Tabelle zeichnet eine Historie mit allen Änderungsoperationen (INSERT, DELETE) der Unterrichtsstunden auf. Dies wird über Trigger realisiert. Daher geht dies in MS Access und mySQL 4.0 nicht.

Spaltenname Typ (Sybase) Index Fremdschlüssel Null erlaubt Bemerkung
Nutzer char(16) - - - Datenbankbenutzer
Typ char(1) - - - i für Insert, d für Delete
Tag DateTime - - x Datum der Unterrichtsstunde
Stunde Byte - - x Stundennummer
OrtsID VarChar(5) - - x Ort der Unterrichtsstunde
Wert VarChar(5) - - x Seminargruppe oder Dozent
Erstellt DateTime - - x Zeitpunkt der Logbucheintragung
Tabelle RechteOrt

Es wird anhand des angemeldeten Datenbankbenutzers geprüft, ob eine Unterrichtsstunde mit dem Ort angelegt werden darf. Ist kein Nutzer dem Ort zugeordnet, dürfen alle Datenbankbenutzer den Ort verplanen. Die Prüfung erfolgt über Trigger und ist daher nicht in MS Access und mySQL 4.0 möglich.

Spaltenname Typ (Sybase) Index Fremdschlüssel Null erlaubt Bemerkung
OrtsID VarChar(5) - kann zu Ort - Ort bzw. Zimmer
Nutzer VarChar(15) - kann zu DBMS spezifischer Tabelle - Datenbankbenutzer