PMG/Kurs 1214/DB Beleg/Paul
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>SQL</language>
=Ziel der Datenbank=
Diese Datenbank dient dazu, online jederzeit einsehen und abrufen zu können, welche Sportler in den Sportvereinen der Region angemeldet sind, in welcher Sportart sie aktiv sind und von welchem Trainer sie trainiert werden.
=Erläuterung wichtiger Merkmale=
'''Allgemeine Begriffe:'''
''Datenbasis'': bezeichnet eine Menge an Daten, die in einen bestimmten Zusammenhang gesppeichert oder benötigt werden, strukturierte Daten
''Datenbankmanagementsystem'': wird für Sortierung und Verwaltung der Daten durch ein Programm genutzt
''Datenbank(system)'':System zur elektronischen Datenverwaltung; besteht aus Datenbasis und Datenbankmanagementsystem
'''Begriffe im ERM''':
''Entität (Entity)'': konkretes, eindeutig identifizierbares Datenobjekt
''Entitymenge (Entityklasse)'':Entitäten mit gleichen Eigenschaften werden zusammengefasst
''Attribute'': Eigenschaften einer Entitymenge
''Attributwert'': konkret zugeordneter Wert einer Entität zu einem Attribut
''(Primär-)Schlüssel'': setzt sich aus einer (minimalen) Menge von Attributen einer Entität zusammen und dient zu ihrer eindeutigen Identitfikation
'''Kardinalitäten:'''
''1:1-Beziehung'': Jeder Entität der Entitymenge A wird genau eine Entität der Entitymenge B zugeordnet und umgekehrt.
''1:n-Beziehung'': Jeder Entität der Entitymenge A können mehrere Entitäten der Entitymenge B zugeordnet werden, umgekehrt kann jedoch jeder Entität der Menge B nur genau eine Entität der Menge A zugeordnetb werden.
''m:n-Beziehung'': Jeder Entität der Entitymenge A können mehrere Entitäten der Entitymenge B zugeordnet werden und umgekehrt.
'''Normalformen:'''
''Erste Normalform (ENF)'': Jeder Spalte wird nur eine Information zugeordnet. Die Relation muss frei von wiederholungsgruppen sein.
''Zweite Normalform (ZNF)'': Im Gegensatz zur ENF ist kein Nichtsschlüsselattribut funktionalabhängig von einer echten Teilmenge eines Schlüsselkandidaten.
''Dritte Normalform (DNF)'': Im Gegensatz zur ZNF hängt kein Nichtschlüsselattribut von einem Schlüsselkandidaten transitiv ab.
=ERM-Modell=
[[Bild:Paul_Neues_ERM_Sportvereine(3).jpg|650 px]]
=Relationenmodell=
(Primärschlüssel: '''fett'''; Sekundärschlüssel: ''kursiv'')
Sportler ('''Mitgliedsnummer'''; Name; Vorname; Straße; PLZ; Ort; Telefonnummer; Geburtsdatum; Sportart; ''Trainernummer''; ''Name_Verein'')
Trainer ('''Trainernummer'''; Name; Vorname; Straße; PLZ; Ort; Telefonnummer; Geburtsdatum; Sportart; ''Name_Verein'')
Verein ('''Name_Verein'''; Straße; PLZ; Ort; Telefonnummer)
Sportart ('''Sport_ID'''; Name)
Verein_Sportart (''Name_Verein''; ''Sport_ID'')
=Anlegen der Tabellen=
<code id="52e62ad547778">
DROP TABLE IF EXISTS Sportler
CREATE TABLE Sportler (
Mitgliedsnummer varchar (10),
Name varchar (255),
Vorname varchar (255),
Strasse varchar (255),
PLZ varchar (7),
Ort varchar (255),
Telefon varchar (255),
Geburtsdatum varchar (12),
Sportart varchar (255),
Trainernummer varchar (255),
Name_Verein varchar (255),
);
DROP TABLE IF EXISTS Trainer
CREATE TABLE Trainer (
Trainernummer varchar (255),
Name varchar (255),
Vorname varchar (255),
Strasse varchar (255),
PLZ varchar (7),
Ort varchar (255),
Telefon varchar (255),
Geburtsdatum varchar (12),
Sportart varchar (255),
Name_Verein varchar (255),
);
DROP TABLE IF EXISTS Verein
CREATE TABLE Verein (
Name_Verein varchar (255),
Strasse varchar (255),
PLZ varchar (7),
Ort varchar (255),
Telefon varchar (255),
);
DROP TABLE IF EXISTS Sportart
CREATE TABLE Sportart (
Sport_ID varchar (255),
Name varchar (255),
);
DROP TABLE IF EXISTS Verein_Sportart
CREATE TABLE Verein_Sportart (
Name_Verein varchar (255),
Sport_ID varchar (255),
);
INSERT INTO Sportler VALUES ('001', 'Mueller', 'Hans', 'Rosenweg 14', '02625', 'Bautzen', '03591/80713', '25.06.1950', 'Handball', '0001', 'MSV Bautzen 04');
INSERT INTO Sportler VALUES ('002', 'Reif', 'Jochen', 'Goethestrasse 25', '02627', 'Radibor', '035935/77315', '19.03.1983', 'Speerwerfen', '0002', 'SpVgg Radibor');
INSERT INTO Sportler VALUES ('003', 'Schmidt', 'Richard', 'Schlossweg 8', '02625', 'Bautzen', '03591/24839', '01.10.1955', 'Turnen', '0003', 'MSV Bautzen 04');
INSERT INTO Sportler VALUES ('004', 'Meinert', 'Ronny', 'Hauptstrasse 5', '02699', 'Neschwitz', '035933/23164', '14.02.1965', 'Schwimmen', '0004', 'SV Neschwitz');
INSERT INTO Sportler VALUES ('005', 'Meinert', 'Felix', 'Hauptstrasse 5', '02699', 'Neschwitz', '035933/23164', '25.11.1995', 'Basketball', '0005', 'SV Neschwitz');
INSERT INTO Sportler VALUES ('006', 'Eisner', 'Wolfgang', 'Bautzener Strasse 45', '02694', 'Grossdubrau', '035934/36646', '23.09.1979', 'Volleyball', '0006', 'SC Grossdubrau');
INSERT INTO Sportler VALUES ('007', 'Berndt', 'Ruediger', 'Fliederweg 3', '02625', 'Bautzen', '03591/28154', '01.12.1951', 'Handball', '0001', 'MSV Bautzen 04');
INSERT INTO Sportler VALUES ('008', 'Meier', 'Katrin', 'Schlossstrasse 7', '02694', 'Malschwitz', '035932/39176', '27.10.1980', 'Tanzen', '0007', 'SC Malschwitz');
INSERT INTO Sportler VALUES ('009', 'Schneider', 'Mark', 'Museumsstrasse 15', '02699', 'Koenigswartha', '035931/21034', '05.01.1991', 'Fussball', '0008', 'FC Koenigswartha');
INSERT INTO Sportler VALUES ('010', 'Krause', 'Rolf', 'Wilthener Strasse 1', '02627', 'Hochkirch', '035939/10253', '02.02.1974', 'Hockey', '0009', 'VfL Hochkirch');
INSERT INTO Trainer VALUES ('0001', 'Schmidt', 'Werner', 'Teichallee 8', '02625', 'Bautzen', '03591/37281', '31.05.1961', 'Handball', 'MSV Bautzen 04');
INSERT INTO Trainer VALUES ('0002', 'Friedrich', 'Juergen', 'Parkweg 23', '02627', 'Radibor', '035935/28176', '24.03.1958', 'Speerwerfen', 'SpVgg Radibor')
INSERT INTO Trainer VALUES ('0003', 'Fischer', 'Friedrich', 'Hafenstrasse 3', '02625', 'Bautzen', '03591/12034', '20.01.1966', 'Turnen', 'MSV Bautzen 04');
INSERT INTO Trainer VALUES ('0004', 'Meier', 'Gerhard', 'Poststrasse 14', '02699', 'Neschwitz', '035933/52820', '20.06.1953', 'Schwimmen', 'SV Neschwitz');
INSERT INTO Trainer VALUES ('0005', 'Schulze', 'Wilhelm', 'Turmweg 4', '02699', 'Neschwitz', '035933/01237', '03.07.1943', 'Basketball', 'SV Neschwitz');
INSERT INTO Trainer VALUES ('0006', 'Bach', 'Günther', 'Bahnhofsstrasse 61', '02694', 'Grossdubrau', '035934/09175', '08.08.1962', 'Volleyball', 'SG Grossdubrau');
INSERT INTO Trainer VALUES ('0007', 'Becker', 'Volker', 'Dresdener Weg 3', '02694', 'Malschwitz', '035932/05721', '27.02.1960', 'Tanzen', 'SC Malschwitz');
INSERT INTO Trainer VALUES ('0008', 'Rau', 'Andreas', 'Wallstraße 18', '02699', 'Koenigswartha', '035931/25141', '04.04.1948', 'Fussball', 'FC Koenigswartha');
INSERT INTO Trainer VALUES ('0009', 'Hansen', 'Ernst', 'Tulpenring 21', '02627', 'Hochkirch', '035939/01315', '15.08.1959', 'Hockey', 'VfL Hochkirch');
INSERT INTO Verein VALUES ('MSV Bautzen 04', 'Industriestraße 5', '02625', 'Bautzen', '03591/05033');
INSERT INTO Verein VALUES ('SpVgg Radibor', 'Nagelstraße 41', '02627', 'Radibor', '035935/05827');
INSERT INTO Verein VALUES ('SV Neschwitz', 'Heringstraße 4', '02699', 'Neschwitz', '035933/10246');
INSERT INTO Verein VALUES ('SG Grossdubrau', 'Lessingweg 31', '02694', 'Grossdubrau', '035934/28154');
INSERT INTO Verein VALUES ('SC Malschwitz', 'Schulstraße 21', '02694', 'Malschwitz', '035932/10241');
INSERT INTO Verein VALUES ('FC Koenigswartha', 'Am alten Sportlerheim 1', '02699', 'Koenigswartha', '035931/44492');
INSERT INTO Verein VALUES ('VfL Hochkirch', 'Jägerring 17', '02627', 'Hochkirch', '035939/05456');
INSERT INTO Sportart VALUES ('12341', 'Handball');
INSERT INTO Sportart VALUES ('12342', 'Speerwerfen');
INSERT INTO Sportart VALUES ('12343', 'Turnen');
INSERT INTO Sportart VALUES ('12344', 'Schwimmen');
INSERT INTO Sportart VALUES ('12345', 'Basketball');
INSERT INTO Sportart VALUES ('12346', 'Volleyball');
INSERT INTO Sportart VALUES ('12347', 'Tanzen');
INSERT INTO Sportart VALUES ('12348', 'Fussball');
INSERT INTO Sportart VALUES ('12349', 'Hockey');
INSERT INTO Verein_Sportart VALUES ('MSV Bautzen 04', '12341');
INSERT INTO Verein_Sportart VALUES ('MSV Bautzen 04', '12343');
INSERT INTO Verein_Sportart VALUES ('SpVgg Radibor', '12342');
INSERT INTO Verein_Sportart VALUES ('SV Neschwitz', '12344');
INSERT INTO Verein_Sportart VALUES ('SV Neschwitz', '12345');
INSERT INTO Verein_Sportart VALUES ('SG Grossdubrau', '12346');
INSERT INTO Verein_Sportart VALUES ('SC Malschwitz', '12347');
INSERT INTO Verein_Sportart VALUES ('FC Koenigswartha', '12348');
INSERT INTO Verein_Sportart VALUES ('VfL Hochkirch', '12349');
</code>
=Abfragen in SQL=
'''Übersicht aller Sportler'''
<run id="52f89cf781869">
SELECT Mitgliedsnummer, Sportler.Name, Sportler.Vorname, Sportler.Strasse, Sportler.PLZ, Sportler.Ort, Sportler.Telefon, Sportler.Geburtsdatum, Sportler.Sportart, Sportler.Name_Verein
FROM Sportler
</run>
'''Übersicht aller Trainer'''
<run id="52f89cf781971">
SELECT Trainernummer, Trainer.Name, Trainer.Vorname, Trainer.Strasse, Trainer.PLZ, Trainer.Ort, Trainer.Telefon, Trainer.Geburtsdatum, Trainer.Sportart, Trainer.Name_Verein
FROM Trainer
</run>
'''Übersicht aller Vereine'''
<run id="52f89cf781a23">
SELECT Verein.Name_Verein, Verein.Strasse, Verein.PLZ, Verein.Ort, Verein.Telefon
FROM Verein
</run>
'''Übersicht der Sportler eines einzelnen Vereins (Bsp. MSV Bautzen 04)'''
<run id="52ef65690ddd8">
SELECT Mitgliedsnummer, Sportler.Name, Sportler.Vorname, Sportler.Strasse, Sportler.PLZ, Sportler.Ort, Sportler.Telefon, Sportler.Geburtsdatum, Sportler.Sportart
FROM Sportler
WHERE Sportler.Name_Verein LIKE 'MSV Bautzen 04'
</run>
'''Übersicht aller Trainer eines Vereins'''
<run id="52ef6664740e5">
SELECT Trainernummer, Trainer.Name, Trainer.Vorname, Trainer.Strasse, Trainer.PLZ, Trainer.Ort, Trainer.Telefon, Trainer.Geburtsdatum, Trainer.Sportart
FROM Trainer
WHERE Trainer.Name_Verein LIKE 'MSV Bautzen 04'
</run>
'''Übersicht aller Sportler mir ihrem dazugehörigen Trainer'''
<run id="52f89ac4b4650">
SELECT Sportler.Name, Sportler.Vorname, Sportler.Strasse, Sportler.PLZ, Sportler.Ort, Sportler.Telefon, Sportler.Geburtsdatum, Sportler.Sportart, Sportler.Name_Verein, Trainer.Name AS Trainername, Trainer.Vorname AS Trainervorname
FROM Sportler, Trainer
WHERE Sportler.Name_Verein=Trainer.Name_Verein AND Sportler.Sportart=Trainer.Sportart
</run>
'''Übersicht aller Vereine in einer Region (z.B. Gemeinde Radibor und Umgebung)'''
<run id="52ef666474214">
SELECT *
FROM Verein
WHERE Verein.PLZ='02627'
</run>
'''Übersicht, welcher Verein welche Sportarten anbietet'''
<run id="52f89fe44f229">
SELECT DISTINCT Verein.Name_Verein, Verein.Strasse, Verein.PLZ, Verein.Ort, Verein.Telefon, Sportart.Name AS Name_Sportart, Sportart.Sport_ID
FROM Verein, Sportart, Verein_Sportart
WHERE Verein_Sportart.Sport_ID=Sportart.Sport_ID AND Verein_Sportart.Name_Verein=Verein.Name_Verein
</run>