Relationen Holger Jakobs – [email protected] 2004-09-07 Inhaltsverzeichnis 1 Relation 1.1 Begriff der Relation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Eigenschaften von Relationen, Schreibweisen . . . . . . . . . . . . . . . . . 1 1 2 2 Relationenalgebra 2.1 Selektion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Projektion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Verbund . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 2 3 Relationalen Datenbanken nach Codd liegen die Prinzipien der Relationenalgebra zugrunde. Deshalb hier ein kurzer Überblick über Relationen und ihre Operationen. 1 Relation 1.1 Begriff der Relation Eine Relation ist eine Menge von Tupeln, die aus Ausprägungen von einer festen Anzahl von Attributen bestehen. In informatiküblicher Bezeichnung würde man von einer Tabelle sprechen, die aus Zeilen (Datensätzen) besteht. Die Attribute sind die Spaltenbezeichnungen, die Ausprägungen die Werte in den Spalten. Aus der Tatsache, dass es sich um eine Menge handelt, lassen sich zwei Eigenschaften ableiten: 1. Die Tupel (Zeilen) sind nicht geordnet, bzw. eine eventuell vorhandene Ordnung hat keinerlei Bedeutung und ist zufällig. 2. Alle Tupel sind eindeutig, d. h. es darf nicht vorkommen, dass zwei Tupel in einer Tabelle in allen Attributwerten übereinstimmen. 1 1.2 Eigenschaften von Relationen, Schreibweisen 2 RELATIONENALGEBRA 1.2 Eigenschaften von Relationen, Schreibweisen Der Inhalt von Relationen (Tabelleninhalt) kann sich im Laufe der R A B C D Zeit ändern, das Format der Relation (Anzahl Spalten, Wertebereich der Attribute) ist dagegen zeitinvariant. Änderungen am Format erzeugen eine neue Relation, d. h. es handelt sich nach Änderung nicht mehr um dieselbe. Eine Relation R (A, B, C, D) sieht als Tabelle wie nebenstehend aus. Eine Relation könnte also wie folgt beschrieben sein: Student (MatrikelNr, Name, Fach, Semester). MatrikelNr, Name, Fach, Semester sind Attribute der Relation Student. Eine Relation hat einen eindeutigen Schlüssel – notfalls die Kombination aller Attribute. Der Schlüssel ist ein Attribut oder eine Attributkombination, deren Wertekombination ein Tupel eindeutig identifiziert. In diesem Beispiel ist anzunehmen, dass MatrikelNr der Schlüssel ist. Zur Kennzeichnung unterstreicht man alle zum Schlüssel gehörenden Attribute: Student (MatrikelNr, Name, Fach, Semester). 2 Relationenalgebra In der Relationenalgebra werden Operationen auf und mit Relationen durchgeführt. Die Ergebnisse sind wieder Relationen. Es gibt drei grundlegende Operationen: Selektion, Projektion und Verbund. 2.1 Selektion Bei der Selektion werden aus einer Relation bestimmte Tupel ausgewählt (selektiert). Die Ergebnisrelation hat genauso viele Attribute wie die Ausgangsrelation. Die Anzahl der Tupel kann geringer sein oder sogar 0. Student [Fach=’Physik’] erzeugt eine Relation mit den Tupeln aller Studenten, die Physik studieren. 2.2 Projektion Bei der Projektion werden aus einer Relation bestimmte Attribute ausgewählt. Die Ergebnisrelation hat höchstens genauso viele Attribute wie die Ausgangsrelation. Die Anzahl der Tupel bleibt gleich, sofern alle Schlüsselattribute übernommen werden. Werden nicht alle Schlüsselattribute übernommen, kann es passieren, dass Tupel herausfallen, weil sie ansonsten doppelt vorkämen. Student [Name, Fach] erzeugt eine Relation mit den Attributen Name und Fach der Studenten. Kommen Name/Fach-Kombinationen doppelt vor, sind weniger Tupel vorhanden als in der Ausgangsrelation. 2 2 RELATIONENALGEBRA 2.3 Verbund 2.3 Verbund Im Relationenmodell werden Datenin Tabellen (Relationen) dargestellt. Diese Relationen müssen bestimmten Bedingungen genügen, um Redundanz zu vermeiden und somit die Konsistenz möglichst wenig zu gefährden. Dazu wird das, was man bei papierner Darstellung in eine Tabelle schreiben würde, im Rahmen der Normalisierung (siehe Unterlagen zu diesem Thema) auf mehrere Relationen aufgespalten. Bei Abfragen müssen diese Relationen dann wieder miteinander verknüpft werden, was mit der Verbund-Operation (join) geschieht. Ein Verbund ist das kartesische Produkt (Kreuzprodukt) zweier Relationen, d. h. es wird jedes Tupel (Zeile) einer Relation mit jedem Tupel aus einer anderen Relation verknüpft. Die Anzahl der Tupel in der Ergebnisrelation ist gleich dem Produtk aus den Tupelanzahlen der Ausgangsrelationen. Das sieht dann so aus: einfacher Verbund (volles Kreuzprodukt): RxS R A 1 2 B 2 2 S C 1 4 7 D 2 5 8 E 3 6 9 A 1 1 1 2 2 2 B 2 2 2 2 2 2 C 1 4 7 1 4 7 D 2 5 8 2 5 8 E 3 6 9 3 6 9 Die Relationen R und S enthalten 2 bzw. 3 Tupel, die Ergebnisrelation des Verbundes R x S also 2 · 3 = 6 Tupel. Meist ist eine solche Art des Verbundes nicht sinnvoll, und die Datenmenge wächst immens an. In vielen Fällen werden nur die Tupel der Ergebnisrelation gesucht, bei denen je ein Attribut aus den Ausgangsrelationen vom Wert her übereinstimmt. möchte man beispielsweise eine Liste aller Artikel mit ihren zugehörigen Lieferanten haben, so müssen Lieferantennummer beim Artikel und beim Lieferanten übereinstimmen. Alle anderen Tupelkombinationen werden nicht benötigt. So etwas nenn man einen natürlichen Verbund (natural join). natürlicher Verbund: R A B C 1 1 0 1 0 1 1 1 2 S C 0 2 0 D 1 2 1 E 2 1 1 F 3 4 1 R⊗S A 1 1 1 B 1 1 1 C 0 0 2 D 1 1 2 E 2 1 1 F 3 1 4 Hier fällt sofort auf, dass nicht alle Tupel aus R überhaupt in die Ergebnisrelation eingehen. Es werden nur die Tupel aus R und S übernommen, wo die Attributwerte des gleichnamigen Attributs C übereinstimmen. Alle anderen fallen heraus. Der natürliche Verbund besagt also: Nimm alle Tupel aus dem Kreuzprodukt, bei dem die Werte aller gleichnamigen Attribute übereinstimmen. Die gleichnamigen Spalten gehen in die Ergebnisrelation auch 3 2.3 Verbund 2 RELATIONENALGEBRA nur einmal ein, weil es keine zwei gleichnamigen Attribute geben kann (dies wird in der Praxis nicht von allen Datenbanksystemen gemacht). Eine weitere Variante des Verbundes ist der Theta-Verbund (θ-join). Hier ist nicht die Gleichheit von Attributwerten, sondern eine andere Bedingung erforderlich, z. B. eine ≤oder 6=-Bedingung. Theta-Verbund: R A 1 2 S B 7 3 R [B6=C] S A 1 1 2 2 B 7 7 3 3 C 1 3 7 1 D 7 4 3 7 C 7 1 3 D 3 7 4 R [B≤C] S A 1 2 2 B 7 3 3 C 7 7 3 D 3 3 4 In der Praxis werden Selektion, Projektion und Verbund natürlich häufig miteinander kombiniert. Über sogenannte Unterabfragen sind sogar noch deutlich komplexere Abfragen möglich. Siehe hierzu die Unterlagen zum Select-Statement von SQL. $Id: relationen.tex,v 1.5 2004/09/07 05:31:13 hj Exp $ 4