🏠 » Lexikon » O » Objektrelationale Abbildungen

Objektrelationale Abbildungen

Objektrelationale Abbildungen

(ORMs von object-relational mappings) sind eine Technik aus der Softwareentwicklung, bei der die Objekte einer objektorientierten Programmiersprache, wie Java oder C#, auf eine relationale Datenbank abgebildet werden.

Normalerweise werden ORMs in Klassenbibliotheken umgesetzt, beispielsweise dem Entity Framework für .NET, Hibarnate für Java oder SQLAlchemy für die Programmiersprache Python.

Objektrelationalen Abbildungen - Aufbau, Funktionsweise und Arten

Objektorientierte Programmiersprachen kapseln Daten und Verhalten innerhalb von Objekten. In einer relationalen Datenbank können die Daten für ein einzelnes Objekt gespeichert werden, indem für jedes Objekt eine Zeile und für jedes Attribut eine Spalte angelegt wird.

Die Identität des Objekts ist der Primärschlüssel einer Tabelle, also der Schlüssel, nachdem alle Zeilen eindeutig voneinander unterschieden werden können. Referenzen auf andere Objekte, beispielsweise durch Vererbung, können über einen Fremdschlüssel dargestellt werden.

Grundsätzlich gibt es drei Möglichkeiten, objektrelationale Abbildungen umzusetzen, die auch in der Praxis verwendet werden: Single Table, Joined Table und Concrete Table.

Single Table-Ansatz bei objektrelationale Abbildungen

Beim Single Table-Ansatz gibt es eine Tabelle pro Vererbungshierarchie. Das heißt, dass alle Attribute der Basisklasse und alle Attribute der erbenden Klassen in einer gemeinsamen Tabelle abgespeichert werden. Durch eine zusätzliche Diskriminator-Spalte wird festlegt, zu welcher der möglichen Klassen ein jeweiliges Objekt gehört. Diese Methode hat zwei

Nachteile: Zum einen können NOT-NULL-Constraints für Attribute der abgeleiteten Klassen nicht verwendet werden, denn bei Objekten der Basisklasse sind sie nicht vorhanden. Zum anderen kann die Spaltenzahl sehr schnell so groß werden, dass die Übersichtlichkeit eingeschränkt oder die Tabellengröße gar nicht mehr unterstützt wird.

Joined Table-Ansatz bei objektrelationale Abbildungen

Im Joined Table-Verfahren, das auch Class Table genannt wird, wird stattdessen für jede Klasse eine eigene Tabelle angelegt. Dadurch gibt es zwar mehr Tabellen, diese sind aber kleiner und damit übersichtlicher. Ein Diskriminator ist nicht mehr notwendig.

Concrete Table-Ansatz bei objektrelationale Abbildungen

Bei Concrete Tables werden die Tabellen von konkreten Unterklassen durch die Attribute der (abstrakten) Basisklasse erweitert. Eine Tabelle für die Basisklasse ist dann nicht mehr nötig, allerdings können - wie auch im Joined Table-Verfahren - keine Anfragen formuliert werden, die Objekte von verschiedenen Klassentypen zurückgeben.

Ein weiteres Verfahren, das in der Praxis mittlerweile keine Bedeutung mehr hat, sind General Tables. Dabei existieren exakt fünf Tabellen: Eine für Klassen, eine für die Beziehungen zwischen den Klassen, eine für die Attribute der Klassen, eine für konkrete Klasseninstanzen und zuletzt eine für die konkreten Werte dieser Instanzen.

Objektrelationale Abbildungen in der Softwareentwicklung

Objektrelationale Abbildungen

sind relativ weit verbreitet, da sie zum einen sehr zuverlässig sind und Daten lange "leben" lassen und zum anderen durch viele Frameworks unterstützt werden.

Allerdings sind insbesondere mit der fortschreitenden Digitalisierung relationale Datenbanken nicht mehr optimal: Für Big Data oder die Nutzung der Daten sozialer Medien können sie kaum verwendet werden, da diese Daten keine einheitliche Struktur aufweisen.

Für diese Anwendungsfälle können klassische ORMs daher nicht verwendet werden. Bei typischer Enterprise Software bleiben sie allerdings weiter beliebt.

Bitte bewerten (1 - 5):