Zum Inhalt springen

Relation (Datenbank)

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 26. März 2025 um 08:52 Uhr durch imported>Thoken (Einleitung: gekürzt, Wikilinkname zu ungenau).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Formale Grundlage der Relation im Sinne einer Datenbankrelation ist die mathematische Definition der Relation in der relationalen Algebra. Eine Relation besteht aus Tupeln, jedes Tupel wird durch Attribute beschrieben, die den Typ (mögliche Attributwerte) festlegen und mit einem Attributnamen beschreiben. Im Datenbankbereich unterscheiden sich die Begriffe Relation (Engl. relation) und Beziehung (Engl. relationship), diese begriffliche Trennung wird nicht immer genau gehandhabt.

Relationen als Tabellen

Im Zusammenhang mit relationalen Datenbanken ist es üblich, eine Relation durch eine Tabelle zu beschreiben. In Tabellenform entsprechen die Attribute den Spaltenköpfen, die Attributwerte den in den Spalten vorhandenen Einträgen. Ein Tupel entspricht einer Zeile einer Tabelle. Oft werden Attributwerte fälschlich als Attribut bezeichnet.

Sowohl der Zusammenhang von Attributen bzw. Attributwerten innerhalb einer Tabelle als auch eine Verknüpfung von Tabellen durch Fremdschlüssel stellen eine Relation dar. Zu Irrtümern führt vermutlich die Verbreitung der Terminologie von ER-Modellen. Dort werden die Begriffe Entitäten (Entities) und Beziehungen (Relationships) gebraucht. Der Irrtum besteht darin, Entitäten und Beziehungen prinzipiell zu unterscheiden. Im Prinzip sind aber sowohl Entitäten als auch Beziehungen als Relationen zu betrachten. Eine Beziehung zwischen zwei Tabellen stellt schließlich mit dem Zusammenführen von zwei Relationen letztlich nur eine Vergrößerung der Anzahl an Elementen dar. Betrachtet man eine Beziehung als Relation, so stellen sich ihre Elemente als die Vereinigung der Elemente der beiden verknüpften Relationen dar.

Während ER-Modelle bei der Entwicklung eines Datenbankschemas hilfreich sein können, eignet sich das relationale Datenmodell mit seiner relationalen Algebra besser für die grundsätzliche Strukturierung von Daten.<ref>Date, C. J. (2003). Introduction to Database Systems. 8th edition, Addison-Wesley. ISBN 0-321-19784-4.</ref>

Gäbe es in der Datenbanktabelle für jede mögliche Kombination von Attributwerten eine eigene Zeile, dann würde diese Tabelle das kartesische Produkt der Wertemengen für die Spalten darstellen. Normalerweise enthält eine Datenbanktabelle nur eine sehr kleine Teilmenge der möglichen Tupel, sie stellt also eine Untermenge dieses kartesischen Produkts dar.

Eine Konsequenz daraus, die Belegung einer Datenbanktabelle als Menge aufzufassen, ist die, dass die einzelnen Zeilen als Elemente dieser Menge anzusehen sind. Sie können somit entweder in der Menge (Tabelle) enthalten sein oder nicht – von Anzahl und Position eines Elementes kann man hingegen nicht sinnvoll sprechen. Mit der üblichen Datenbankabfragesprache SQL ist es zwar im Allgemeinen möglich, ein Element (d. h. eine Zeile mit einer bestimmten Wertebelegung) mehrfach in eine Tabelle einzufügen, ein solches Vorgehen ist aber sinnlos: Mehrere Zeilen, die mit denselben Werten belegt sind, haben dieselbe Identität und sind logisch voneinander nicht zu unterscheiden.

Definition

Sehr viele Begriffe werden im Zusammenhang mit Relationen verwendet, jedoch bedeuten sie oft dasselbe. Hinzu kommt, dass es sowohl deutsche als auch englische Bezeichnungen gibt, die des Weiteren vermischt werden. Die folgende Tabelle führt oft verwendete Begriffe auf.

relationales Modell informeller Begriff Erklärung
Deutsch Englisch Deutsch Englisch
Relation, Entitätstyp, Entitätsklasse relation Tabelle {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) Eine Tabelle in einer Datenbank
Tupel, Entität {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value), {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) Zeile {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) Ein horizontaler Datensatz einer Tabelle in der Datenbank
Beziehung {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) Beziehung einzelner Tupel zueinander
Kardinalität {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) Mengenangabe zur Beziehung einzelner Tupel (z. B. 1:1, 1:n, n:m)
Attribut {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) Spalte {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) vertikaler Spaltenindex einer Tabelle
Grad {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) Anzahl der eindeutig identifizierenden Attribute
Primärschlüssel {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) eindeutiger Identifikator
Fremdschlüssel {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) Schlüssel aus einer anderen Tabelle, um eine Beziehung herstellen zu können
Wertebereich {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) Typ {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) Werte, die ein Attribut annehmen kann
Skalar {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) Wert {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) Wert eines Attributes in einem Tupel

Siehe auch

Einzelnachweise

<references />