PMG1719/DB Beleg/Richard

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>

=Eigene Datenbank=


==Thema==

Ich habe mich in meinem Datenbankbeleg für das Thema Feuerwehr entschieden, da ich in meiner Freizeit ehrenamtlich als Freiwilliger Feuerwehrmann tätig bin. Mit dem Datenbankbeleg habe ich mir einen kleinen Einblick in den komplizierten Aufbau der Verwaltung einer Feuerwehr verschafft.

Mein Persönliches Ziel war es, die Komplexität von Datenbanken zu erkennen, den Aufbau und die Programmierung zu Verstehen und meine Fähigkeiten im Umgang mit SQL, dem Programmingwiki und den Datenbanken zu vertiefen.


==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===
====Tabellen====

<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),
              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)
);

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),
               Ausbildernummer varchar (255)
);
</code>
</popup>

====Datensätze====

<popup name="Datensätze">
<code id="5c5202d4078d9">
INSERT INTO Person VALUES ('001', 'Mueller', 'Hans', 'Rosenweg 14', '02625', 'Bautzen', '03591/80713', '25.06.1950', '00001');
INSERT INTO Person VALUES ('002', 'Reif', 'Jochen', 'Goethestrasse 25', '02627', 'Radibor', '035935/77315', '19.03.1983', '00002');
INSERT INTO Person VALUES ('003', 'Schmidt', 'Richard', 'Schlossweg 8', '02625', 'Neschwitz', '035933/24839', '01.10.1955', '00003');
INSERT INTO Person VALUES ('004', 'Meinert', 'Ronny', 'Hauptstrasse 5', '02699', 'Großdubrau', '035934/23164', '14.02.1965', '00004');
INSERT INTO Person VALUES ('005', 'Stein', 'Felix', 'Bauernweg 17', '02699', 'Malschwitz', '035932/23164', '25.11.1995', '00005');
INSERT INTO Person VALUES ('006', 'Eisner', 'Wolfgang', 'Bautzener Strasse 45', '02625', 'Stiebitz', '03591/36646', '23.09.1979', '00006');
INSERT INTO Person VALUES ('007', 'Berndt', 'Ruediger', 'Fliederweg 3', '02625', 'Bautzen', '03591/28154', '01.12.1951', '00001');
INSERT INTO Person VALUES ('008', 'Meier', 'Katrin', 'Schlossstrasse 7', '02625', 'Stiebitz', '03591/39176', '27.10.1980', '00006');
INSERT INTO Person VALUES ('009', 'Schneider', 'Mark', 'Museumsstrasse 15', '02625', 'Bautzen', '03591/21034', '05.01.1991', '00001');
INSERT INTO Person VALUES ('010', 'Krause', 'Rolf', 'Wilthener Strasse 1', '02627', 'Hochkirch', '035939/10253', '02.02.1974', '00007');


INSERT INTO Ausbilder VALUES ('0001', 'Schmidt', 'Werner', 'Teichallee 8', '02625', 'Bautzen', '03591/37281', '31.05.1961');
INSERT INTO Ausbilder VALUES ('0002', 'Friedrich', 'Juergen', 'Parkweg 23', '02627', 'Radibor', '035935/28176', '24.03.1958');
INSERT INTO Ausbilder VALUES ('0003', 'Fischer', 'Friedrich', 'Hafenstrasse 3', '02625', 'Bautzen', '03591/12034', '20.01.1966');
INSERT INTO Ausbilder VALUES ('0004', 'Meier', 'Gerhard', 'Poststrasse 14', '02699', 'Neschwitz', '035933/52820', '20.06.1953');


INSERT INTO Feuerwehr VALUES ('00001', 'FFW Bautzen-Mitte', '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', '03591/44492');
INSERT INTO Feuerwehr VALUES ('00007', 'FFW Hochkirch', 'Jägerring 17', '02627', 'Hochkirch', '035939/05456');
INSERT INTO Feuerwehr VALUES ('00008', 'FFW Salzenforst', 'Am Hang 25', '02623', 'Salzenforst', '03591/534518');
INSERT INTO Feuerwehr VALUES ('00009', 'BF Bautzen', 'Gesundbrunnenring 23', '02625', 'Bautzen', '03591/530722');
INSERT INTO Feuerwehr VALUES ('00010', 'BF Hoyerswerda', 'Bautzener Straße 46', '02643', 'Hoyerswerda', '03589/297614');
INSERT INTO Feuerwehr VALUES ('00011', 'FFW Niederkaina', 'Hauptstraße 75', '02625', 'Niederkaina', '03591/367241');
INSERT INTO Feuerwehr VALUES ('00012', 'FFW Kleinwelka', 'Am Wasserturm 1', '02625', 'Kleinwelka', '03591/546287');


INSERT INTO Lehrgang VALUES ('12341', 'Atemschutzgeräteträger', '20', '0002');
INSERT INTO Lehrgang VALUES ('12342', 'Technische Hilfe - Basis', '14', '0003');
INSERT INTO Lehrgang VALUES ('12343', 'Sprechfunk', '26', '0001');
INSERT INTO Lehrgang VALUES ('12344', 'Gruppenführer', '14', '0002');
INSERT INTO Lehrgang VALUES ('12345', 'Zugführer', '10', '0004');
INSERT INTO Lehrgang VALUES ('12346', 'Grundlehrgang', '30', '0003');
INSERT INTO Lehrgang VALUES ('12347', 'Wehrleiter', '06', '0001');
INSERT INTO Lehrgang VALUES ('12348', 'Brandmeister', '24', '0004');
INSERT INTO Lehrgang VALUES ('12349', 'Atemschutz-Gerätewart', '28', '0003');
INSERT INTO Lehrgang VALUES ('12350', 'Maschinist', '12', '0004');
INSERT INTO Lehrgang VALUES ('12351', 'Maschinist Hubrettungsfahrzeuge', '08', '0001');
</code>
</popup>



===Abfragen===

Zeige alle Mitglieder der Freiwilligen Feuerwehr Bautzen-Mitte.
<run id="5c4ac17941a71">
</run>

<popup name="Lösung">
<run id="5c52073f76f21">
SELECT * FROM Person WHERE Wehrnummer IS '00001'
</run>
</popup>





Rufe die Adresse (Straße, PLZ, Ort) der BF Hoyerswerda mit Hilfe der Wehrnummer auf.
<run id="5c4ac17941aff">
</run>

<popup name="Lösung">
<run id="5c52073f76fb9">
SELECT Straße, PLZ, Ort FROM Feuerwehr WHERE Wehrnummer IS '00010'
</run>
</popup>





Rufe alle Lehrgänge und aufsteigend die jeweils maxiamale Teilnehmerzahl auf.
<run id="5c4ac17941b75">
</run>

<popup name="Lösung">
<run id="5c52073f77036">
SELECT Name, max_Teilnehmer FROM Lehrgang ORDER BY max_Teilnehmer ASC
</run>
</popup>




Liste alle Lehrgänge welcher der Aubsilder 0004 betreut auf. Rufe ebenfalls den Namen des Ausbilders auf.
<run id="5c4ac17941be2">
</run>

<popup name="Lösung">
<run id="5c52073f770ad">
SELECT Lehrgang_ID, Name, max_Teilnehmer FROM Lehrgang WHERE Ausbildernummer IS '0004';
SELECT Name, Vorname FROM Ausbilder WHERE Ausbildernummer IS '0004'
</run>
</popup>



==Reflexion zu Modellierung und Umsetzung==

Das Erstellen des ERM und des RM ist mir leicht gefallen. Anfangs hatte ich Probleme mit dem Erstellen der Tabellen und Datensätze, welche sich jedoch dann verflüchtigt haben nachdem ich mir verschiedene Tabellen und Datensätze anderer Personen anschaute. Als die Probleme erkannt und behoben waren hat die Datenbank schließlich auch funktioniert. Ich denke an dieser Datenbank werde ich später nicht mehr weiter arbeiten, doch bin ich gerade dabei das Grundgerüst für eine neue Datenbank zu erstellen.


==Quellenangabe==

Zur Modellierung des Entity-Relationship-Modells sowie des Relationenmodell wurde das Tool "Dia" verwendet.
Sonst habe ich als Quelle die Wikiseiten anderer Benutzer verwendet.