Datenbanken

Datenbank­operationen

 aufwärts

Die wichtigsten Operationen auf Datenbank­tabellen sind: Projektion, Selektion, kartesisches Produkt und Verbund. Alle vier Operationen werden in SQL in der einheitlichen Notation

SELECT   <Spalten>
FROM <Tabellen>
WHERE <Bedingung>

formuliert. Ergebnis einer Datenbank­operation ist in jedem Fall wiederum eine Tabelle.

 

Projektion

Definition:  Eine Projektion ist die Auswahl gewisser Spalten einer Tabelle.

R[i] ergibt eine Tabelle, die aus der i-ten Spalte der Tabelle R besteht. Statt einer Spaltennummer wird i.a. die Spalten­überschrift angegeben: R[spalte]. Es können auch mehrere Spalten in beliebiger Reihenfolge angegeben werden: R[spalte 1, ..., spalte n].

Beispiel:  

STUD[Name, MatrNrNameMatrNr
Meier10 15 20
Müller20 30 40
Meier50 60 70
Schulze10 20 30

Schreibweise in SQL:

SELECT Name, MatrNr
FROM STUD

 

Selektion

Definition:  Eine Selektion ist die Auswahl gewisser Zeilen einer Tabelle.

R[b] ist eine Tabelle, die aus allen Zeilen der Tabelle R besteht, die der Bedingung b genügen.

Beispiel:  

STUD[Nameungleich'Meier'] MatrNrNameGebDat
20 30 40Müller10.05.1971
10 20 30Schulze06.01.1975

Schreibweise in SQL:

SELECT   *
FROM STUD
WHERE Name<>'Meier'

Der * steht in SQL für "alle Spalten der Tabelle".

 

Kartesisches Produkt

Definition:  Das kartesische Produkt RkreuzS zweier Tabellen R und S ergibt eine Tabelle, deren Zeilen aus allen Kombinationen von Zeilen aus R und S bestehen.

Beispiel:  

R  a  b  c 
123
456
 
S  c  d 
37
48
69
 
RkreuzS  a  b R.cS.c d 
12337
12348
12369
45637
45648
45669

Schreibweise in SQL:

SELECT   *
FROM R, S

In den seltensten Fällen wird man das kartesische Produkt als alleinige Operation anwenden. Dagegen spricht schon die Größe der Ergebnis­tabelle. Sinnvoll ist das kartesische Produkt nur im Zusammenhang mit einer gleichzeitigen Selektion. Die sich daraus ergebende Operation ist der Verbund.

 

Verbund (Join)

Definition:  Ein Verbund zwischen zwei Tabellen R und S ist eine Selektion von gewissen Zeilen des kartesischen Produkts RkreuzS, die einer bestimmten Bedingung genügen. D.h. es werden nur bestimmte Kombinationen von Zeilen von R bzw. S gebildet.

R[b]S ist eine Tabelle mit allen Zeilen aus RkreuzS, die der Bedingung b genügen. R[b]S ist also eine andere Schreibweise für (RkreuzS)[b].

Beispiel:  R[a>S.c]S liefert alle Zeilen des kartesischen Produkts, in denen Wert von a größer als der Wert von S.c ist.

R  a  b  c 
123
456
 
S  c  d 
37
48
69
 
R[a>S.c]S  a  b R.cS.c d 
45637

Schreibweise in SQL:

SELECT  *
FROMR, S
WHEREa>S.c

Beispiel:  R[R.c>=S.c  und  d>7]S liefert alle Zeilen, in denen der Wert von R.c größer oder gleich dem Wert von S.c und der Wert von d größer als 7 ist.

R[R.c>=S.c  und  d>7]S  a  b R.cS.c d 
45648
45669

Schreibweise in SQL:

SELECT  *
FROMR, S
WHERER.c>=S.c
ANDd>7

 

Anwendung

Am häufigsten wird der Verbund zur Verknüpfung von Tabellen benutzt, die durch Beziehungen miteinander verbunden sind. Als Beispiel sei hier folgendes Entity-Relationship-Diagramm zugrundegelegt:

Entity-Relationship-Diagramm

Die Umsetzung dieses Konzeptes ergibt dann beispielweise folgende Tabellen:

STUD MatrNrNameGebDat
10 15 20Meier06.01.1975
20 30 40Müller10.05.1971
50 60 70Meier08.05.1975
10 20 30Schulze06.01.1975
 
HÖRT MatrNrVeranstNr
10 15 2083200
10 15 2087500
20 30 4083200
50 60 7087400
  
VERANST NrBezArtDauer
83200INF3V2
87400INF4V2
87500INF2LL2
82500DTV4
 

Die Tabellen STUD und VERANST haben als Schlüssel die Attribute MatrNr bzw. Nr. Die Beziehung HÖRT wird durch eine Tabelle realisiert, in der diese Attribute als Fremdschlüssel aufgeführt werden. Zum Beispiel hört der Student mit der Matrikelnummer 10 15 20 die Ver­anstaltungen Nr. 83200 und 87500.

Um nun aber die Namen derjenigen Studenten herauszufinden, die etwa die Ver­anstaltung INF3 besuchen, müssen die Tabellen miteinander verknüpft werden. Aus der Tabelle HÖRT allein geht dies nicht hervor; es muss in diesem Fall ein Verbund von drei Tabellen hergestellt werden. Kombiniert werden jeweils die Zeilen der drei Tabellen, in denen die Matrikelnummer und die Ver­anstaltungsnummer übereinstimmen. Eingeschränkt wird das ganze auf die Zeilen, in denen die Bezeichnung der Ver­anstaltung INF3 lautet.

Das SQL-Kommando lautet:

SELECT Name
FROM STUD, HÖRT, VERANST
WHERE STUD.MatrNr=HÖRT.MatrNr
AND VeranstNr=VERANST.Nr
AND Bez='INF3'

Das Ergebnis ist die Tabelle:

      Name
Meier
Müller

 

 

Weiter mit:   [Schlüssel und Normalform]  oder   up

 

homeH.W. Lang   FH Flensburg   lang@fh-flensburg.de   Impressum   ©   Created: 08.11.1999   Updated: 10.01.2008   Valid HTML 4.01 Transitional