Vererbung in Datenbanken

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Version vom 17. Juli 2009, 06:56 Uhr von Jakobw (Diskussion | Beiträge) (Die Seite wurde neu angelegt: {{In Bearbeitung}} Es gibt verschiedene Möglichkeiten wie man Vererbungen, sogenannte IS-A-Beziehungen, in Datenbanken realisieren kann. Die unterschiedlichen Impleme...)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Dieser Artikel wird derzeit von einem Autor gründlich bearbeitet. Die Inhalte sind daher evtl. noch inkonsistent.

Es gibt verschiedene Möglichkeiten wie man Vererbungen, sogenannte IS-A-Beziehungen, in Datenbanken realisieren kann. Die unterschiedlichen Implementierungsmöglichkeiten bringen jeweils Vor- und Nachteile, insbesondere beim Zugriff auf die jeweiligen Tabellen, mit sich.

Manuelle Definition

Implementierungsvarianten Relationenschema

1. Möglichkeit

e: id, e1, e2
f: id, e1, e2, f1, f2 (id -> E: id)

[...]


2. Möglichkeit

e: id, e1, e2
f: id, f1, f2 (id -> E: id)

Hierbei ist die Auflistung aller Objekte der Tabelle e einfacher, für alle Objekte und f und deren zugehörigen von e geerbten Attribute ist ein einfacher Join möglich. Die zweite Variante ist die sauberste aller Implementierungsmöglichkeiten und wird empfohlen.

3. Möglichkeit(nicht empfohlen)

e: id, e1, e2, f1*, f2*

Es ist theoretisch möglich für die gesamte Vererbungs-Hierachie nur eine einzige Tabelle zu definieren. Diese enthält dann alle Attribute der Basisklasse sowie aller Subklassen. Die Attribute der Subklassen dürfen NULL werden.

Der große Nachteil dieser Variante: Es können Inkonsistenzen auftreten. Attribute wie f1 und f2, welche bei einem Objekt der Klasse f nicht undefiniert sein dürften; können nun den WERT NULL annehmen. Denkbar wäre z.B. dass f1 mit einem richtigen Wert initialisiert wird, während f2 leer bleibt.

Zugriff

1. Möglichkeit

Alle Objekte der Art e:

SELECT id, e1, e2 FROM e
UNION
SELECT id, e1, e2 FROM F

Alle Informationen über f-Objekte:

SELECT id, e1, e2, f1, f2 FROM f

2. Möglichkeit

Alle Objekte der Art e:

SELECT id, e1, e2 FROM e

Alle Informationen über f-Objekte:

SELECT id, e1, e2, f1, f2 FROM e, f
WHERE e.id = f.id


Direkte Vererbung in SQL

Quellen

Wenn die Definitionen und/oder die Anmerkungen nicht von einem selbst stammen, sollte man die Quellen angeben (das sind natürlich nur Beispiele, keine echten Quellen dieses Artikels :-) ):

  • Hinz und Kunz, "Der Bau einer Musterseite", 7. Auflage, Wiki-Verlag, 1931

Besser ist es spezielle Quellendokumente zu erstellen (und diese dann auch mit Inhalt zu füllen):

Auch externe Quellen können zitiert werden.

Siehe auch

Zu guter letzt kann Sekundärliteratur angegeben werden, die zwar im Artikel nicht direkt verwendet, aber doch irgendwie interessant ist. Außerdem sollten eine oder mehrere Kategorien angegeben werden sowie ein Verweis auf den zugehörigen englischen Artikel in GlossaryWiki, auch wenn es diesen noch gar nicht gibt.