Vererbung in Datenbanken
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):
- Kowarschick, W. et al. (2005): Musterquelle (Buch)
- Goldratt, E.; Cox , J. (2004): The Goal
- Leach, L. (2005): Critical Chain Project Management
Auch externe Quellen können zitiert werden.
- Kowarschicks gesammelte Werke (besser als eigenes Quellen-Dokument, basierend auf der Vorlage:Quelle:URL)
- Wikipedia (so nicht, da zu allgemein und außerdem nicht der Wikipedia-Verweis benutzt wurde)
- Wikipedia:Vorlage (Datenverarbeitung) (sondern eher so, aber noch besser auch als eigenes Quellen-Dokument)
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.
- Theory of Constraints (Quellen) (eine ganze Sammlung von Quellen in einem Quellen-Dokument)
- Wikipedia: Formatvorlagen
