PMG/Kurs 11/D Beleg/Felix

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>
== Datenbank in der Feuerwehr ==

Ich habe mir vorgenommen, eine Datenbank zum Thema Feuerwehr zu erstellen, und zwar zu den Untersuchungen, ausgegebenen Sachen, Dienstgraden usw. In dieser Datenbank soll also nachvollziehbar sein, wer wann eine Untersuchung hat und was für eine, wer was und wieviel Sachen bekommen hat, wer zu welchem Dienstgrad befördert wurde usw. Ich habe dieses Thema gewählt, da ich mit diesem eng in Verbindung stehe und es eine Vielzahl von Daten zur Modellierung einer Datenbank bietet. 

===Modellierung in einem ERM:===

[[Bild:Felix112_DB_Beleg.jpeg]]

Zwischen Freiwillige Feuerwehr und Feuerwehrmann besteht die Kardinalität 1:n, weil jeder Person nur in einer Freiwilligen Feuerwehr gleichzeitig sein kann, aber eine Feuerwehr auch mehrere Angehörige haben kann. Zwischen Feuerwehrmann und Kleidung besteht die Kardinalität 1:n, weil jeder Feuerwehrmann mehrere Kleidungsstücke besitzt, aber nicht zwei Feuerwehrleute das selbe Kleidungsstück. Zwischen Feuerwehrmann und Untersuchung besteht die Kardinalität n:m, weil jeder Feuerwehrmann zu mehreren verschiedenen Untersuchungen muss, aber auch viele Feuerwehrleute zur Untersuchung gleicher Art.

===Transformation in das Relationenmodell:===

Feuerwehrmann (<u>FM_ID</u>, Name, Vorname, Straße, Ort, Dienstgrad, <span style="border-bottom:1px dashed#000000;">FW_ID</span>)<br>
Freiwillige Feuerwehr (FW) (FW_ID, Name, Straße, Ort)<br>
Kleidung (<u>K_ID</u>, Helmnr, Jackennr, Hosennr, Schuhnr, <span style="border-bottom:1px dashed#000000;">FM_ID</span>)<br>
Untersuchung (<u>U_ID</u>, Art, Einrichtung, Straße, Ort)<br>
FWUntersuchung (<u>FWU_ID</u>, Datum, <span style="border-bottom:1px dashed#000000;">FM_ID</span>, <span style="border-bottom:1px dashed#000000;">U_ID</span>)<br>

Es entsteht bei der Transformation in das Relationenmodell noch eine fünfte Tabelle namens FWUntersuchung, weil diese bedingt durch die Kardinalität n:m benötigt wird. In ihr wird also die Verknüpfung zwischen den Feuerwehrangehörigen und den Untersuchungen hergestellt.




Hilfe zum Erstellen von ERMs bietet Dia.
[Zur Downloadseite gehen!][http://dia-installer.de/index.html.de]
<popup label="Datenbank">
<code id="50ff92acd7e00">
Drop Table if exists Feuerwehr;
Create Table Feuerwehr (
FW_ID varchar (5),
Name varchar (30), 
Straße varchar (30),
Ort varchar (20),
PRIMARY KEY (FW_ID));

INSERT INTO Feuerwehr Values ('BZ', 'FW Bautzen-Mitte', 'Gesundbrunnenring 23', 'Bautzen');
INSERT INTO Feuerwehr Values ('NDK', 'FW Niederkaina', 'Niederkainaer Straße 68', 'Niederkaina');
INSERT INTO Feuerwehr Values ('STB', 'FW Stiebitz', 'Neukircheer Straße 8', 'Stiebitz');
INSERT INTO Feuerwehr Values ('KLW', 'FW Kleinwelka', 'Am Wasserturm 1', 'Kleinwelka');

Drop Table if exists Feuerwehrmann;
Create Table Feuerwehrmann (
FM_ID varchar (4),
Name varchar (20),
Vorname varchar (20),
Straße varchar(30),
Ort varchar (20),
Dienstgrad varchar (25),
FW_ID varchar (4),
PRIMARY KEY (FM_ID));

INSERT INTO Feuerwehrmann Values ('3652', 'Humbach', 'Erich', 'Neukircher Straße 36', 'Stiebitz', 'Hauptlöschmeister', 'STB');
INSERT INTO Feuerwehrmann Values ('3932', 'Müller', 'Leon', 'Gesundbrunnenring 12', 'Bautzen', 'Feuerwehrmannanwärter', 'BZ');
INSERT INTO Feuerwehrmann Values ('3242', 'Becker', 'Heinz', 'Am Schloß 5', 'Niederkaina', 'Hauptfeuerwehrmann', 'NDK');
INSERT INTO Feuerwehrmann Values ('3284', 'Schombach', 'Gerd', 'Jan Skala Straße 76', 'Bautzen', 'Löschmeister', 'BZ');
INSERT INTO Feuerwehrmann Values ('3152', 'Schlauch', 'Horst', 'Hoyerswerdaer Straße 54', 'Kleinwelka', 'Brandmeister', 'KLW');

Drop Table if exists Kleidung;
Create Table Kleidung (
K_ID varchar (4),
Helmnr varchar (4),
Jackennr varchar (4),
Hosennr varchar (4),
Schuhnr varchar (4),
FM_ID varchar (4),
PRIMARY KEY (K_ID));

INSERT INTO Kleidung Values ('1256', '6378', '5624', '7894', '2564', '3652');
INSERT INTO Kleidung Values ('1856', '6365', '5745', '7521', '2324', '3932');
INSERT INTO Kleidung Values ('1469', '6321', '5126', '7456', '2237', '3242');
INSERT INTO Kleidung Values ('1984', '6336', '5658', '7789', '2367', '3284');
INSERT INTO Kleidung Values ('1436', '6738', '5264', '7444', '2654', '3152');

Drop Table if exists Untersuchung;
Create Table Untersuchung (
U_ID varchar (6),
Art varchar (25),
Einrichtung varchar (30),
Straße varchar (20),
Ort varchar (20),
PRIMARY KEY (U_ID));

INSERT INTO Untersuchung Values ('G25', 'Allgemeine Tauglichkeit', 'Praxis Dr Müller', 'Lessingstraße 4', 'Bautzen');
INSERT INTO Untersuchung Values ('G263', 'Schwerer Atemschutz', 'Arbeitsmedizinischer Dienst', 'Bahnhofstraße 6', 'Bautzen');
INSERT INTO Untersuchung Values ('G26', 'Atemschutztauglichkeit', 'Arbeitsmedizinischer Dienst', 'Bahnhofstraße 6', 'Bautzen');
INSERT INTO Untersuchung Values ('G41', 'Höhentauglichkeit', 'Praxis Dr Hildebrandt', 'Mozartstraße 4', 'Bautzen');

Drop Table if exists FWUntersuchung;
Create Table FWUntersuchung (
FWU_ID varchar (4), 
Datum varchar (8),
FM_ID varchar (4),
U_ID varchar (6),
PRIMARY KEY (FWU_ID));

INSERT INTO FWUntersuchung Values ('9235', '12.03.13', '3652', 'G25');
INSERT INTO FWUntersuchung Values ('9356', '16.05.13', '3932', 'G263');
INSERT INTO FWUntersuchung Values ('9341', '25.04.13', '3242', 'G41');
INSERT INTO FWUntersuchung Values ('9486', '06.08.13', '3284', 'G26');
INSERT INTO FWUntersuchung Values ('9421', '05.06.13', '3152', 'G25');

</code>
</popup>

<run id="50ff929112b94">
Select FWU_ID, DATUM, U_ID, ART, Feuerwehrmann.Name, VORNAME, Feuerwehr.Name
From FWUntersuchung, Feuerwehrmann, Untersuchung, Feuerwehr
Where FWUNTERSUCHUNG.FM_ID = Feuerwehrmann.FM_ID and FWUntersuchung.U_ID = Untersuchung.U_ID and Feuerwehrmann.FW_ID = Feuerwehr.FW_ID
</run>