PMG1719/DB Beleg/Richard

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>

=Eigene Datenbank=


==Thema==

Ich habe mich für das Thema Feuerwehr in meinem Datenbank Beleg entschieden, da ich in meiner Freizeit ehrenamtlich als Freiwilliger Feuerwehrmann tätig bin. Mit dem Datenbank Beleg verschaffe ich mir einen kleinen Einblick in den komplizierten Aufbau der Verwaltung einer Feuerwehr. Ebenso besteht die Möglichkeit, zur besseren Kontaktaufnahme mit anderen Feuerwehren, die Adressen sowie die Telefonnummern abzurufen.

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, Programmingwiki und 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===

<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 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');
INSERT INTO Lehrgang VALUES ('12342', 'Technische Hilfe - Basis', '14');
INSERT INTO Lehrgang VALUES ('12343', 'Sprechfunk', '26');
INSERT INTO Lehrgang VALUES ('12344', 'Gruppenführer', '14');
INSERT INTO Lehrgang VALUES ('12345', 'Zugführer', '10');
INSERT INTO Lehrgang VALUES ('12346', 'Grundlehrgang', '30');
INSERT INTO Lehrgang VALUES ('12347', 'Wehrleiter', '06');
INSERT INTO Lehrgang VALUES ('12348', 'Brandmeister', '24');
INSERT INTO Lehrgang VALUES ('12349', 'Atemschutz-Gerätewart', '28');
INSERT INTO Lehrgang VALUES ('12350', 'Maschinist', '12');
INSERT INTO Lehrgang VALUES ('12351', 'Maschinist Hubrettungsfahrzeuge', '08');
</code>
</popup>



===Abfragen===


<run id="5c4ac17941a71">
</run>

<popup name="Lösung">
<run id="5c52073f76f21">
</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>


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>



<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.