PMG2426 1/DB Beleg/Adrian

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>
<font size=24>'''Datenbankprojekt Musikschule'''</font>
<br><br>
==Themenwahl Begründung==

Das folgende Datenbanksystem wurde gewählt, da die Modellierung einer Musikschuldatenbank eine realitätsnahe Anwendung bietet, die auch auf den Schulkontext einfach bezogen werden kann.<br>
Die Datenbank bietet Abwechslung, mit verschiedenen kardinalitäts Beziehungen und bietet die Möglichkeit komplexerere Abfragen zu erstellen.<br>
Aufgebaut sind die Tabellen in groben Strukturen, wie man sie vielleicht auch in einer Musikschule finden könnte, mit der Option diese kommunal zu organisieren, z.B. für jeden Landkreis ein Datenbanksystem, mit allen Lehrkräften <br> 
Außerdem habe ich bei der Themenwahl, auf der Suche nach einem passendem Thema, aus dem Fenster die Musikschule gesehn und dachte: "Ja, das passt".

==ERM Musikschule==
[[Bild:PMGAJ_Erdplus.png|1000px]]

==RM Musikschule==
[[Bild:PMGAJ_Erdplus_RM.png| 1000px]]

<br><br>

==SQL Tabellen==

<br>

===Erstellung der Tabellen===
<code id="696767806ab23">drop table if exists Musikschule;
create table Musikschule(
    name varchar ,
    Registernummer varchar not null unique,
    PLZ varchar,
    Straße varchar,
    Straßennummer varchar,
    primary key (Registernummer)
);

drop table if exists LehrerInnen;
create table LehrerInnen(
    LehrerInnen_ID varchar not null unique,
    Name varchar,
    Vorname varchar,
    Registernummer varchar not null, 
    primary key (LehrerInnen_ID),
    foreign key (Registernummer) references Musikschule(Registernummer)
);

drop table if exists SchülerInnen;
create table SchülerInnen(
    SchülerInnen_ID varchar not null unique,
    Nachname varchar,
    Vorname varchar,
    PLZ varchar,
    Registernummer varchar not null,
    primary key (SchülerInnen_ID),
    foreign key (Registernummer) references Musikschule(Registernummer)
);

drop table if exists Instrument;
create table Instrument(
    Instrumenten_ID varchar not null unique,
    Name varchar,
    primary key (Instrumenten_ID)
);

drop table if exists Lehren;
create table Lehren(
    LehrerInnen_ID varchar not null,
    Instrumenten_ID varchar not null,
    Lehr_Nr varchar not null unique,
    primary key (Lehr_Nr),
    foreign key (LehrerInnen_ID) references Lehrer(LehrerInnen_ID),
    foreign key (Instrumenten_ID) references Instrument(Instrumenten_ID)
);

drop table if exists Lernen;
create table Lernen (
    Instrumenten_ID varchar not null,
    SchülerInnen_ID varchar not null,
    Leih_Nr varchar not null unique,
    primary key (Leih_Nr),
    foreign key (Instrumenten_ID) references Instrument(Instrumenten_ID),
    foreign key (SchülerInnen_ID) references Schüler(SchülerInnen_ID)
);

drop table if exists Unterricht;
create table Unterricht(
    SchülerInnen_ID varchar not null,
    LehrerInnen_ID varchar not null,
    Vertrags_Nr varchar not null unique,
    Instrumenten_ID VARCHAR NOT NULL,
    primary key (Vertrags_Nr),
    foreign key (SchülerInnen_ID) references Schüler(SchülerInnen_ID),
    foreign key (LehrerInnen_ID) references Lehrer(LehrerInnen_ID),
    foreign key (Instrumenten_ID) REFERENCES Instrument(Instrumenten_ID)
);</code>
<br><br>
===Einfügen von Werten in Tabellen===
<code id="6979c8729a7cd">insert into Musikschule values('Kreismusikschule Bautzen','01102602','02625','Schilleranlagen','3');
insert into Musikschule values('Kreismusikschule Löbau','01102707','02725','Bernstraße','13');

insert into LehrerInnen values('015637','Wodnik','Pierre','01102602');
insert into LehrerInnen values('015642','Mähr','Wolfgang','01102602');
insert into LehrerInnen values('015603','Luttner','Beate','01102602');

insert into SchülerInnen values('0256231','Mose','Friedrich','02625','01102602');
insert into SchülerInnen values('0256173','Wiedel','Alexa','02625','01102602');
insert into SchülerInnen values('0256187','Wiedel','Annette','02625','01102602');
insert into SchülerInnen values('0256188','Wiedel','Arthur','02625','01102602');

insert into Instrument values('025','Trompete');
insert into Instrument values('022','Flöte');
insert into Instrument values('016','Flügelhorn');
insert into Instrument values('031','Klavier');
insert into Instrument values('008','sopran Saxofon');

insert into Lehren values('015637','025','01');
insert into Lehren values('015637','031','02');
insert into Lehren values('015637','016','03');
insert into Lehren values('015642','031','04');
insert into Lehren values('015642','008','05');
insert into Lehren values('015603','022','06');

insert into Lernen values('025','0256231','001');
insert into Lernen values('016','0256231','002');
insert into Lernen values('031','0256173','003');
insert into Lernen values('025','0256187','004');
insert into Lernen values('031','0256187','005');
insert into Lernen values('022','0256188','006');
insert into Lernen values('008','0256188','007');

insert into Unterricht values('0256231','015637','00562715','025');
insert into Unterricht values('0256231','015637','00562716','016');
insert into Unterricht values('0256173','015642','00562717','031');
insert into Unterricht values('0256187','015637','00562718','025');
insert into Unterricht values('0256187','015642','00562719','031');
insert into Unterricht values('0256188','015603','00562720','022');
insert into Unterricht values('0256188','015642','00562721','008');</code>

<br><br>

===Ausgeben aller Inhalte===

<run id="696767806ab8b">select * from Musikschule;
select * from LehrerInnen;
select * from SchülerInnen;
select * from Instrument;
select * from Lehren;
select * from Lernen;
select * from Unterricht;</run>

<br><br>

===Abfragenerstellung===
===== Alle Schüler die Trompete spielen! =====
<run id="6979da9627ac7">SELECT distinct 
    s.Vorname,
    s.Nachname,
    s.SchülerInnen_ID
from SchülerInnen s
join Lernen l 
    ON s.SchülerInnen_ID = l.SchülerInnen_ID
join Instrument i 
    ON l.Instrumenten_ID = i.Instrumenten_ID
where i.Name = 'Trompete';</run>
<br>
===== Welche Lehrkraft unterrichtet wen, in welchem Instrument?=====
<run id="69836631011dd">select distinct 
   s.Vorname ||' '|| s.Nachname as SchülerIn,
   lk.Vorname ||' '|| lk.Name as Lehrkraft,
   i.Name as Instrument
from 
Unterricht u
join SchülerInnen s
   on u.SchülerInnen_ID = s.SchülerInnen_ID
join LehrerInnen lk
   on u.LehrerInnen_ID = lk.LehrerInnen_ID
join Instrument i
   on u.Instrumenten_ID = i.Instrumenten_ID;</run>
<br><br>

==Kritische Reflexion==