PMG1719/DB Beleg/Richard
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>SQL</language>
=Eigene Datenbank=
==Thema==
===Themenwahl===
Ich habe mich für dieses Thema des Datenbank Belegs entschieden, da ich in meiner Freizeit als Freiwilliger Feuerwehrmann tätig bin. Ich wollte mir einen Überblick verschaffen wie komplex und verstrickt eine Datenbank der Feuerwehr aufgebaut ist. Natürlich ist dies nur ein kleiner Ausschnitt der Realität.
===Ziel der Datenbank===
Mein Persönliches Ziel war es, die Komlexität des Erstellens von Datenbanken zu erkennen, die Arbeit mit Datenbanken zu vertiefen und mein Können zu verbesssern.
==Modelle==
===Merkmale der Modelle===
====Kardinalität====
'''1:1 Beziehung''': Jeder Datensatz ist in Tabelle A genau einem Datensatz in Tabelle B zugeordnet und umgekehrt
'''1:n Beziehung''': In einem Datensatz der Tabelle A können mehrere passende Datensätze in der Tabelle B zugeordnet sein, aber einem Datensatz in Tabelle B ist nie mehr als ein Datensatz in Tabelle A zugeordnet
'''m:n Beziehung''': Jedem Datensatz in Tabelle A können mehrere passende Datensätze in Tabelle B zugeordnet sein und umgekehrt
====Normalform====
1. Normalform (1. NF): Jede Information -> eine Spalte
2. Normalform (2. NF): Primärschlüssel-> für eindeutige Zuordnung
3. Normalform (3. NF):kein Nichtschlüsselmerkmal ist von irgendeinem Schlüssel transitiv abhängig
===Entity-Relationship-Modell===
[[Bild:Rhauschild_ERM_DB-Beleg_2.jpeg]]
===Relationenmodell===
====Tabellenform====
[[Bild:Rhauschild_Relationenmodell.jpeg]]
====Zeilenform====
Primärschlüssel: Fett
Person: '''Mitgliedsnummer''', Name, Vorname, Geburtsdatum, Straße, PLZ, Wohnort, Telefonnummer
Ausbilder: '''Ausbildernummer''', Name, Vorname, Geburtsdatum, Straße, PLZ, Wohnort, Telefonnummer
Feuerwehr: '''Wehrnummer''', Name, Straße, PLZ, Ort, Telefonnummer
Lehrgang: '''Lehrgang_ID''', Name, max. Teilnehmer
==Datenbank==
===Tabellen und Datensätze===
<popup name="Tabellenstruktur">
<code id="18">
DROP TABLE IF EXISTS Person;
CREATE TABLE Person(
Mitgliedsnummer varchar (10),
Name varchar (255),
Vorname varchar (255),
Straße varchar (255),
PLZ varchar (7),
Wohnort varchar (255),
Telefonnummer varchar (255),
Geburtsdatum varchar (12),
Ausbildernummer varchar (255),
Wehrnummer varchar (255)
);
DROP TABLE IF EXISTS Ausbilder;
CREATE TABLE Ausbilder(
Ausbildernummer varchar (255),
Name varchar (255),
Vorname varchar (255),
Straße varchar (255),
PLZ varchar (7),
Wohnort varchar (255),
Telefonnummer varchar (255),
Geburtsdatum varchar (12),
Lehrgang_ID varchar (255)
);
DROP TABLE IF EXISTS Feuerwehr;
CREATE TABLE Feuerwehr(
Wehrnummer varchar (255),
Name varchar (255),
Straße varchar (255),
PLZ varchar (7),
Ort varchar (255),
Telefonnummer varchar (255)
);
DROP TABLE IF EXISTS Lehrgang;
CREATE TABLE Lehrgang(
Lehrgang_ID varchar (255),
Name varchar (255),
max_Teilnehmer varchar (255)
);
</code>
</popup>
<popup name="Tabellenstruktur">
<code id="5c5202d4078d9">
INSERT INTO Person VALUES ('001', 'Mueller', 'Hans', 'Rosenweg 14', '02625', 'Bautzen', '03591/80713', '25.06.1950', '0001', '00001');
INSERT INTO Person VALUES ('002', 'Reif', 'Jochen', 'Goethestrasse 25', '02627', 'Radibor', '035935/77315', '19.03.1983', '0002', '00002');
INSERT INTO Person VALUES ('003', 'Schmidt', 'Richard', 'Schlossweg 8', '02625', 'Bautzen', '03591/24839', '01.10.1955', '0003', '00003');
INSERT INTO Person VALUES ('004', 'Meinert', 'Ronny', 'Hauptstrasse 5', '02699', 'Neschwitz', '035933/23164', '14.02.1965', '0002', '00004');
INSERT INTO Person VALUES ('005', 'Meinert', 'Felix', 'Hauptstrasse 5', '02699', 'Neschwitz', '035933/23164', '25.11.1995', '0001', '00005');
INSERT INTO Person VALUES ('006', 'Eisner', 'Wolfgang', 'Bautzener Strasse 45', '02694', 'Grossdubrau', '035934/36646', '23.09.1979', '0003', '00006');
INSERT INTO Person VALUES ('007', 'Berndt', 'Ruediger', 'Fliederweg 3', '02625', 'Bautzen', '03591/28154', '01.12.1951', '0004', '00001');
INSERT INTO Person VALUES ('008', 'Meier', 'Katrin', 'Schlossstrasse 7', '02694', 'Malschwitz', '035932/39176', '27.10.1980', '0004', '00006');
INSERT INTO Person VALUES ('009', 'Schneider', 'Mark', 'Museumsstrasse 15', '02699', 'Koenigswartha', '035931/21034', '05.01.1991', '0002', '00005');
INSERT INTO Person VALUES ('010', 'Krause', 'Rolf', 'Wilthener Strasse 1', '02627', 'Hochkirch', '035939/10253', '02.02.1974', '0004', '00007');
INSERT INTO Ausbilder VALUES ('0001', 'Schmidt', 'Werner', 'Teichallee 8', '02625', 'Bautzen', '03591/37281', '31.05.1961', '12341');
INSERT INTO Ausbilder VALUES ('0002', 'Friedrich', 'Juergen', 'Parkweg 23', '02627', 'Radibor', '035935/28176', '24.03.1958', '12342');
INSERT INTO Ausbilder VALUES ('0003', 'Fischer', 'Friedrich', 'Hafenstrasse 3', '02625', 'Bautzen', '03591/12034', '20.01.1966', '12343');
INSERT INTO Ausbilder VALUES ('0004', 'Meier', 'Gerhard', 'Poststrasse 14', '02699', 'Neschwitz', '035933/52820', '20.06.1953', '12344');
INSERT INTO Feuerwehr VALUES ('00001', 'FFW Bautzen', 'Gesunbrunnenring 23', '02625', 'Bautzen', '03591/05033');
INSERT INTO Feuerwehr VALUES ('00002', 'FFW Radibor', 'Nagelstraße 41', '02627', 'Radibor', '035935/05827');
INSERT INTO Feuerwehr VALUES ('00003', 'FFW Neschwitz', 'Heringstraße 4', '02699', 'Neschwitz', '035933/10246');
INSERT INTO Feuerwehr VALUES ('00004', 'FFW Großdubrau', 'Lessingweg 31', '02694', 'Großdubrau', '035934/28154');
INSERT INTO Feuerwehr VALUES ('00005', 'FFW Malschwitz', 'Schulstraße 21', '02694', 'Malschwitz', '035932/10241');
INSERT INTO Feuerwehr VALUES ('00006', 'FFW Stiebitz', 'Am alten Sportlerheim 1', '02699', 'Stiebitz', '035931/44492');
INSERT INTO Feuerwehr VALUES ('00007', 'FFW Hochkirch', 'Jägerring 17', '02627', 'Hochkirch', '035939/05456');
INSERT INTO Lehrgang VALUES ('12341', 'Pressluft', '20');
INSERT INTO Lehrgang VALUES ('12342', 'Technische Hilfe', '14');
INSERT INTO Lehrgang VALUES ('12343', 'Sprechfunk', '26');
INSERT INTO Lehrgang VALUES ('12344', 'Gruppenführer', '14');
</code>
</popup>
===Abfragen===
Rufe alle Lehrgänge und aufsteigend die jeweils maxiamale Teilnehmerzahl auf.
<run id="5c4ac17941a71">
</run>
<popup name="Lösung">
<run id="5c52073f76f21">
SELECT Name, max_Teilnehmer FROM Lehrgang ORDER BY max_Teilnehmer ASC
</run>
</popup>
Rufe die Adresse (Straße, PLZ, Ort) der FFW Neschwitz auf
<run id="5c4ac17941aff">
</run>
<popup name="Lösung">
<run id="5c52073f76fb9">
SELECT Straße, PLZ, Ort FROM Feuerwehr WHERE Name IS 'FFW Neschwitz'
</run>
</popup>
<run id="5c4ac17941b75">
</run>
<popup name="Lösung">
<run id="5c52073f77036">
</run>
</popup>
<run id="5c4ac17941be2">
</run>
<popup name="Lösung">
<run id="5c52073f770ad">
</run>
</popup>
==Reflexion zu Modellierung und Umsetzung==
Ich denke mein Datenbank-Beleg ist ein gelungenes Beispiel für eine praxisnahe Anwendung von Datenbanken. Eine Datenbank dieser Art kann bei noch größeren Datenmengen sehr hilfreich für Feuerwehrangehörige sein um schnell eine Übersicht über verschiedene Informationen zu erhalten. Aufgrund der Zeitvorgabe ist dies allerdings nur ein kleiner Ausschnitt mit wenig Tabellen und einer geringen Anzahl an Datensätzen.
==Quellenangabe==
Zur Modellierung des Entity-Relationship-Modells sowie des Relationenmodell wurde das Tool Dia verwendet.