Relationale Algebra
Die relationale Algebra ist eine Abfragesprache in relationalen Datenbanken . Die relationale Algebra wurde 1970 von Edgar Frank Codd , dem Forschungsdirektor des IBM Centers in San José, erfunden .
Dies ist die Theorie hinter DBMS- Abfragesprachen wie SQL . Der Satz von Codd besagt, dass die relationale Algebra der relationalen Kalküle ( Logik erster Ordnung ohne Funktionssymbole) äquivalent ist . Es ist auch äquivalent zu nicht-rekursivem Datalog ¬ ( Datalog mit Negation). Datalog ist eine Abfrage- und Regelsprache für deduktive Datenbanken.
Nach Abiteboul et al. ist die relationale Algebra konzeptionell eine "prozedurale" Sprache: Abfragen sind tatsächlich Sequenzen von Operationen, die die Antwort konstruieren. Dies steht im Gegensatz zu konzeptionell „deklarativen“ Sprachen wie Relationaler Kalkül und Datalog.
Relationales Modell
Im relationalen Modell werden Daten in Tabellen, auch Beziehungen genannt, gespeichert. Hier ist ein Beispiel für eine Beziehung:
Genauer gesagt wird eine Relation (im Sinne des Codd- Modells ) konstituiert:
- eines Diagramms, also alle Namen der Felder (hier Key, Name, Email) und der entsprechenden Typen (im Beispiel jeweils eine ganze Zahl, dann zwei Zeichenketten).
- Eine Erweiterung, d. h. der Inhalt der Tabelle, die eine Menge von Tupeln ist, deren Reihenfolge keine Rolle spielt.
Definition
Die prozedurale Sprache beinhaltet die Mengenoperationen der Mengenlehre auf Relationen sowie Operationen zum Zusammenführen/Projektieren von Relationen.
Operatoren festlegen
Die Mengenoperatoren sind die Vereinigung, der Durchschnitt, die Differenz und das kartesische Produkt.
Union
Die Vereinigung zweier Relationen in demselben Diagramm ist die Relation in diesem Diagramm, die genau die Vereinigung der Datensätze dieser beiden Relationen enthält. Formal .
R∪S={t:t∈R Ödu t∈S}{\ displaystyle R \ cup S = \ {t: t \ in R \ oder \ t \ in S \} \,}
Renault-Mitarbeiter
Nachname |
ICH WÜRDE |
Abteilung
|
---|
Harry |
3415 |
Finanzen
|
Ausfall |
2241 |
Verkauf
|
George |
3401 |
Finanzen
|
|
Citroën-Mitarbeiter
Nachname |
ICH WÜRDE |
Abteilung
|
---|
Bertrand |
0808 |
Verkauf
|
Donald |
0007 |
Verkauf
|
|
Renault U- Mitarbeiter Citroën-Mitarbeiter
Nachname |
ICH WÜRDE |
Abteilung
|
---|
Harry |
3415 |
Finanzen
|
Ausfall |
2241 |
Verkauf
|
George |
3401 |
Finanzen
|
Bertrand |
0808 |
Verkauf
|
Donald |
0007 |
Verkauf
|
|
Überschneidung
Der Schnittpunkt zweier Beziehungen in demselben Schema ist die Beziehung in diesem Schema, die genau die Datensätze enthält, die in beiden Beziehungen vorkommen. Formal .
R∩S={t:t∈R et t∈S}{\ displaystyle R \ cap S = \ {t: t \ in R \ und \ t \ in S \} \,}
Im Fußball registrierte Personen
Nachname |
ICH WÜRDE
|
---|
Harry |
3415
|
Ausfall |
2241
|
George |
3401
|
|
Personen, die sich für Klavierunterricht eingeschrieben haben
Nachname |
ICH WÜRDE
|
---|
Harry |
3415
|
Bertrand |
2
|
George |
3401
|
Yoda |
1000
|
|
Im Fußball angemeldete Personen ∩ Im Klavierunterricht angemeldete Personen
Nachname |
ICH WÜRDE
|
---|
Harry |
3415
|
George |
3401
|
|
Unterschied
Der Unterschied zwischen zwei Beziehungen auf demselben Schema besteht darin, dass die Beziehung auf diesem Schema genau die Datensätze enthält, die in der ersten Beziehung vorkommen, aber nicht in der zweiten. Formal . Zum Beispiel können wir die Personen berechnen, die im Fußball angemeldet sind, aber nicht im Klavierunterricht angemeldet sind:
R-S={t:t∈R et t∉S}{\ displaystyle RS = \ {t: t \ in R \ und \ t \ not \ in S \} \,}
Im Fußball registrierte Personen
Nachname |
ICH WÜRDE
|
---|
Harry |
3415
|
Ausfall |
2241
|
George |
3401
|
|
Personen, die sich für Klavierunterricht eingeschrieben haben
Nachname |
ICH WÜRDE
|
---|
Harry |
3415
|
Bertrand |
2
|
George |
3401
|
Yoda |
1000
|
|
Leute im Fußball registriert - Menschen in Klavierunterricht registriert
Nachname |
ICH WÜRDE
|
---|
Ausfall |
2241
|
|
kartesisches Produkt
Mit dem kartesischen Produkt zweier Relationen kopieren wir jedes Tupel der ersten Relation für jedes Tupel der zweiten. Formal .R×S={(r,so):r∈R et so∈S}{\ displaystyle R \ mal S = \ {(r, s): r \ in R \ und \ s \ in S \}}
Menschen
Nachname |
ICH WÜRDE
|
---|
Harry |
3415
|
Ausfall |
2241
|
|
Geschenke
Art |
Preis
|
---|
geliefert |
10
|
Kuchen |
20
|
Computer |
300
|
|
Menschen - Geschenke
Nachname |
ICH WÜRDE |
Art |
Preis
|
---|
Harry |
3415 |
geliefert |
10
|
Harry |
3415 |
Kuchen |
20
|
Harry |
3415 |
Computer |
300
|
Ausfall |
2241 |
geliefert |
10
|
Ausfall |
2241 |
Kuchen |
20
|
Ausfall |
2241 |
Computer |
300
|
|
Relationale Operatoren
Auswahl
Die Auswahl (oder Einschränkung) besteht darin, nur die Datensätze zu behalten, die eine bestimmte Bedingung erfüllen. Im Beispiel unten behalten wir nur Touristen, deren Stadt Paris ist.
- Daten: Eine Relation und eine Formel, die aus einer Kombination von Vergleichen und logischen Konnektoren gebildet werden.R{\ Anzeigestil R \,}F{\ Anzeigestil F \,}
- Ergebnis: erfüllt die Bedingung von , im Beispiel TouristenσF(R)={r∈R:r{\ displaystyle \ sigma _ {F} (R) = \ {r \ in R: r \,}F}{\ Anzeigestil F \} \,}σVichlle='Pbeimrichso'({\ displaystyle \ sigma _ {Stadt = 'Paris'} (\,}){\ Anzeigestil) \,}
- SQL-Äquivalent: WO
Touristen
idTourist |
NameT |
Stadt |
Sport
|
---|
1 |
Marc |
Paris |
Ski
|
2 |
Jeans |
Toulouse |
Tennis
|
3 |
Franc |
Marseille |
Fußball
|
4 |
Thomas |
Lyon |
Segel
|
5 |
Max |
Paris |
Golf
|
|
Auswahl an Touristen, bei denen die Stadt Paris wert ist
idTourist |
NameT |
Stadt |
Sport
|
---|
1 |
Marc |
Paris |
Ski
|
5 |
Max |
Paris |
Golf
|
|
Projektion
-
Die Projektion ermöglicht es, nur bestimmte Attribute beizubehalten. Im folgenden Beispiel behalten wir nur die Attribute NameT und City der Tourist-Beziehung bei.
- Daten: Eine Beziehung und ein Satz von Attributen vonR{\ Anzeigestil R \,}BEIM{\ Anzeigestil A \,}R{\ Anzeigestil R \,}
- Ergebnis: Dies ist die Relation, bei der wir nur die Attribute von , zum Beispiel Touristen, berücksichtigen considerπBEIM(R){\ displaystyle \ pi _ {A} (R) \,}R{\ Anzeigestil R \,}BEIM{\ Anzeigestil A \,}πNICHTÖichT,Vichlle({\ displaystyle \ pi _ {NameT, Stadt} (\,}){\ Anzeigestil) \,}
- SQL-Äquivalent: SELECT
Touristen
idTourist |
NameT |
Stadt |
Sport
|
---|
1 |
Marc |
Paris |
Ski
|
2 |
Jeans |
Toulouse |
Tennis
|
3 |
Franc |
Marseille |
Fußball
|
4 |
Thomas |
Lyon |
Segel
|
5 |
Max |
Paris |
Golf
|
|
Projektion der touristischen Beziehung auf die Attribute NomT und Ville
NameT |
Stadt
|
---|
Marc |
Paris
|
Jeans |
Toulouse
|
Franc |
Marseille
|
Thomas |
Lyon
|
Max |
Paris
|
|
Umbenennung
-
Umbenennen :
- Daten: Eine Beziehung und ein Attribut vonR{\ Anzeigestil R \,}b{\ displaystyle b \,}R{\ Anzeigestil R \,}
- Ergebnis:, das ist die Beziehung mit umbenanntρbeim/b(R){\ displaystyle \ rho _ {a / b} (R) \,}R{\ Anzeigestil R \,}b{\ displaystyle b \,}beim{\ Anzeigestil a \,}
- SQL-Äquivalent: AS
Beitreten
-
Beitreten :
- Daten: zwei Beziehungen undR{\ Anzeigestil R \,}S{\ Anzeigestil S}
- Ergebnis: R⋈S={(beim,b,vs):(beim,b)∈R et (b,vs)∈S}{\ displaystyle R \ Bowtie S = \ {(a, b, c) :( a, b) \ in R \ und \ (b, c) \ in S \} \,}
- SQL-Äquivalent: JOIN
Touristen
idTourist |
NameT |
Stadt |
Sport
|
---|
1 |
Marc |
Paris |
Ski
|
2 |
Jeans |
Toulouse |
Tennis
|
3 |
Franc |
Marseille |
Fußball
|
4 |
Thomas |
Lyon |
Segel
|
5 |
Max |
Paris |
Golf
|
|
Reiseziele
idTourist |
StadtD
|
---|
1 |
Cannes
|
2 |
Ibiza
|
4 |
Tokio
|
|
Touristen ⋈ Reiseziele
idTourist |
NameT |
Stadt |
Sport |
StadtD
|
---|
1 |
Marc |
Paris |
Ski |
Cannes
|
2 |
Jeans |
Toulouse |
Tennis |
Ibiza
|
4 |
Thomas |
Lyon |
Segel |
Tokio
|
|
Einteilung
-
Division : Als Eingabe werden zwei Relationenund verwendet.
R(x1,...,xich,ja1,...,jap){\ displaystyle R (x_ {1}, ..., x_ {m}, y_ {1}, ..., y_ {p}) \,}S(ja1,...,jap){\ displaystyle S (y_ {1}, ..., y_ {p}) \,}
- Somit kann jedes Tupel in zwei Tupel zerlegt werden , mit schema und schema . und gibt die Schematabelle wie . Die Division läuft darauf hinaus, „alle x so zu geben, dass für alle y ...“r∈R{\ Anzeigestil r \ in R \,}r=(t,so){\ Anzeigestil r = (t, s) \,}t=(t1,...,tich){\ displaystyle t = (t_ {1}, ..., t_ {m}) \,}X={x1,...,xich}{\ Displaystil X = \ {x_ {1}, ..., x_ {m} \} \,}so=(so1,...,sop){\ displaystyle s = (s_ {1}, ..., s_ {p}) \,}ja={ja1,...,jap}{\ displaystyle y = \ {y_ {1}, ..., y_ {p} \} \,}X{\ Anzeigestil X \,}R/S={t:∀so∈S, (t,so)∈R}{\ displaystyle R / S = \ {t: \ forall s \ in S, \ (t, s) \ in R \} \,}
Ausdruckskraft
Die SPC-Algebra (Auswahl, Projektion und kartesisches Produkt) entspricht dem Konjunktivkalkül (Relationalkalkül ohne Disjunktion und ohne Negation): Sie ist eine der Versionen des Codd-Theorems . Die SPCU-Algebra (die SPC-Algebra mit der Addition von Vereinigung und Differenz) entspricht dem gesamten relationalen Kalkül: Sie ist eine andere Version des Satzes von Codd . Der Equijoin Kann mit einem kartesischen Produkt ausgedrückt werden, gefolgt von einer Auswahl und dann einer Projektion.
Optimierung
Hier sind Rewrite-Regeln zum Umwandeln eines relationalen Algebra-Ausdrucks in einen anderen äquivalenten Ausdruck.
Implementierung
Allerdings funktionieren relationale Datenbanken nicht ganz nach den festgelegten Regeln der relationalen Algebra. In der Tat, wenn man keinen Primärschlüssel definiert , ist es möglich, mehrere identische Zeilen in eine Tabelle einzufügen , die für eine perspektivische Ensembleliste keine Bedeutung hat: Ein Element gehört zu einer Menge oder gehört nicht zu einer Menge. Wenn wir die Regeln von Mengen strikt anwenden wollen, müssen wir jedes Mal, wenn eine Tabelle hinzugefügt wird , überprüfen, ob die eingeführten Zeilen nicht bereits vorhanden sind.
Spezifische Objekte des Modells
Es handelt sich hier um die Bestimmung von Domänen (dh Atomtyp):
- Numerisch: Integer oder Real ( SQL : Int, Float usw.);
- Zeichenkette (SQL: Char (20), VarChar (32) usw.);
- Datum (SQL: DATUM, UHRZEIT, JAHR usw.);
- Aufgezählter Typ.
Hinweise und Referenzen
-
(in) Grundlagen von Datenbanken: Die logische Ebene , Addison-Wesley Longman Publishing Co., Inc.1995, 685 S. ( ISBN 978-0-201-53771-0 , online lesen ) , p. 10
-
(in) Grundlagen von Datenbanken: Die logische Ebene , Addison-Wesley Longman Publishing Co., Inc.1995, 685 S. ( ISBN 978-0-201-53771-0 , online lesen ) , Teil B - Grundlagen: Relationale Abfragesprachen - p. 35
-
" Datenbanken und SQL lernen " , auf Developpez.com (Zugriff am 19. Mai 2019 )
-
http://www.scritube.com/limba/franceza/Aide-mmoire-sur-les-bases-de-d21481108.php
Siehe auch
Externe Links
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">