PMG1617/DB Beleg/Franziska
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>SQL</language>
Meine Datenbank ist eine Planung von den Teilnehmern in den verschiedenen Prüfungen auf einem Reitturnier. Dabei sind einige Informationen zu den teilnehmenden Reitern, den teilnehmenden Pferden und den jeweiligen Prüfungen.
== Ziel der Datenbank ==
Die Zielstellung einer solchen Datenbank ist es bei Nachfragen der Teilnehmer schnell auf Abruf die gewünschten Informationen zu geben. Wenn sich zum Beispiel ein Reiter unsicher ist, was für eine Art Prüfung er genannt hat, kann er in der Datenbank nachfragen oder wenn er die Starternummer vergessen hat, kann er ebenso nachfragen.
== ERM-Modell der Datenbank ==
[[Bild:Franziska_Diagramm_DB1.jpeg]]
=== Kardinalitäten ===
Wichtig bei den Starterpaaren ist, dass immer die Zusammensetzung von jeweils einem Pferd und Reiter pro Paar gilt, aber ein Reiter mit mehreren Pferden Paare bilden kann und ein Pferd auch mit mehreren Reitern Paare bilden kann. Daraus ergeben sich somit die "1 zu n"-Beziehungen.
Daher an einer Prüfung mehrere Paare starten und Die jeweiligen Paare an mehreren Prüfungen starten können ergibt sich die "n zu m"-Beziehung, wodurch eine weitere Tabelle enstehen muss.
== Die Transformation in das Relationenmodell ==
Für die Transformation werden normalerweise die drei Normalformen einzeln durchlaufen, ich werde alles nötige erklären, aber die 1. Normalform einigermaßen mit einem solchen Block an Datensätzen auch nur halbwegs darzustellen dürfte wirklich sehr schwierig, wenn nicht sogar unmöglich sein, also werde ich diese Form mir ersparen, denn sie beinhaltet nur das Erfassen der Daten in einer einzigen Tabelle.
Die 2. Normalform bewirkt, dass aus dieser einen unhandlichen Tabelle mehrere Tabellen werden. Ich erstelle die Tabellen:<br>
- Reiter (R_Name, R_Vorname, Geburtsdatum)<br>
- Pferd (Pf_Name, Geburtsjahr)<br>
- Prüfung (P_Art, Klasse, Platz_NR)<br>
- Starterpaare (Reiter, Pferd, Prüfung)<br>
Daher diese Form jedoch wieder zu große, sich doppelnde Datensätze beinhaltet, tritt die 3. Normalform in Kraft, in der jeweils Primärschlüssel in Kraft treten:<br>
- Reiter (-angegebene Datensätze-, R_NR -> Primärschlüssel)<br>
- Pferd (-angegebene Datensätze-, Pf_NR -> Primärschlüssel)<br>
- Prüfung (-angegebene Datensätze-, P_NR -> Primärschlüssel)<br>
- Starterpaare ( R_NR + Pf_NR -> Sekundärschlüssel, Start_NR -> Primärschlüssel)<br>
Um die Verbindung zwischen Prüfung und Starterpaaren herzustellen gibt es eine weitere Tabelle:<br>
- Starts (P_NR, Start_NR)<br>
Bei der Tabelle Starts gibt es dann einen gekoppelten Primärschlüssel aus P_NR und Start_NR.
=== Alle Tabellen ===
Hier sind nocheinmal alle Tabellen mit ihren Inhalten zusammengefasst:<br>
- Reiter (R_NR ,R_Name, R_Vorname, Geburtsdatum)<br>
- Pferd (Pf_NR, Pf_Name, Geburtsjahr)<br>
- Prüfung (P_NR ,P_Art, Klasse, Platz_NR)<br>
- Starterpaare (Start_NR, R_NR, Pf_NR)<br>
- Starts (Start_NR, P_NR)<br>
== Erstellen der Datenbank ==
<code id="5aa64e7acb2ba">
DROP TABLE IF EXISTS Reiter;
CREATE TABLE Reiter (
R_NR varchar(255),
R_Name varchar(255),
R_Vorname varchar(255),
Geburtsdatum varchar(10)
);
INSERT INTO Reiter VALUES ('001', 'Abel', 'Hannah', '27.03.1999');
INSERT INTO Reiter VALUES ('002', 'Dorfsleben', 'Lena', '08.01.2003');
INSERT INTO Reiter VALUES ('003', 'Friedrich', 'Susanne', '18.08.1987');
INSERT INTO Reiter VALUES ('004', 'Gutleben', 'Martin', '11.11.1983');
INSERT INTO Reiter VALUES ('005', 'Holzer', 'Justin', '08.07.1995');
INSERT INTO Reiter VALUES ('006', 'Keller', 'Emma', '01.05.1998');
INSERT INTO Reiter VALUES ('007', 'Müller', 'Marie', '16.09.2001');
INSERT INTO Reiter VALUES ('008', 'Opitz', 'Josie', '06.12.2000');
INSERT INTO Reiter VALUES ('009', 'Schmidt', 'Hans', '03.12.1999');
INSERT INTO Reiter VALUES ('010', 'Schmidt', 'Christin', '17.02.1999');
INSERT INTO Reiter VALUES ('011', 'Tischler', 'Isabell', '23.03.2001');
INSERT INTO Reiter VALUES ('012', 'Wolf', 'Lukas', '26.06.1996');
DROP TABLE IF EXISTS Pferd;
CREATE TABLE Pferd (
Pf_NR varchar(255),
Pf_Name varchar(255),
Geburtsjahr varchar(5)
);
INSERT INTO Pferd VALUES ('001', 'Quickstep', '2011');
INSERT INTO Pferd VALUES ('002', 'Lunika', '2010');
INSERT INTO Pferd VALUES ('003', 'Cristalla', '2012');
INSERT INTO Pferd VALUES ('004', 'Herodes', '2006');
INSERT INTO Pferd VALUES ('005', 'Rubinio', '2008');
INSERT INTO Pferd VALUES ('006', 'Dehlia', '2004');
INSERT INTO Pferd VALUES ('007', 'Charisma', '1999');
INSERT INTO Pferd VALUES ('008', 'Blizzard', '2009');
INSERT INTO Pferd VALUES ('009', 'Stormy', '2007');
INSERT INTO Pferd VALUES ('010', 'Cloudy Sky', '2012');
INSERT INTO Pferd VALUES ('011', 'Moment One', '2013');
INSERT INTO Pferd VALUES ('012', 'Kartesis', '2013');
INSERT INTO Pferd VALUES ('013', 'Aila', '2012');
INSERT INTO Pferd VALUES ('014', 'Lomitas', '2007');
DROP TABLE IF EXISTS Starterpaare;
CREATE TABLE Starterpaare (
Starter_NR varchar(255),
R_NR varchar(255),
Pf_NR varchar(255)
);
INSERT INTO Starterpaare VALUES ('001', '001', '005');
INSERT INTO Starterpaare VALUES ('002', '002', '006');
INSERT INTO Starterpaare VALUES ('003', '003', '001');
INSERT INTO Starterpaare VALUES ('004', '003', '002');
INSERT INTO Starterpaare VALUES ('005', '004', '003');
INSERT INTO Starterpaare VALUES ('006', '005', '012');
INSERT INTO Starterpaare VALUES ('007', '005', '013');
INSERT INTO Starterpaare VALUES ('008', '006', '007');
INSERT INTO Starterpaare VALUES ('009', '007', '008');
INSERT INTO Starterpaare VALUES ('010', '008', '006');
INSERT INTO Starterpaare VALUES ('011', '009', '009');
INSERT INTO Starterpaare VALUES ('012', '010', '009');
INSERT INTO Starterpaare VALUES ('013', '011', '010');
INSERT INTO Starterpaare VALUES ('014', '012', '011');
INSERT INTO Starterpaare VALUES ('015', '012', '014');
DROP TABLE IF EXISTS Prüfung;
CREATE TABLE Prüfung (
P_NR varchar(255),
P_Art varchar(255),
Klasse varchar(255),
Platz_NR varchar(255)
);
INSERT INTO Prüfung VALUES ('01', 'Dressurprüfung', 'E', '1');
INSERT INTO Prüfung VALUES ('02', 'Dressurprüfung', 'A', '1');
INSERT INTO Prüfung VALUES ('03', 'Zeitspringprüfung', 'E', '2');
INSERT INTO Prüfung VALUES ('04', 'Stilspringprüfung', 'E', '2');
DROP TABLE IF EXISTS Starts;
CREATE TABLE Starts (
Start_NR varchar(255),
P_NR varchar(255)
);
INSERT INTO Starts VALUES ('001', '01');
INSERT INTO Starts VALUES ('001', '02');
INSERT INTO Starts VALUES ('002', '02');
INSERT INTO Starts VALUES ('002', '01');
INSERT INTO Starts VALUES ('003', '01');
INSERT INTO Starts VALUES ('003', '03');
INSERT INTO Starts VALUES ('003', '04');
INSERT INTO Starts VALUES ('004', '03');
INSERT INTO Starts VALUES ('004', '04');
INSERT INTO Starts VALUES ('005', '01');
INSERT INTO Starts VALUES ('005', '04');
INSERT INTO Starts VALUES ('006', '02');
INSERT INTO Starts VALUES ('006', '03');
INSERT INTO Starts VALUES ('007', '01');
INSERT INTO Starts VALUES ('007', '02');
INSERT INTO Starts VALUES ('007', '04');
INSERT INTO Starts VALUES ('008', '02');
INSERT INTO Starts VALUES ('008', '03');
INSERT INTO Starts VALUES ('008', '04');
INSERT INTO Starts VALUES ('009', '01');
INSERT INTO Starts VALUES ('009', '02');
INSERT INTO Starts VALUES ('010', '03');
INSERT INTO Starts VALUES ('010', '04');
INSERT INTO Starts VALUES ('011', '03');
INSERT INTO Starts VALUES ('011', '04');
INSERT INTO Starts VALUES ('012', '01');
INSERT INTO Starts VALUES ('012', '02');
INSERT INTO Starts VALUES ('013', '01');
INSERT INTO Starts VALUES ('013', '02');
INSERT INTO Starts VALUES ('013', '03');
INSERT INTO Starts VALUES ('013', '04');
INSERT INTO Starts VALUES ('014', '01');
INSERT INTO Starts VALUES ('014', '03');
INSERT INTO Starts VALUES ('014', '04');
INSERT INTO Starts VALUES ('015', '01');
INSERT INTO Starts VALUES ('015', '02');
</code>
== Abfragen ==
<run id="5ab7a9e5ba343">
</run>