Database
 sql >> Datenbank >  >> RDS >> Database

Relationale Algebra

Bei der Arbeit mit dem relationalen Modell haben wir 2 Gruppen von Operationen, die wir verwenden können.

Die erste heißt relationale Algebra , und es ist eine prozedurale Sprache .

Darauf basiert SQL, und daher ist es sehr wichtig, es zu lernen, da SQL der De-facto-Standard für die Arbeit mit relationalen Datenbanken ist.

Die zweite heißt relationales Kalkül und anstatt prozedural zu sein, ist es eine deklarative Sprache . Es ist ein grundlegender Unterschied, wie wir mit Datenbanken interagieren, weil Sie der Datenbanksoftware nicht sagen, was sie tun soll , Sie sagen ihm einfach was Sie wollen , und lassen Sie es die Einzelheiten der Vorgehensweise klären.

Dies ist eine gängige Unterscheidung zwischen Programmiersprachen. Im modernen Frontend sagen wir, dass die Interaktion mit dem DOM in React deklarativ ist. Die Verwendung von Vanilla-JavaScript zum Ändern des DOM ist prozedural.

Sprachen wie Datalog, QBE und QUEL haben relationale Kalküle als Grundlage. Ich werde nicht darüber sprechen, weil ich denke, dass es im Vergleich zu dem praktischeren Ansatz von SQL eine viel nischenhaftere Vorgehensweise ist, aber Sie können es sich ansehen, wenn Sie möchten.

Lassen Sie uns nach dieser Einführung mit der relationalen Algebra fortfahren .

Wir haben 2 Arten von Operationen:

  • primäre Vorgänge
  • Join Operations

Primäre Operationen in der relationalen Algebra

Primäre Operationen sind:

  • Gewerkschaft um Daten aus zwei Tabellen zu erhalten, wobei eine Summe der Tupel generiert wird, solange die beiden Tabellen dieselben Spalten und Attributtypen (Domäne) haben.
  • Unterschied um Daten zu erhalten, die in der ersten Tabelle enthalten sind, aber nicht in der zweiten Tabelle, wodurch eine Differenz der Tupel erzeugt wird, solange die beiden Tabellen dieselben Spalten und Attributtypen (Domäne) haben.
  • kartesisches Produkt um Daten aus zwei Tabellen zu bekommen und eine einzige Tabelle zu generieren, die die Daten davon kombiniert, basierend auf einem Attributwert.
  • auswählen um nur einige der in einer Tabelle enthaltenen Tupel (Zeilen) basierend auf bestimmten Kriterien zu extrahieren.
  • Projekt um eine neue Tabelle zu erstellen, die nur ein oder mehrere Attribute (Spalten) einer bestehenden Tabelle enthält
  • umbenennen wird verwendet, um ein Attribut umzubenennen, wird verwendet, um Konflikte zu vermeiden, wenn mehrere Tabellen denselben Namen für unterschiedliche Daten haben

Join-Operationen in relationaler Algebra

Verknüpfungen sind wahrscheinlich die mächtigsten Operationen, die Sie mit relationaler Algebra ausführen können. Sie bauen auf primären Operationen auf und ermöglichen es Ihnen, Daten zu korrelieren, die in verschiedenen Relationen (Tabellen) enthalten sind.

Hinweis:Ich werde bald über Joins in der Praxis in einem DBMS sprechen, dies ist hauptsächlich Theorie.

Wir haben 2 Haupt-Join-Versionen:natürlicher Join und Theta Join . Alle anderen Versionen werden aus diesen 2 extrahiert.

Natürlicher Beitritt

Natürliche Verknüpfung korreliert zwei Beziehungen (Tabellen) und erstellt eine neue Tabelle basierend auf denselben Werten eines Attributs.

Wir brauchen zuerst zwei Relationen mit demselben Attributnamen (Spalte). Wenn die Werte in den Attributen in Relation A dann in den Attributen in Relation B nicht übereinstimmen, ist die Zeile nicht Teil des Ergebnisses und wird ignoriert.

Beispiel:

Beziehung A

Mitarbeiter-ID Name
1 Markieren
2 Tony
3 Rick

Beziehung B

Name des Managers Mitarbeiter-ID
Todd 1
Albert 2

Wir können eine natürliche Verknüpfung durchführen, um den Namen des Chefs für jeden Mitarbeiter zu erhalten:

Mitarbeiter-ID Name Name des Managers
1 Markieren Tod
2 Tony Albert

Da die Relationen den Attributnamen der Mitarbeiter-ID gemeinsam haben, ist er nur einmal im Ergebnis vorhanden, nicht zweimal.

Der in Beziehung A anwesende Mitarbeiter Nr. 3, Rick, ist in dieser Tabelle nicht enthalten, da es keinen entsprechenden Eintrag in Beziehung B gibt.

Theta-join

Ein Theta-Join ermöglicht es, einen Join basierend auf beliebigen Kriterien durchzuführen, um zwei Spalten in zwei verschiedenen Beziehungen zu vergleichen, nicht nur Gleichheit, wie dies beim natürlichen Join der Fall ist.

Es führt ein kartesisches Produkt aus zwei Tabellen durch und filtert die Ergebnisse basierend auf der Auswahl, die wir treffen möchten.

Equi-join

Der Equi-Join ist ein Theta-Join, bei dem die Auswahl auf der Gleichheit zwischen Attributwerten in den zwei verschiedenen Tabellen basiert.

Der Unterschied zum natürlichen Join besteht darin, dass wir auswählen können, welche Attributnamen (Spalten) wir vergleichen möchten.

Wir werden später viel mehr über Joins sprechen, wenn SQL eingeführt wird, damit wir sie in der Praxis verwenden können.