Viele moderne Datenbanksysteme werden von ihren Herstellern als relational bezeichnet. Welchen Kriterien eine der Definition entsprechende relationale Datenbank genügen müßte, soll hier kurz beschrieben werden.
Angestellter | Personalnummer | Abteilung |
Meier | 14093-2 | EDV |
Siebert | 21145-9 | Verwaltung |
Beispiel:
Alle Zeilen bei denen der Name des Angestellten mit S anfängt.
Beispiel:
Mit einer zusätzlichen Tabelle der Form
Personalnummer | Gehalt |
14093-2 | 5300 |
21145-9 | 4100 |
kann folgende Tabelle erzeugt werden:
Angestellter | Personalnummer | Gehalt | Abteilung |
Meier | 14093-2 | 5300 | EDV |
Siebert | 21145-9 | 4100 | Verwaltung |
Beispiel:
Angestellter und zugehörige Personalnummer
Mehr zu Selektion, Vereinigung und Projektion in Abschnitt 7 'SQL und Relationale Algebra'
Beispiel:
Der Aufbau verschiedener Tabellen, die zu einer Datenbank gehören,
muß auch in einer Tabelle beschrieben sein
Die Erfüllung dieser einfachen Bedingungen genügt jedoch noch nicht, ein Datenbanksystem als relational zu klassifizieren.
1985 wurden von E. F. Codd zwölf Regeln veröffentlicht, die eine relationale Datenbank im strengen Sinne definieren:
Alle Information in relationalen Datenbanken muß logisch in Tabellen dargestellt sein, insbesondere
Jeder Wert einer relationalen Datenbank muß logisch durch eine Kombination von Tabellenname, Primärschlüssel und Attributname (Spaltenname) auffindbar sein. Dies bedeutet, daß in einer Tabelle an jedem Schnittpunkt einer Zeile mit einer Spalte nur ein Wert stehen darf.
Beispiel:
Tabellenname: Angestellte
Primärschlüssel: Angestellter = Meier
Attributname: Gehalt = 5300
Nullwerte stellen in Attributen, die nicht Teil eines Primärschlüssels sind, fehlende Information dar und werden durchgängig gleich, insbesondere unabhängig vom Datentyp des Attributes, behandelt.
Beispiel:
Man kann also nicht in numerischen Feldern bei fehlenden Daten das Feld
leerlassen, und bei Textfeldern das Zeichen -- einfügen. Fehlende
Informationen werden heute meist mit NULL bezeichnet.
Die Datenbankstruktur wird in derselben logischen Struktur wie die Daten gespeichert, also in Tabellen. Dazu muß die Struktur aller Tabellen, die zu einer Datenbank gehören, in einer Tabelle (dem Katalog) zugänglich sein. Diese Forderung bedingt, daß sich eine Änderung im Katalog automatisch in einer geänderten Datenbankstruktur auswirkt!
Ein relationales System enthält mindestens eine befehlsgesteuerte Abfragesprache, die mindestens die folgenden Funktionen unterstützt:
Eine weit verbreitete Abfragesprache ist SQL (Structured Query Language, siehe Abschnitt 7.1)
Alle Views, die theoretisch aktualisiert werden können, können auch vom System aktualisiert werden.
Beispiel:
Hat man zwei Spalten A und B mit Zahlen, so kann man sich eine weitere
Spalte definieren, die A*B enthält. Ändert man einen Wert in
dieser Spalte, so kann daraus nicht der Wert der Spalten A und B bestimmt
werden, da im allgemeinen aus dem Produkt zweier Zahlen diese zwei Zahlen
nicht bestimmt werden können. Dieses View kann also theoretisch nicht
aktualisiert werden.
Problem:
Im allgemeinen kann nicht entschieden werden, ob ein View theoretisch aktualisiert
werden kann
Abfrage- und Editieroperationen müssen als Operanden ganze Tabellen und nicht nur einzelne Sätze erlauben
Der Zugriff auf die Daten durch den Benutzer muß unabhängig davon sein, wie die Daten gespeichert werden oder wie physikalisch auf sie zugegriffen wird. Dies bedeutet, daß Anwendungen nur auf die logische Struktur des Systems zugreifen dürfen.
Beispiel:
Die Daten dürfen auf einem Datenträger durchaus hierarchisch
gespeichert sein. Nur die logische Struktur der Datenbank muß relational
sein. Ändert der Datenbankverwalter die physikalische Struktur, darf
der Anwender davon nichts mitbekommen.
Anwendungen und Zugriffe dürfen sich logisch nicht ändern, wenn Tabellen so geändert werden, daß alle Information erhalten bleibt (z. B. beim Aufspalten einer Tabelle in zwei Tabellen)
Alle Integritätsbedingungen müssen in der Abfragesprache definierbar sein und in Tabellen dargestellt werden. Das System muß mindestens die folgenden Integritätsbedingungen prüfen:
Beispiel: Zu jeder Personalnummer muß es auch einen Namen eines Angestellten geben
Anwendungen für eine nicht-verteilte Datenbank dürfen sich beim Übergang zu einer verteilten Datenbank logisch nicht ändern.
Beispiel:
Wenn die oben beschriebenen Tabellen in einem Netzwerk auf zwei verschiedenen
Rechnern gespeichert sind, darf sich bei der Anwendung nichts ändern,
wenn die Tabellen irgendwann auf demselben Rechnern gespeichert werden
Unterstützt ein relationales Datenbanksystem neben der High-Level-Abfragesprache eine Low-Level-Abfragesprache, so darf diese die Integritätsbedingungen der High-Level-Sprache nicht unterlaufen.
Beispiel:
Die Low-Level Abfragesprache darf z. B. nicht direkt auf die physikalischen
Eigenschaften der gespeicherten Daten zugreifen
Anmerkungen: