Datenbanken: Die Relationenalgebra

avatar

Im relationalen Datenmodell denken wir in Relationen oder Mengen. Daher auch der Name relationales Datenmodell. Sprachen für dieses Modell müssen es deshalb erlauben, gewünschte Relationen, die aus den vorhandenen Relationen zu erzeugen sind, zu spezifizieren. Ferner müssen Möglichkeiten zur Veränderung von Relationen und zur Einführung neuer und zum Löschen vorhandener Relationen gegeben sein.

Es gibt eine ganze Reihe von Vorschlägen für relationale Datenmanipulationssprachen. Alle diese Sprachen lassen sich jedoch auf einen der beiden folgenden grundlegenden Ansätze zurückführen, oder sind Mischformen hiervon:

  • Relationenalgebra
    Spezifikation von gewünschten Relationen durch Angabe einer Folge von Operationen, mit der die Relationen aufgebaut werden sollen. Der Benutzer wendet spezielle Operationen auf Relationen an, um seine gewünschte Relation zu konstruieren.

  • Relationenkalkül
    Spezifikation von gewünschten Relationen ohne Angabe, welche Operationen zum Aufbau der Relation verwendet werden sollen. Mit Hilfe des Prädikatenkalküls wird die Menge der gewünschten Tupel beschrieben: es wird ein Prädikat (eine Bedingung) angegeben, das die Tupel erfüllen müssen.

Kern jeder Datenmanipulationssprache sind diejenigen Komponenten, die die Datenauswahl, d.h. das Lesen der gewünschten Daten, betreffen (Retrieval). Sind Daten zu verändern, so ist der schwierigste Schritt, die zu verändernden Daten erst einmal aufzufinden; die Veränderung der gefundenen Daten ist im relationalen Datenmodell dann sehr einfach.

Eine Relationenalgebra definiert eine Menge von Operationen auf Relationen, mit deren Hilfe neue Relationen erzeugt werden können.
Die Art der Operationen werden auf Tabellen angewendet. Wir müssen beispielsweise Spalten und Zeilen aus Tabellen entfernen oder Tabellen zu neuen Tabellen zusammenfassen können.

Im Folgenden wird ein grundlegender Satz von Operationen für die Relationenalgebra vorgestellt:

Seien im folgenden X und Y zwei Relationen.

DB4.png
Abbildung 1: Grundlegende Operationen auf Relationen

  • Vereinigung
    Dies ist die Vereinigung der Tupelmengen aus X und Y. Als Voraussetzung müssen X und Y vereinigungsverträglich sein, d.h. sie müssen die gleichen Attribute (bzgl. Namen und Wertebereichen) haben.

  • Differenz
    Dies ist die Menge der Tupel in X, die nicht auch in Y enthalten sind. X und Y müssen auch hier vereinigungsverträglich sein.

  • Kartesisches Produkt
    Dies ist die Relation, die alle möglichen Kombinationen von Tupeln aus X einerseits und Y andererseits enthält. Das kartesische Produkt hat alle Attribute von X und Y. Voraussetzung ist, dass alle Attribute von X und Y verschieden sind.

  • Projektion
    Die Projektion dient dazu, Attribute aus Relationen zu entfernen. Sind für eine Auswertung nur die Attribute x1,...,xn interessant, dann werden einfach alle anderen Attribute der Relation X weggelassen.

  • Selektion
    Mit der Selektion werden aus einer Relation alle Tupel ausgewählt, die eine gegebene Bedingung erfüllen. Die Bedingung muss für jedes Tupel für sich nachprüfbar sein.

  • Umbenennung
    Durch die Umbenennung erhalten die Attribute einer Relation neue Bezeichnungen (bzw. Namen). Die Wertebereiche der Attribute bleiben unverändert.

DB4b.png
Abbildung 2: Beispiele zu den Operationen

Quelle
http://www.inf.unibz.it/~nutt/IDBs1011/IDBSlides/7-db-relAlg-2.pdf



0
0
0.000
3 comments
avatar

Du hast ein Upvote von mir bekommen, diese soll die Deutsche Community unterstützen. Wenn du mich unterstützten möchtest, dann sende mir eine Delegation. Egal wie klein die Unterstützung ist, Du hilfst damit der Community. DANKE!

0
0
0.000
avatar

Thanks for your contribution to the STEMsocial community. Feel free to join us on discord to get to know the rest of us!

Please consider supporting our funding proposal, approving our witness (@stem.witness) or delegating to the @steemstem account (for some ROI).

Please consider using the STEMsocial app app and including @stemsocial as a beneficiary to get a stronger support. 
 

0
0
0.000