Datenbanken
Inhalt
Eine Datenbank ist ein strukturiertes System zur Speicherung, Verwaltung und Abfrage von Daten. Typischerweise arbeitet man mit relationalen Datenbanken, bei denen die Daten in Tabellen organisiert sind.
Diese Tabellen stehen oft in Beziehungen zueinander - daher der Name "relationale Datenbank"
Normalisierung
Normalisierung ist ein Prozess in der Datenbankmodellierung, bei dem man Tabellen in sinnvolle, saubere Strukturen bringt, um:
- Redundanzen zu vermeiden
- Dateiinkonsistenzen zu verhindern
- Flexibilität und Wartbarkeit zu erhöhen
Dazu gibt es verschiedene Normalformen, die man Schritt für Schritt durchläuft.
Normalformen
Erste Normalform
Alle Attribute sind atomar - aber nicht teilbar.
Beispiel (nicht 1NF):
Kunde |
Telefonnummern |
Anna |
0123,0456 |
Problem: Mehrere Telefonnummern in einem Feld -> nicht atomar
In die 1NF umgewandelt
Kunde |
Telefonnummer |
Anna |
0123 |
Anna |
0456 |
Zweite Normalform
- Muss in 1NF sein
- Keine partiellen Abhängigkeiten vom Primärschlüssel (gilt nur bei zusammengesetzten Schlüsseln)
Beispiel (2NF nicht erfüllt):
Student_ID |
Student_Name |
Kurs_ID |
Kurs_Name |
Dozent |
Raum |
1 |
Anna Müller |
A1 |
Mathe |
Dr. Koch |
R101 |
2 |
Anna Müller |
B2 |
Physik |
Dr. Meyer |
R102 |
3 |
Ben Schulze |
A1 |
Mathe |
Dr. Koch |
R101 |
- Tabelle muss 1NF sein -> erfüllt
- Alle Nicht-Schlüsselattribute müssen voll funktional abhängig vom gesamten Primärschlüssel sein
Problem:
- Primärschlüssel = (Student_ID, Kurs_ID)
- -> Aber Student_Name hängt nur von Student_ID ab, nicht vom Kurs!
- -> Verstoß gegen 2NF
Lösung: Aufteilen in zwei Tabellen
Studenten
Student_ID |
Student_Name |
1 |
Anna Müller |
2 |
Ben Schulze |
Kursbelegung
Student_ID |
Kurs_ID |
1 |
A1 |
1 |
B2 |
2 |
A1 |
Kurse
Kurs_ID |
Kurs_Name |
Dozent |
Raum |
A1 |
Mathe |
Dr. Koch |
R101 |
B2 |
Physik |
Dr. Meyer |
R102 |
Dritte Normalform
-
- Muss in 2NF sein
- Keine transitiven Abhängigkeiten (Nicht-Schlüsselattribute dürfen nicht voneinander Abhängen)
- Muss in 2NF sein
In der Kurs-Tabelle: Raum hängt eigentlich vom Dozent ab ab (z.B. Dr. Koch unterrichtet immer in Raum R101) -> transitives Abhängigkeit.
Lösung: Dozenten in eine eigene Tabelle auslagern
Kurse
Kurs_ID |
Kurs_Name |
Dozent_ID |
A1 |
Mathe |
D1 |
B2 |
Physik |
D2 |
Dozenten
Dozent_ID |
Dozent |
Raum |
D1 |
Dr. Koch |
R101 |
D2 |
Dr. Meyer |
R102 |
Aufgaben
Die Datenbank, in der Angebote und Buchungen gespeichert werden sollen, muss die folgenden Anforderungen erfüllen:
- Jede Wohnung wird nur von einem Anbieter bereitgestellt
- Für eine Wohnung werden zu verschiedenen Buchungszeiten verschiedene Preise verlangt
- Ein Kunde kann mehrere Wohnungen buchen
- Zu jeder Buchung gehören An- und Abreisedatum
- PLZ und Ort der Kunden und Anbieter werden in einer gemeinsamen Tabelle angelegt
Geben Sie ein Datenbankschema in der 3. Normalform an, das die genannten Anforderungen erfüllt. Außer den angegebenen Attributen brauchen Sie nur die Schlüsselattribute sowie den Namen der Kunden und Anbieter anzugeben. Kennzeichnen Sie Primär- und Fremdschlüssel mit PK bzw. FK.
Wohnung
ID (PK) |
Anbieter (FK) |
Anbieter
ID (PK) |
Name |
Ort (FK) |
Kunde
ID (PK) |
Name |
Ort (FK) |
Preis
Wohnung (FK) |
Wohnung (FK) |
Beginn |
Ende |
Preis |
Buchung
Kunde (FK) |
Wohnung (FK) |
Abreisedatum |
Anreisedatum |
Ort
ID (PK) |
PLZ |
Ort |