PMG2426 1/DB Beleg/Alexandra

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>
== Das ERM ==

[[Bild:A Sonnenblumenkern_Screenshot_20260306_173749_Samsung_Notes.jpg|800px|]]


== Kardinalitäten erläutern ==

'''Klasse – Unterrichtseinheit (1:n)'''

Eine Klasse kann viele Unterrichtseinheiten haben, da sie im Laufe einer Woche mehrere 

Unterrichtsstunden besitzt.

Eine Unterrichtseinheit gehört jedoch immer genau zu einer Klasse.

Beispiel:
Die Klasse 7a hat mehrere Unterrichtsstunden in verschiedenen Fächern.


'''Lehrer – Unterrichtseinheit (1:n)'''

Ein Lehrer kann viele Unterrichtseinheiten unterrichten.

Eine Unterrichtseinheit wird jedoch immer von genau einem Lehrer gehalten.

Beispiel:
Ein Lehrer kann mehrere Stunden Mathematik oder andere Fächer in 

verschiedenen Klassen unterrichten.


'''Fach – Unterrichtseinheit (1:n)'''

Ein Fach kann in vielen Unterrichtseinheiten vorkommen.

Eine Unterrichtseinheit behandelt jedoch immer genau ein Fach.

Beispiel:
Das Fach Mathematik kann mehrmals pro Woche im Stundenplan vorkommen.


'''Raum – Unterrichtseinheit (1:n)'''

Ein Raum kann für viele Unterrichtseinheiten genutzt werden.

Eine Unterrichtseinheit findet jedoch immer in genau einem Raum statt.

Beispiel:
Ein Computerraum kann für mehrere Informatikstunden verwendet werden.


<code id="6979d04b8419e">
DROP TABLE IF EXISTS Lehrer;
CREATE TABLE Lehrer(
 Lehrer_ID varchar(10),
 Vorname varchar(50),
 Nachname varchar(50),
 Kürzel varchar(10),
 PRIMARY KEY (Lehrer_ID)
);

DROP TABLE IF EXISTS Fach;
CREATE TABLE Fach(
 Fach_ID varchar(10),
 Fachname varchar(50),
 PRIMARY KEY (Fach_ID)
);

DROP TABLE IF EXISTS Raum;
CREATE TABLE Raum(
 Raum_ID varchar(10),
 RaumNR varchar(10),
 PRIMARY KEY (Raum_ID)
);

DROP TABLE IF EXISTS Klasse;
CREATE TABLE Klasse(
 Klassen_ID varchar(10),
 Bezeichnung varchar(10),
 PRIMARY KEY (Klassen_ID)
);

DROP TABLE IF EXISTS Unterrichtseinheiten;
CREATE TABLE Unterrichtseinheiten(
 UE_ID varchar(10),
 Wochentag varchar(15),
 Stunde varchar(10),
 Raum_ID varchar(10),
 Klassen_ID varchar(10),
 Fach_ID varchar(10),
 Lehrer_ID varchar(10),
 PRIMARY KEY (UE_ID),
 FOREIGN KEY (Raum_ID) REFERENCES Raum(Raum_ID),
 FOREIGN KEY (Klassen_ID) REFERENCES Klasse(Klassen_ID),
 FOREIGN KEY (Fach_ID) REFERENCES Fach(Fach_ID),
 FOREIGN KEY (Lehrer_ID) REFERENCES Lehrer(Lehrer_ID)
);

INSERT INTO Lehrer VALUES ('001','Laura','Müller','mul');
INSERT INTO Lehrer VALUES ('002','Thomas','Schneider','sch');
INSERT INTO Lehrer VALUES ('003','Lisa','Weber','wel');
INSERT INTO Lehrer VALUES ('004','Mark','Braun','brm');

INSERT INTO Fach VALUES ('001','Deutsch');
INSERT INTO Fach VALUES ('002','Mathematik');
INSERT INTO Fach VALUES ('003','Englisch');
INSERT INTO Fach VALUES ('004','Informatik');

INSERT INTO Raum VALUES ('001','M101');
INSERT INTO Raum VALUES ('002','M102');
INSERT INTO Raum VALUES ('003','S204');
INSERT INTO Raum VALUES ('004','S205');

INSERT INTO Klasse VALUES ('001','7a');
INSERT INTO Klasse VALUES ('002','7b');
INSERT INTO Klasse VALUES ('003','8a');
INSERT INTO Klasse VALUES ('004','8b');

INSERT INTO Unterrichtseinheiten VALUES ('001','Montag','1','001','001','002','002');
INSERT INTO Unterrichtseinheiten VALUES ('002','Montag','2','001','001','001','001');
INSERT INTO Unterrichtseinheiten VALUES ('003','Montag','3','002','002','003','003');
INSERT INTO Unterrichtseinheiten VALUES ('004','Dienstag','1','003','003','004','004');
INSERT INTO Unterrichtseinheiten VALUES ('005','Dienstag','2','001','004','002','002');
INSERT INTO Unterrichtseinheiten VALUES ('006','Mittwoch','1','002','001','003','003');
INSERT INTO Unterrichtseinheiten VALUES ('007','Mittwoch','2','004','002','001','001');
INSERT INTO Unterrichtseinheiten VALUES ('008','Donnerstag','3','003','003','002','002');
INSERT INTO Unterrichtseinheiten VALUES ('009','Freitag','1','002','004','003','003');
INSERT INTO Unterrichtseinheiten VALUES ('010','Freitag','2','001','001','004','004');
</code>

 Gib die Lehrertabelle aus

<run id="6979d4345f0b8">
</run>

 Welche Fächer werden unterrichtet?
<run id="69ab21b34cf2b">
</run>

 Wie viele Unterrichtseinheiten hat jeder Lehrer?
<run id="69ab21b34cf9d">
</run>

 Gib die Raumbelegung aus
<run id="69ab21b34d00d">
</run>

 Gib den Stundenplan der Klasse 7a aus

<run id="69aafc18d46a1">
</run>

 Gib den Stundenplan von Laura Müller aus

<run id="69aafdfe48c24">
</run>

 Gib den Stundenplan für Montag aus
<run id="69ab21b34d080">
</run>

== Ziel Der Datenbank & Begründung ==
Die Datenbank dient zur Verwaltung eines Stundenplans. Ziel ist es, Informationen über Klassen, Lehrer, Fächer, Räume 

und Unterrichtseinheiten strukturiert zu speichern und miteinander zu verknüpfen.


Durch die Datenbank soll es möglich sein, verschiedene Informationen über den Stundenplan einfach abzurufen. 

Zum Beispiel kann ermittelt werden, welcher Lehrer zu einer bestimmten Zeit unterrichtet, welcher Raum belegt ist oder

welchen Unterricht eine Klasse an einem bestimmten Tag hat.


Ich habe das Thema gewählt, da ein Stundenplan ein typisches Beispiel für ein System mit vielen miteinander verbundenen

Daten darstellt und ich fast täglich solch eine Datenbank abfrage.



== Relationenmodell ==
'''Lehrer'''

Lehrer(Lehrer_ID, Vorname, Nachname, Kürzel)

PK: Lehrer_ID


'''Fach'''

Fach(Fach_ID, Fachname)

PK: Fach_ID


'''Raum'''

Raum(Raum_ID, RaumNR)

PK: Raum_ID


'''Klasse'''

Klasse(Klassen_ID, Bezeichnung)

PK: Klassen_ID


'''Unterrichtseinheiten'''

Unterrichtseinheiten(UE_ID, Wochentag, Stunde, Raum_ID, Klassen_ID, Fach_ID, Lehrer_ID)

PK: UE_ID

FK: Raum_ID → Raum(Raum_ID)

FK: Klassen_ID → Klasse(Klassen_ID)

FK: Fach_ID → Fach(Fach_ID)

FK: Lehrer_ID → Lehrer(Lehrer_ID)