PMG2426 4/DB Beleg/Fiona
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>SQL</language>
= Auswertung von Notfall-Einsätzen =
== Ziel der Datenbank ==
Die Datenbank dient der strukturierten Erfassung und Auswertung von Notfall-Einsätzen im Rettungsdienst. Sie soll helfen, Einsätze effizient zu dokumentieren, Ressourcen zu planen und die Qualität der Versorgung zu verbessern. ich habe das Thema gewählt, da es direkt mit meinem Berufswunsch als Notfallsanitäterin verknüpft ist und praxisnahe Relevanz besitzt.
== Darstellung im ERM-Modell ==
[[Bild:FiLan_Screenshot_2026-01-30_at_18-25-57_ERDPlus.png]]
Das Entity-Relationship-Modell (ERM) bildet die logische Struktur der Datenbank ab und zeigt, welche Entitäten relevant sind und wie sie miteinander in Beziehung stehen. In diesem Projekt wurden fünf zentrale Entitäten identifiziert: Einsatz, Patient, Maßnahme, Fahrzeug und Rettungsteam. Jede Entität besitzt spezifische Attribute, die ihre Eigenschaften beschreiben, z. B. Einsatzdatum und Einsatzart bei Einsatz, oder Qualifikation bei Rettungsteam.
Die Beziehungen zwischen den Entitäten spiegeln reale Abläufe im Rettungsdienst wider:
Ein Einsatz kann mehrere Patienten betreffen (n:m)
Ein Patient kann mehrere Maßnahmen erhalten (n:m)
Ein Einsatz wird von einem Rettungsteam durchgeführt (1:n)
Ein Fahrzeug kann in mehreren Einsätzen verwendet werden (1:n)
Diese Beziehungen wurden im ERM visuell dargestellt und durch Primär- und Fremdschlüssel logisch verknüpft. Die n:m-Beziehungen wurden durch Zwischentabellen wie Einsatz_Patient und Patient_Maßnahme modelliert, um die Mehrfachzuordnungen korrekt abzubilden.
== Umwandlung ins Relationenmodell ==
[[Bild:FiLan_Screenshot_2026-01-30_at_20-14-33_ERDPlus.png]]
Aus dem ERM wurde ein Relationenmodell abgeleitet, das die Entitäten als Tabellen mit klar definierten Primärschlüsseln (PK) und Fremdschlüsseln (FK) umsetzt. Jede Tabelle enthält die relevanten Attribute mit passenden Datentypen wie INT, VARCHAR, DATE oder TIME.
Die n:m-Beziehungen wurden durch eigene Beziehungstabellen umgesetzt:
Einsatz_Patient verbindet Einsätze und Patienten über EinsatzID und PatientID
Patient_Maßnahme verknüpft Patienten mit Maßnahmen über PatientID und MaßnahmeID
Diese Tabellen besitzen zusammengesetzte Primärschlüssel und stellen sicher, dass jede Kombination eindeutig ist. Die Fremdschlüssel sorgen für saubere Verknüpfungen zwischen Tabellen und verhindern widersprüchliche Daten.
Das relationale Modell bildet somit die Grundlage für die spätere Datenbankstruktur und ermöglicht gezielte Abfragen zur Auswertung von Einsätzen, Patientenverläufen und Maßnahmenqualität.
== Datenbank (Struktur/notwendige Datensätze) ==
=== Einsatz ===
<code id="696df21faed1b">
DROP TABLE IF EXISTS Einsatz;
CREATE TABLE Einsatz (
EinsatzID varchar(10),
Datum varchar(20),
Uhrzeit varchar(20),
Einsatzort varchar(255),
Einsatzart varchar(255),
TeamID varchar(10),
FahrzeugID varchar(10)
);
INSERT INTO Einsatz VALUES ('E001', '12.01.2026', '14:32', 'Dresden Altstadt', 'Trauma', 'T01', 'F01');
INSERT INTO Einsatz VALUES ('E002', '13.01.2026', '09:15', 'Bautzen Zentrum', 'Atemnot', 'T02', 'F02');
INSERT INTO Einsatz VALUES ('E003', '13.01.2026', '22:50', 'Görlitz Bahnhof', 'Bewusstlosigkeit', 'T01', 'F03');
INSERT INTO Einsatz VALUES ('E004', '14.01.2026', '17:05', 'Dresden Neustadt', 'Krampfanfall', 'T03', 'F01');
INSERT INTO Einsatz VALUES ('E005', '15.01.2026', '03:40', 'Bautzen Vorstadt', 'Brustschmerzen', 'T02', 'F02');
</code>
<run id="692418daa086f">
</run>
=== Patient ===
<code id="696df8e61c5bb">
DROP TABLE IF EXISTS Patient;
CREATE TABLE Patient (
PatientID varchar(10),
Name varchar(20),
Lebensjahr varchar(255),
Zustand varchar(255),
Transportziel varchar(10)
);
INSERT INTO Patient VALUES ('P01', 'Müller', '45', 'kritisch', 'Uniklinik Dresden');
INSERT INTO Patient VALUES ('P02', 'Schmidt', '72', 'stabil', 'Klinikum Bautzen');
INSERT INTO Patient VALUES ('P03', 'Kowalski', '33', 'kritisch', 'Klinikum Görlitz');
INSERT INTO Patient VALUES ('P04', 'Lehmann', '19', 'stabil', 'Uniklinik Dresden');
INSERT INTO Patient VALUES ('P05', 'Richter', '58', 'kritisch', 'Klinikum Bautzen')
</code>
<run id="696df8e61c621">
</run>
=== Rettungsteam ===
<code id="696dff1991fe3">
DROP TABLE IF EXISTS Rettungsteam;
CREATE TABLE Rettungsteam (
TeamID varchar (10),
Name varchar (20),
Qualifikation varchar (255)
);
INSERT INTO Rettungsteam VALUES ('T01', 'Team Dresden 1', 'NotSan + RA');
INSERT INTO Rettungsteam VALUES ('T02', 'Team Bautzen 2', 'NotSan + RS');
INSERT INTO Rettungsteam VALUES ('T03', 'Team Görlitz 3', 'RA + RS');
</code>
<run id="696dff199205f">
</run>
=== Fahrzeug ===
<code id="6977292ba9309">
DROP TABLE IF EXISTS Fahrzeug;
CREATE TABLE Fahrzeug (
FahrzeugID varchar (10),
Typ varchar (50),
Kennzeichen varchar (20)
);
INSERT INTO Fahrzeug VALUES ('F01','RTW','DD-RK 112');
INSERT INTO Fahrzeug VALUES ('F02','RTW','BZ-RD 201');
INSERT INTO Fahrzeug VALUES ('F03','NEF','GR-NEF 7');
</code>
<run id="6977292ba94ad">
</run>
=== Maßnahme ===
<code id="6977292ba9410">
DROP TABLE IF EXISTS Masnahme;
CREATE TABLE Massnahme (
MassnahmeID varchar (10),
Beschreibung varchar (255),
Dauer int,
Erfolg varchar (50)
);
INSERT INTO Massnahme VALUES ('M01','Reanimation','12','teilweise');
INSERT INTO Massnahme VALUES ('M02','Sauerstoffgabe','5','gut');
INSERT INTO Massnahme VALUES ('M03','Wundversorgung','8','gut');
INSERT INTO Massnahme VALUES ('M04','Krampflösung','6','gut');
INSERT INTO Massnahme VALUES ('M05','EKG-Überwachung','10','neutral');
</code>
<run id="6977292ba9516">
</run>
=== Einsatz - Patient ===
Beziehung: 1 Einsatz kann n Patienten haben
<code id="69773382ef513">
DROP TABLE IF EXISTS Einsatz_Patient;
CREATE TABLE Einsatz_Patient (
EinsatzID varchar (10),
PatientID varchar (10)
);
INSERT INTO Einsatz_Patient VALUES ('E001','P01');
INSERT INTO Einsatz_Patient VALUES ('E002','P02');
INSERT INTO Einsatz_Patient VALUES ('E003';'P03');
INSERT INTO Einsatz_Patient VALUES ('E004','P04');
INSERT INTO Einsatz_Patient VALUES ('E005','P05');
</code>
<run id="69773382ef637">
</run>
=== Patient - Maßnahme ===
Beziehung: an 1 Patient können n Maßnahmen ausgeführt werden
<code id="69773382ef59e">
DROP TABLE IF EXISTS Patient_Massnahme;
CREATE TABLE Patient_Massnahme (
PatientID varchar(10),
MassnahmeID varchar(10)
);
INSERT INTO Patient_Massnahme VALUES ('P01','M01');
INSERT INTO Patient_Massnahme VALUES ('P01','M05');
INSERT INTO Patient_Massnahme VALUES ('P02','M02');
INSERT INTO Patient_Massnahme VALUES ('P03','M01');
INSERT INTO Patient_Massnahme VALUES ('P04','M04');
INSERT INTO Patient_Massnahme VALUES ('P05','M02');
INSERT INTO Patient_Massnahme VALUES ('P05','M05');
</code>
<run id="69773382ef6a9">
</run>
== Kritische Reflexion zur Modellierung und Umsetzung ==
Die Modellierung der Datenbank hat gezeigt, wie wichtig es ist, reale Abläufe im Rettungsdienst klar zu strukturieren und in ein logisches Datenmodell zu übertragen. Besonders herausfordernd war die Entscheidung, welche Beziehungen als 1:n und welche als n:m umgesetzt werden müssen. Erst durch die genaue Analyse der Abläufe wurde deutlich, dass sowohl zwischen Einsatz und Patient als auch zwischen Patient und Maßnahme echte n:m‑Beziehungen bestehen. Diese mussten anschließend durch Zwischentabellen korrekt abgebildet werden.
Ein weiterer Punkt war die Frage, wo Fremdschlüssel sinnvoll platziert werden. Während ERDplus im ER‑Modus automatisch Fremdschlüssel in die Entitäten einfügt, erfordert das relationale Modell eine bewusstere Strukturierung. Dadurch wurde klar, wie wichtig es ist, zwischen logischer Modellierung (ERM) und physischer Umsetzung (Relationenmodell) zu unterscheiden.
Auch die Datentypen mussten sorgfältig gewählt werden, um spätere Abfragen zu erleichtern und Fehler zu vermeiden. Insgesamt hat die Umsetzung gezeigt, dass Datenbankmodellierung nicht nur technisches Wissen, sondern auch ein gutes Verständnis der realen Prozesse verlangt. Rückblickend würde ich bei einem nächsten Projekt früher zwischen ER‑Modell und relationalem Modell unterscheiden, um doppelte Fremdschlüssel oder unnötige Attribute zu vermeiden.
== Verwendete Quellen, Tools und Hilfsmittel ==
Für die Erstellung der Datenbank wurden verschiedene Werkzeuge und Informationsquellen genutzt:
ERDplus zur Modellierung des Entity‑Relationship‑Modells und zur Visualisierung der Tabellenstrukturen
SQL‑Datenbankumgebung (z. B. die Schul‑Datenbankwebsite) zur Umsetzung des relationalen Modells, zum Anlegen der Tabellen und zum Testen der Abfragen
Unterrichtsmaterialien aus dem Informatikunterricht (Theorie zu ER‑Modellen, Relationenmodellen, Normalformen, SQL‑Grundlagen)
Eigene Recherche zu typischen Abläufen im Rettungsdienst, um realistische Attribute und Beziehungen zu definieren
Austausch mit Mitschülern und Lehrkraft, um Modellierungsentscheidungen zu überprüfen
Copilot zur sprachlichen Formulierung, Strukturierung und zur Reflexion der Modellierungsentscheidungen
Alle Inhalte wurden anschließend eigenständig angepasst, erweitert und in die endgültige Datenbankstruktur übertragen.