Suche…


Überblick

Relational Algebra ist keine ausgewachsene SQL- Sprache, sondern ein Weg, um theoretisches Verständnis der relationalen Verarbeitung zu erlangen. Daher sollte es nicht auf physische Entitäten wie Tabellen, Datensätze und Felder verweisen. Es sollte auf abstrakte Konstrukte wie Beziehungen, Tupel und Attribute Bezug nehmen. Wenn ich das sage, werde ich die akademischen Begriffe in diesem Dokument nicht verwenden und werde mich an die bekannteren Laienbegriffe halten - Tabellen, Aufzeichnungen und Felder.

Bevor wir loslegen, einige Regeln der relationalen Algebra:

  • Die in der relationalen Algebra verwendeten Operatoren arbeiten mit ganzen Tabellen und nicht mit einzelnen Datensätzen.
  • Das Ergebnis eines relationalen Ausdrucks ist immer eine Tabelle (dies wird Schließungseigenschaft genannt ).

In diesem Dokument werde ich auf die folgenden zwei Tabellen Bezug nehmen:

Beispieltabellen

WÄHLEN

Der select- Operator gibt eine Teilmenge der Haupttabelle zurück.
Wählen Sie <table> wo <Bedingung>

Untersuchen Sie zum Beispiel den Ausdruck:

Wählen Sie Personen aus, bei denen DepartmentID = 2 ist

Dies kann geschrieben werden als:
Geben Sie hier die Bildbeschreibung ein

Dies führt zu einer Tabelle, deren Datensätze alle Datensätze der People- Tabelle umfassen, deren Abteilungs- ID gleich 2 ist:
Geben Sie hier die Bildbeschreibung ein

Bedingungen können auch verbunden werden, um den Ausdruck weiter einzuschränken:

Wählen Sie Personen, bei denen StartYear> 2005 und DepartmentID = 2 sind

ergibt die folgende Tabelle:
Geben Sie hier die Bildbeschreibung ein

PROJEKT

Der Projektbediener gibt verschiedene Feldwerte aus einer Tabelle zurück.
Projekt <Tabelle> über <Feldliste>

Untersuchen Sie beispielsweise den folgenden Ausdruck:
Projekt Menschen über StartYear

Dies kann geschrieben werden als:
Geben Sie hier die Bildbeschreibung ein

Dies führt zu einer Tabelle mit den unterschiedlichen Werten, die im Feld StartYear der Tabelle People enthalten sind .
Geben Sie hier die Bildbeschreibung ein

Doppelte Werte werden aus der resultierenden Tabelle entfernt, da die Schließungseigenschaft eine relationale Tabelle erstellt: Alle Datensätze in einer relationalen Tabelle müssen eindeutig sein.

Wenn die Feldliste mehr als ein einzelnes Feld umfasst dann die resultierende Tabelle ist eine deutliche Version dieser Felder.
Projekt People over StartYear, wird DepartmentID zurückgegeben:
Geben Sie hier die Bildbeschreibung ein
Ein Datensatz wird aufgrund der Duplizierung von 2006 StartYear und 1 DepartmentID entfernt .

GEBEN

Relationale Ausdrücke können durch die Benennung der einzelnen Ausdrücke unter Verwendung der Angabe Schlüsselwort miteinander verkettet werden, oder durch Einbetten eines Ausdrucks innerhalb der anderen.

<relationaler Algebra-Ausdruck> mit <Aliasname>

Betrachten Sie zum Beispiel die folgenden Ausdrücke:
Wählen Sie Personen aus, bei denen DepartmentID = 2 ist und geben Sie A
Projekt A über PersonName , das B gibt

Dies führt zu Tabelle B unten, wobei Tabelle A das Ergebnis des ersten Ausdrucks ist.
Geben Sie hier die Bildbeschreibung ein

Der erste Ausdruck wird ausgewertet und die resultierende Tabelle erhält den Alias ​​A. Diese Tabelle wird dann innerhalb des zweiten Ausdrucks verwendet, um der finalen Tabelle den Alias ​​von B zu geben.

Eine andere Möglichkeit, diesen Ausdruck zu schreiben, besteht darin, den Tabellenaliasnamen im zweiten Ausdruck durch den gesamten Text des ersten in Klammern gesetzten Ausdrucks zu ersetzen:
Projekt (Personen auswählen, bei denen DepartmentID = 2 ist) über PersonName mit B

Dies wird als verschachtelter Ausdruck bezeichnet .

NATÜRLICHER JOIN

Bei einem natürlichen Join werden zwei Tabellen zusammengefügt, wobei ein gemeinsames Feld zwischen den Tabellen verwendet wird.

Join <Tabelle 1> und <Tabelle 2> wobei <Feld 1> = <Feld 2>
Angenommen, <Feld 1> befindet sich in <Tabelle 1> und <Feld 2> befindet sich in <Tabelle 2>.

Beispielsweise wird der folgende Join-Ausdruck Personen und Abteilungen basierend auf den Abteilungs- ID- und ID- Spalten in den jeweiligen Tabellen hinzufügen:
Treten Sie Personen und Abteilungen bei, für die DepartmentID = ID gilt

Geben Sie hier die Bildbeschreibung ein

Beachten Sie, dass nur DepartmentID aus der People- Tabelle und keine ID aus der Department- Tabelle angezeigt wird. Es muss nur eines der Felder angezeigt werden, das verglichen wird. Dies ist im Allgemeinen der Feldname aus der ersten Tabelle der Verknüpfungsoperation.

Obwohl in diesem Beispiel nicht gezeigt, ist es möglich, dass das Verknüpfen von Tabellen zu zwei Feldern mit derselben Überschrift führt. Zum Beispiel, wenn ich die Überschrift Namen verwendet hatte den Personnamen und Dept Felder zu identifizieren (dh die Person Namen und den Namen der Abteilung zu identifizieren). In dieser Situation verwenden wir den Tabellennamen, um die Feldnamen anhand der Punktnotation zu qualifizieren: People.Name und Departments.Name

join kombiniert mit select und project kann zusammen verwendet werden, um Informationen abzurufen:

beitreten Personen und Abteilungen, bei denen DepartmentID = ID A ergibt
Wählen Sie A mit StartYear = 2005 und Dept = 'Production' aus, wobei B angezeigt wird
Projekt B über PersonName , das C gibt

oder als kombinierter Ausdruck:

Projekt (wählen (Join Personen und Abteilungen , in denen DepartmentID = ID) , in dem startyear = 2005 und Dept = ‚Produktion‘) über Person C geben

Dies führt zu dieser Tabelle:
Geben Sie hier die Bildbeschreibung ein

ALIAS

TEILEN

UNION

ÜBERSCHNEIDUNG

UNTERSCHIED

UPDATE (: =)

MAL



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow