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.

'''Sehr interessant --> könnte sehr zeitintensiv werden. Gut die notwendigen Attribute überlegen, das RM ableiten und (nur) mit notwendigen Datensätzen füllen'''

=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),
              Straße varchar (255),
              PLZ varchar (7),
              Ort varchar (255),
              Telefon varchar (255),
              Geburtsdatum date,
              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),
               Straße varchar (255),
               PLZ varchar (7),
               Ort varchar (255),
               Telefon varchar (255),
               Geburtsdatum date,
               Sportart varchar (255),
               Name_Verein varchar (255),
);

DROP TABLE IF EXISTS Verein
CREATE TABLE Verein (
                Name_Verein varchar (255),
                Straße 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.83', '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 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='MSV Bautzen 04'
</run>

'''Übersicht aller Trainer eines Vereins'''

<run id="52ef6664740e5"></run>

'''Übersicht aller Sportler mir ihrem dazugehörigen Trainer'''

<run id="52ef666474181"></run>

'''Übersicht aller Vereine in einer Region'''

<run id="52ef666474214"></run>

'''Übersicht, welcher Verein welche Sportarten anbietet'''

<run id="52ef6664742a6"></run>