Relationale Datenbanken

Willemers Informatik-Ecke

Relationen

Codd bezeichnet Datenbanken als "minimal relational", wenn sie folgende Bedingungen erfüllen.
  1. Die Informationen werden einheitlich in Form von Tabellen repräsentiert.
  2. Der Anwender sieht keine Verweisstrukturen zwischen den Tabellen.
  3. Es gibt mindestens die Operation der Selektion, der Projektion und des JOIN definiert.

Schlüssel und funktionale Abhängigkeit

Der Schlüssel einer Tabelle bestimmt eindeutig eine Zeile der Tabelle. Man spricht auch davon, dass die Felder, die nicht im Schlüssel vorkommen, von diesem funktional abhängig sind.

Referentielle Integrität

Felder können Werte enthalten, die in anderen Tabellen Schlüssel bilden. Werden sie zur Referenz auf andere Tabellen verwendet, spricht man von einem Fremdschlüssel. Die referentielle Integrität fordert, dass für jeden Fremdschlüssel der Datensatz existiert, der referenziert wird. Das bedeutet, dass die Datenbank verhindern muss, dass ein Satz gelöscht wird, auf den noch ein Fremdschlüssel verweist.

Normalisierung

Die Normalisierung dient in erster Linie des Abbaus der Redundanzen.
J.W.Schmidt (S.38) definiert:
"Relationen, deren sämtliche Nicht-Schlüsselattribute funktional vom Schlüssel abhängen und weitere funtionale Abhängigkeiten nicht besitzen, nennt man normalisiert."

Es ergeben sich die Folgerungen:

Eine Tabelle sollte einen Primärschlüssel haben
Eine Tabelle sollte nur Daten für einen Typ einer Entität aufnehmen
Eine Tabelle sollte Spalten vermeiden, deren Elemente leer sein können
Eine Tabelle sollte keine wiederholenden Werte haben.
Nicht immer ist es in der Praxis sinnvoll, eine Datenbank vollständig zu normalisieren. Wird die Aufspaltung in zu viele Tabellen erforderlich, kann es Performance-Einbrüche geben.

Entity Relationship

Zum Design einer Datenbank dient die Bildung eines Datenmodells. Das populärste Werkzeug ist das Entitiy Relationship Model. Der etwas vereinfachende Ablauf ist, dass für alle Objekte und Beziehungen je eine Tabelle erstellt wird.

Beispiel

Soll der Verkauf von Artikeln abgebildet werden, hat man zwei Entitäten: Kunden und Artikel. Zwischen beiden gibt es eine Beziehung (Relation): der Kauf. Damit haben wir drei Tabellen: Kunde, Artikel und Kauf. Die Tabelle Kauf enthält minimal die Fremdschlüssel von Kunde und Artikel.

Transaktionen

Eine Transaktion führt eine Datenbank von einem konsistenten Zustand immer in einen konsistenten Zustand. Das bedeutet, sie wird entweder vollständig oder gar nicht ausgeführt. Wird im Zuge der Transaktion festgestellt, dass sie teilweise nicht ausgeführt werden kann, wird der Rollback eingeleitet. Dieser sorgt dafür, dass die Datenbank in dem Zustand kommt, in dem sie von der Transaktion vorgefunden wurde. Ist jeder Teilaspekt der Transaktion einwandfrei durchlaufen, wird per Commit die Änderung endgültig gemacht.

Joins

Ein Join ist eine Zusammenfassung zweier Tabellen.

Karthesisches Produkt

Das karthesische Produkt ist ein Join, der nicht beschränkt ist. Etwas lässig formuliert, könnte man sagen: Jeder gegen jeden.
SELECT KUNDE.NAME, KUNDE.ADRESSE, BETREUER.NAME 
  FROM KUNDE,BETREUER;
Es entsteht eine Tabelle, in der jeder Kunde mit jedem Betreuer gekreuzt wird.

Equi-Join

Beispielsweise will man eine Liste aller Kunden mit dem Namen ihrer Betreuer. Die Tabelle BETREUER enthält als Primärschlüssel ID. Die Tabelle KUNDE enthält die Spalte BETREUERID.
SELECT KUNDE.NAME, KUNDE.ADRESSE, BETREUER.NAME 
  FROM KUNDE,BETREUER 
  WHERE BETREUER.ID=KUNDE.BETREUERID;
Dieser Join heisst Equi-Join, weil er auf der Gleichheit zweier Spalten basiert. In diesem Fall wird also der Name des Betreuers angezeigt, der zu jedem Kunden gehört.

Literatur

P.C.Lockemann u. J.W.Schmidt (Hrsg)
Datenbank-Handbuch, Springer, 1987.
K. Dittrich: Datenbanksysteme. in Informatik-Handbuch. Carl Hanser, München Wien. S. 750ff.

Homepage (C) Copyright 1999 Arnold Willemer