PMG/Kurs 11/D Beleg/Karl
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>SQL</language>
== '''''<u>Aufgaben zum Relationenmodellen</u>''''' ==
1. a)
[[Bild:DeutscheEiche2011_ERM-Wertpapierhandel.jpg]]
b) Wetpapierbörse (<u>WPB_NR</u>;Name;Standort;handelabre Stückgröße;Standort)
Wertpapier (<u>WKN</u>;Name;Wert;Typ)
Handel (WPB_NR;WKN;Anzahl)
c)
2. a)
[[Bild:DeutscheEiche2011_ERM-Fakultät.jpg]]
b) Institut (<u>I_Nr</u>;Professor;Name)
Student (<u>ST_Nr</u>;Name;Vorname;Geburtsdatum;Straße;Postleitzahl;Ort;I_Nr)
c)
3. a)
[[Bild:DeutscheEiche2011_ERM-Unternehmen.jpg]]
b) Personal (<u>PNR</u>;Name;ANR)
Abteilung (<u>ANR</u>;BEZ)
Projekt (<u>PRNR</u>;Name;ANR)
== '''''<u>DB-Beleg: PSC Bautzen e.V.</u>''''' ==
Ich erstelle eine Datenbank über mein Judoverein PSC Bautzen mit einem Mitgliederverzeichnis und auf dieses bezogen die Wettkampferfolge, Lizenzen, Tätigkeiten usw. Sie soll ermöglichen genaue Statistiken über die Wettkampfleistungen und Erfolge zu erstellen und die Bereitschaft der Sportler für den Sport/Verein veranschaulichen, da manche Sportler zu meh/weniger Wettkämpfen fahren oder auch sich weitere Funktionen (Lizenzen) aneignen. Alle Daten beruhen zum größten teil auf der Realität und der bereits beendeten Meisterschaftssaison in diesem Jahr der Altersklasse U18/U21. Diese sind auf der Seite [http://www.psc-bautzen.de] nachzulesen.
[[Bild:DeutscheEiche2011_DB-Beleg.jpg]]
'''Transformation ins Relationenmodell:'''
Sportler (<u>Mitgliedsnummer</u>, Nachname, Vorname, Gürtelgrad, <span style="border-bottom:1px dashed#000000;">T_Lizenz_Nr</span>, <span style="border-bottom:1px dashed#000000;">K_Lizenz_Nr</span>) <br>
Wettkampf (<u>WK_Nr</u>, Wettkampfname, Ausrichter, Ort) >br>
hat_teilgenommen (<span style="border-bottom:1px dashed#000000;">Mitlgiedsnummer</span>, <span style="border-bottom:1px dashed#000000;">WK_Nr</span>, als, Platzierung)<br>
Trainerlizenz (<u>T_Lizenz_Nr</u>, Lizenzname_Trainer, Vergütung_pro_TE) <br>
Kampfrichterlizenz (<u>K_Lizenz_Nr</u>, Kampfrichterlizenz_Name, Vergütung_pro_WE) <br>
'''Abfragen:'''
1. Welche Kämpfer haben bei welchen Turnier(en) einen 3. Platz belegt? <br>
2. Finden sie alle Sportler die bei den Bezirksmeisterschaften im Einsatz waren! <br>
3. Finden sie alle Sportler die eine Kampfrichterlizenz besitzen heraus! <br>
4. Finden sie alle Sportler heraus die eine Lizenz, egal ob Trainer oder Kampfrichter, besitzen heraus! <br>
5. Listen sie alle Sportler heraus die dem Verein als Trainer zur Verfügung stehen! <br>
6. Zählen sie alle Platzierungen der jeweiligen Gürtelgrade bei allen Wettkämpfen, die den 3. Platz belegten! <br>
7. An wievielen Wettkämpfen hat Theresa Schneider teilgenommen? <br>
8.Zählen sie alle Platzierungen von Johann Richter die besser als Platz 5 waren! <br>
'''Datenbank + Abfragen:'''
<code id="50ff94c29c031">
DROP TABLE Sportler IF EXISTS;
CREATE TABLE Sportler (
Mitgliedsnummer varchar(3),
Nachname varchar(50),
Vorname varchar(50),
Guertelgrad varchar(6),
T_Lizenz_Nr varchar(3),
K_Lizenz_Nr varchar(3),
PRIMARY KEY (Mitgliedsnummer),
);
Insert Into Sportler Values ('001', 'Beyer', 'Inka', '1. Dan', '2', '3');
Insert Into Sportler Values ('002', 'Beier', 'Tom', '1. Kyu', '1', '');
Insert Into Sportler Values ('003', 'Schiller', 'Andreas', '4. Dan', '4', '3');
Insert Into Sportler Values ('004', 'Reiter', 'Paul', '1. Kyu', '1', '2');
Insert Into Sportler Values ('005', 'Schneider', 'Theresa', '2. Kyu', '', '');
Insert Into Sportler Values ('006', 'Kleine', 'Maxi', '3. Kyu', '', '');
Insert Into Sportler Values ('007', 'Weska', 'Tom', '2. Kyu', '', '');
Insert Into Sportler Values ('008', 'Schuepbach', 'Steffen', '3. Kyu', '', '');
Insert Into Sportler Values ('009', 'Richter', 'Frauke', '2. Kyu', '', '');
Insert Into Sportler Values ('010', 'Richter', 'Johann', '3. Kyu', '', '');
Insert Into Sportler Values ('011', 'Schmidt', 'Martin', '2. Dan', '3', '4');
Insert Into Sportler Values ('012', 'Reiter', 'Karl', '1. Kyu', '1', '2');
Drop Table Wettkampf If Exists;
Create Table Wettkampf (
WK_Nr varchar(3),
Wettkampfname varchar(300),
Ausrichter varchar(300),
Ort varchar(300),
PRIMARY KEY (WK_Nr),
);
Insert Into Wettkampf Values ('1', 'Bezirksmeisterschaft', 'PSC Bautzen', 'Bautzen');
Insert Into Wettkampf Values ('2', 'Landessmeisterschaft', 'JV Ippon Rodewisch', 'Rodewisch');
Insert Into Wettkampf Values ('3', 'Mitteldeutsche Meisterschaften', 'JSV Rammenau', 'Rammenau');
Insert Into Wettkampf Values ('4', 'Deutsche Meisterschaften', 'Kodokan Neuhof', 'Neuhof');
Insert Into Wettkampf Values ('5', '1. Kampftag Verbandsliga', 'ISG Hagenwerda', 'Ostritz');
Drop Table hat_teilgenommen if Exists;
Create Table hat_teilgenommen (
Mitgliedsnummer varchar(3),
WK_Nr varchar(3),
als varchar(300),
Platzierung varchar(2),
);
Insert Into hat_teilgenommen Values ('001','1','Listenfueher','');
Insert Into hat_teilgenommen Values ('001','2','Kampfrichter','');
Insert Into hat_teilgenommen Values ('001','3','Betreuer','');
Insert Into hat_teilgenommen Values ('001','5','Betreuer','');
Insert Into hat_teilgenommen Values ('002','1','Kaempfer','2');
Insert Into hat_teilgenommen Values ('002','4','Betreuer','');
Insert Into hat_teilgenommen Values ('002','5','Kaempfer','-');
Insert Into hat_teilgenommen Values ('003','1','Organisator','');
Insert Into hat_teilgenommen Values ('003','5','Kampfrichter','');
Insert Into hat_teilgenommen Values ('004','1','Kampfrichter','');
Insert Into hat_teilgenommen Values ('004','3','Betreuer','');
Insert Into hat_teilgenommen Values ('004','5','Kaempfer','+');
Insert Into hat_teilgenommen Values ('005','1','Kaempfer','1');
Insert Into hat_teilgenommen Values ('005','2','Kaempfer','5');
Insert Into hat_teilgenommen Values ('005','3','Zuschauer','');
Insert Into hat_teilgenommen Values ('006','1','Kaempfer','2');
Insert Into hat_teilgenommen Values ('006','2','Kaempfer','3');
Insert Into hat_teilgenommen Values ('006','3','Kaempfer','7');
Insert Into hat_teilgenommen Values ('007','1','Kaempfer','2');
Insert Into hat_teilgenommen Values ('007','2','Kaempfer','3');
Insert Into hat_teilgenommen Values ('007','3','Kaempfer','3');
Insert Into hat_teilgenommen Values ('007','4','Kaempfer','?');
Insert Into hat_teilgenommen Values ('008','1','Kaempfer','2');
Insert Into hat_teilgenommen Values ('008','2','Kaempfer','5');
Insert Into hat_teilgenommen Values ('008','3','Zuschauer','');
Insert Into hat_teilgenommen Values ('009','1','Kaempfer','2');
Insert Into hat_teilgenommen Values ('009','2','Kaempfer','3');
Insert Into hat_teilgenommen Values ('009','3','Kaempfer','3');
Insert Into hat_teilgenommen Values ('010','1','Kaempfer','5');
Insert Into hat_teilgenommen Values ('011','1','Betreuer','');
Insert Into hat_teilgenommen Values ('011','2','Betreuer','');
Insert Into hat_teilgenommen Values ('011','3','Kampfrichter','');
Insert Into hat_teilgenommen Values ('011','5','Kaempfer','+');
Insert Into hat_teilgenommen Values ('012','1','Kaempfer','1');
Insert Into hat_teilgenommen Values ('012','2','Kaempfer','5');
Insert Into hat_teilgenommen Values ('012','4','Betreuer','');
Insert Into hat_teilgenommen Values ('012','5','Kaempfer','+');
Drop Table Trainerlizenz if Exists;
Create Table Trainerlizenz (
T_Lizenz_Nr varchar(3),
Lizenzname_Trainer varchar(10),
Verguetung_pro_TE varchar(10),
PRIMARY KEY (T_Lizenz_Nr),
);
Insert Into Trainerlizenz Values ('1', 'Assistent', '3.00€');
Insert Into Trainerlizenz Values ('2', 'Trainer C', '5.00€');
Insert Into Trainerlizenz Values ('3', 'Trainer B', '6.00€');
Insert Into Trainerlizenz Values ('4', 'Trainer A', '7.00€');
Drop Table Kampfrichterlizenz if Exists;
Create Table Kampfrichterlizenz (
K_Lizenz_Nr varchar(3),
Lizenzname_Kari varchar(20),
Verguetung_pro_WE varchar(20),
);
Insert Into Kampfrichterlizenz Values ('1','Kreis','15.00€');
Insert Into Kampfrichterlizenz Values ('2','Bezirk','16.00€');
Insert Into Kampfrichterlizenz Values ('3','Land','17.00€');
Insert Into Kampfrichterlizenz Values ('4','Bundes_B','18.00€');
Insert Into Kampfrichterlizenz Values ('5','Bundes_A','19.00€');
Insert Into Kampfrichterlizenz Values ('6','IJF_B','20.00€');
Insert Into Kampfrichterlizenz Values ('7','IJF_A','21.00€');
</code>
<run id="50ff94c29c09c">
</run>
'''Erklärung:'''
Zwischen der Tabelle Sportler und Wettkampf herrscht eine m:n-Beziehung, da ein Sportler an mehreren Wettkämpfen teilnehmen kann und an einem Wettkampf meherere Sportler teilnehmen können. Zwischen den beiden Lizenztabellen zur Tabelle Sportler ist eine 1:n-Beziehung, da mehrere Sportler eine der Lizenzen besitzen können aber nur ein Sportler eine Lizenzstufe besitzen kann.
'''Problem beim erstellen der Abfragen:'''
In Abfrage 4 tritt als Problem auf, dass ich als Ergebnis der Abfrage für jeden Sportler meherere Ergebnisse bekomme einmal im Bezug auf die Trainerlizenz und einmal im Bezug auf die Kampfrichterlizenz. Es ist meines erachtens nicht möglich (besser: ich finde keinen Weg) eine Abfrage zu erstellen in der jeder Sportler nur einmal genannt wird und nur in der Spalte (Trainer oder Kampfrichter oder beides) etwas steht wo er auch nur diese eine Lizenz besitzt.