ER-Modell Klasse und Klassensprecher

aburx

Neuer Benutzer
Beiträge
1
Hallo,

habe folgende Frage zum ER-Modell. Ich möchte das Modell so erweitern, dass es zu jeder Klasse einen Klassensprecher geben kann. Und ein Klassensprecher ist auch Schüler der die Klasse besucht von der er Sprecher ist. Ich weiß leider jedoch nicht wie ich das angehen soll.

Meine Idee wäre es, eine weitere Entität "Klassensprecher" hinzuzufügen. Zwischen Klassensprecher und Klasse würde ich eine 1:1 Beziehung angeben und zwischen Schüler und Klassensprecher bin ich mir nicht sicher.

Wie würdet Ihr das Angehen bzw. realisieren?

P.S. bin Anfänger :/


1642941998471.png
 
Werbung:
Zwischen Klassensprecher und Schüler könnte man auch eine solche 1:1 Beziehung definieren. Klassensprecher enhält also einen Verweis auf (einen) Schüler.
Zumindest würde man damit definieren, welcher Schüler der Klassensprecher ist. Welcher Schüler welchen Klassensprecher hat, würde man aus Klasse:Klassensprecher ableiten können.
Letztlich kann man auch auf diese Zuordnung Klasse:Klassensprecher verzichten, weil sie ebenfalls aus Schüler:Klassensprecher ableitbar ist.

Alternativ könnte man ein Attribut Klassensprecher in Schüler setzen. Hier wird es allerdings schwieriger, dafür zu sorgen, dass es nur einer sein darf.

Weitere Dinge, die man im Hinterkopf haben kann, wären der Zeithorizont (war in dem Jahrgang Klassensprecher/ ist amtierender Klassensprecher) und andere Titel oder Rollen, die ein Schüler einnehmen kann.
- Klassenkasper
- Erste Hilfe
- Schülersprecher
- ..

Das macht es natürlich noch komplizierter, aber hilft vielleicht, ein adäquates oder sogar progressives Modell zu finden.
 
Werbung:
vielleicht so:

Code:
edb=# create table schueler(id int generated always as identity primary key, name text);
CREATE TABLE
edb=*# create table klasse(id int generated always as identity primary key, name text);
CREATE TABLE
edb=*# create table funktionen (id int generated always as identity primary key, name text);
CREATE TABLE
edb=*# create table vergebene_funktionen(id int generated always as identity, funktion int references funktionen, klasse int references klasse, schueler int references schueler, von_bis daterange, exclude using gist (funktion with =, klasse with =, von_bis with &&));
CREATE TABLE

In Tabelle funktionen kannst Du nun Klassensprecher oder Klassenpasper definieren und in vergebene_funktionen wer wann in welcher Klasse welche Funktion hatte.

Mhhh, sehe gerade, wenn wir eh eine Zuordnung Schüler -> Klasse haben, könnten wir in vergebene_funktionen darauf einen FK setzen und auf die Felder klasse und schueler verzichten. Wir hätten dann halt auch die Historie gespeichert und via dem exclusion constraint sichergestellt, daß zu jedem Zeitpunkt nur einer das Amt hat.

Mal so als Idee ...
 
Zurück
Oben