Skip to main content

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 
  1. Muss in 1NF sein 
  2. 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
    1. Muss in 2NF sein
    2. Keine transitiven Abhängigkeiten (Nicht-Schlüsselattribute dürfen nicht voneinander Abhängen) 

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.