Einführung in Datenbanken Schlüssel Definition: Ein Schlüssel (key) einer Relation r(R) ist eine Teilmenge K von R, T il R so dass d für fü jje zweii verschiedene Tupeln t1 und t2 ∈ r gilt: - t1(K) ≠ t2(K) und - keine echte Teilmenge K' von K hat diese Eigenschaft. Eigenschaft K ist ein Oberschlüssel ((superkey) p y) der Relation,, wenn K einen Schlüssel enthält. 33 Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken Schlüssel Beispiel: Anzeigetafel am Flughafen Flüge FlugNr von nach Abflug Ankunft 83 JFK O‘Hare O‘H 11:30am 11 30 1:43pm 1 43 84 O‘Hare JFK 3:00pm 5:55pm 109 JFK L Angeles A l Los 9 50 9:50pm 2 25 2:25am 213 JFK Boston 11:43am 12:45pm 214 B t Boston JFK 2 20 2:20pm 3 12 3:12pm • {FLUGNR} und {VON,NACH} sind mögliche Schlüssel. • {VON} alleine ll i ist i t kein k i Schlüssel. S hlü l • {FLUGNR,VON} ist Oberschlüssel aber keine Schlüssel, weil bereits {FLUGNR} Schlüssel ist. 34 Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken Schlüssel D fi iti Definition: Schlüssel, die explizit zu einem Relationenschema angeführt sind, sind heißen ausgezeichnete Schlüssel (designated keys). keys) Im Allgemeinen wird ein Schlüssel als Primärschlüssel ausgezeichnet. Dieser wird im Relationenschema durch g Unterstreichen gekennzeichnet. B i i l Anzeigetafel Beispiel: A i t f l am Flughafen Fl h f FLUEGE ( FLUGNR, VON, NACH, ABFLUG, ANKUNFT) 35 Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken SQL – Structured Query Language Um die Inhalte einer (relationalen) Datenbank abzufragen benötigt man eine spezielle Sprache. Durch die von IBM entwickelte Structured Query Language (SQL) lassen sich verschiedene Relationen (Tabellen) kombinieren und auch komplexe Anfragen recht einfach realisieren. Im Folgenden wird die Funktionsweise von SQL am Beispiels eines Flugplans erläutert. erläutert 36 Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken SQL Beispiel: Flugplan FLUEGE ( FLUGNR, VON, NACH, ABFLUG, ANKUNFT)) Zusätzlich werden zwei weitere Relationen erstellt: • BENUTZBAR ((FLUGNR,, MASCHINE)) Diese Relation gibt an, welche Maschine für welchen Flug benutzt werden kann. • ZUGELASSEN (PILOT, MASCHINE) Diese Relation gibt an, welcher Pilot welche Maschine fliegen kann. 37 Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken SQL Beispiel: Flugplan Fluege FlugNr von 38 nach Abflug Ankunft 83 JFK O‘Hare 11:30am 1:43pm 84 O‘Hare JFK 3:00pm 5:55pm 109 JFK Los Angeles 9:50pm 2:25am 213 JFK Boston 11:43am 12:45pm 214 Boston JFK 2:20pm 3:12pm Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken SQL Beispiel: Flugplan benutzbar FlugNr l zugelassen Pil t Pilot M hi Maschine Simmons Airbus 300 Simmons Transall 39 Barth Boeing 747 Hill Airbus 300 Hill Boeing 747 Grundlagen der Programmierung II Maschine 83 Airbus 300 83 Boeing 747 84 Airbus 300 84 Boeing 747 109 Transall DBIS – SS 2006 Einführung in Datenbanken SQL - Anfrage S t kti h G Syntaktische Grundform: df select A1, ... ,An Rm from R1, ... ,R where Bedingung ; A1,...,A An Attribute und R1,...,R Rm Relationen. Relationen 40 Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken SQL - Anfrage S t kti h G Syntaktische Grundform: df select A1, ... ,An from R1, ... ,R Rm where Bedingung ; select Klausel spezifiziert die Attribute, Attribute die das • Die select-Klausel Ergebnis enthalten soll. Werden alle Attribute gewünscht, schreibt man statt der Attributnamen das Symbol y *. • Die from-Klausel spezifiziert, mit welchen Relationen gearbeitet werden soll. • Die where-Klausel ist optional und schränkt das Ergebnis auf Tupel mit einer bestimmte Eigenschaft ein. 41 Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken SQL - Projektion Beispiel: Flugplan „Alle Paare von Ursprungs- und Zielflughäfen“ select VON, NACH from FLUEGE; 42 VON NACH JFK O‘Hare O‘Hare JFK JFK Los Angeles JFK Boston Boston JFK Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken SQL - Projektion • Diese Art der Abfrage, Abfrage bei der ausschließlich auf bestimmte Attribute eingeschränkt wird, nennt man Projektion. Projektion • Projektionen verringern die Zahl der Attribute. Bei der Durchführung einer Projektion können dadurch doppelte Tupel (Duplikate) entstehen. erwünscht müssen sie durch • Sind keine Duplikate erwünscht, den Zusatz distinct (auch unique) entfernt werden. select distinct Attribut1,Attribut2 Attribut1 Attribut2 from Relation; 43 Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken SQL - Selektion Beispiel: Flugplan „Alle Flüge, die am Flughafen ’JFK’ starten“ select * from FLUEGE where VON = ‘JFK’; 44 FLUGNR VON NACH ABFLUG ANKUNFT 083 JFK O‘Hare 11:30am 1:45pm 109 JFK Los Angeles 9:50pm 2:25am 213 JFK Boston 12:45pm 11:43am Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken SQL - Selektion • Diese Art der Abfrage, bei der man nur Tupel mit einer bestimmten Eigenschaft auswählt, nennt man Selektion. where-Klausel. • Die Spezifikation erfolgt in der where Klausel. Bezüglich der Bedingung sind Vergleiche mit den üblichen Operatoren ((=,, <,...), ,...), die logischen Verknüpfungen and, or und not sowie beliebige Klammerungen g ggestattet. • Die Selektion verringert i.A. die Zahl der Tupel. 45 Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken SQL - Selektion Beispiel: B i i l Flugplan Fl l „Alle Flüge, die von ’JFK’ nach ‘Boston‘ fliegen“ select * from FLUEGE where VON = ‘JFK’ and NACH=‘BOSTON’; 46 FLUGNR VON NACH ABFLUG ANKUNFT 213 JFK Boston 11:43am 12:45pm Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken SQL - Selektion Beispiel: B i i l Flugplan Fl l „Alle Flüge, die vor 1:00 pm ankommen“ select * from FLUEGE where ANKUNFT < ‘1:00pm’; 47 FLUGNR VON NACH 109 JFK Los Angeles g 9:50pm p Grundlagen der Programmierung II ABFLUG ANKUNFT 2:25am DBIS – SS 2006 Einführung in Datenbanken SQL – Join (Verbund) Ein Join oder Verbund verknüpft zwei (oder mehr) Relationen auf ihren gemeinsamen Attributen. Beispiel: Flugplan „Welche Kombinationsmöglichkeiten von Flügen und Piloten gibt es“ Relationen: BENUTZBAR ((FLUGNR, MASCHINE)) ZUGELASSEN (PILOT, MASCHINE) Anfrage: select * from BENUTZBAR, ZUGELASSEN; 48 Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken SQL – Join (Verbund) Beispiel: Flugplan 49 FLUG MASCHINE PILOT 083 Airbus Ai b 300 Simmons Si 083 Airbus 300 Hill 083 B i 747 Boeing B th Barth 083 Boeing 747 Hill 084 Airbus 300 Simmons 084 Airbus 300 Hill 084 Boeing 747 Barth 084 Boeing 747 Hill 109 Transall Simmons Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken SQL - Verbund Es ist möglich, Attribute miteinander zu vergleichen, die nicht den selben Namen haben. Wichtig ist nur der selbe Wertebereich! Übliche Syntax: select * from Relation1, Relation2 where Relation1.A1 = Relation2.A2; 50 Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken SQL - Verbund Beispiel: Flugplan Gegeben sei folgende zusätzliche Relation: PILOTEN NAME WOHNORT Simmons Los Angeles Miller Frankfurt Barth Boston Hill Boston „Welche Piloten wohnen im Ort eines Zielflughafens?“ select FLUGNR, FLUGNR NAME, NAME WOHNORT from FLUEGE, PILOTEN where FLUEGE.NACH = PILOTEN.WOHNORT; 51 Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken SQL - Verbund Beispiel: Flugplan – Ergebnis: 52 FLUGNR NAME WOHNORT 109 Si Simmons L Angeles A l Los 213 Barth Boston 213 Hill Boston Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken SQL - Aggregatfunktionen Eine Besonderheit von SQL sind die Operatoren, die Berechnungen über Gruppen von Tupeln anstellen. Die folgenden Aggregatfunktionen können in der select-Klausel anstelle von einzelnen Attributen b werden: d angegeben – sum(Attribut) Æ Summe – max(Attribut) Æ Maximum – min(Attribut) Æ Minimum – avg(Attribut) Æ Durchschnitt ( ) Æ Anzahl – count(Attribut) 53 Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken SQL - Aggregatfunktionen Beispiel: Flugplan Gegeben sei eine zusätzliche Relation: GEHALT 54 NAME EURO-BETRAG Simmons 10.000 Miller 12.000 Barth 10.000 Hill 13.000 Grundlagen der Programmierung II DBIS – SS 2006 Einführung in Datenbanken SQL - Aggregatfunktionen Beispiele: Flugplan f g „Gesamtkosten ffür die Bezahlung g der Piloten“ Anfrage: select sum(Euro-Betrag) from Gehalt; Anfrage: „Zahl der Piloten mit einem Gehalt über 11.000 €“ select count(*) count( ) from Gehalt where Euro-Betrag > 11.000; 55 Grundlagen der Programmierung II DBIS – SS 2006