Internships in India (Accenture) Falls Sie ein Internship in India machen möchten, bitte setzen Sie sich mit mir in Verbindung: Zeitraum: Juni - September 2008 (in vorlesungsfreier Zeit) Orte: Bangalore, Chennai oder Hyderabad Voraussetzung sehr guter Studienfortschritt in den ersten beiden Jahren (auch offen für Masterstudierende) sehr gute Englischkenntnisse Programmierkenntnisse (Java, SQL) Das ist wirklich ein Abenteuer!!! (Wenn ich Sie wäre, würde ich es auch machen.)
Grundlagen des relationalen Modells Seien D 1, D 2,..., D n Domänen (Wertebereiche) Relation: R D 1 x... x D n Bsp.: Telefonbuch string x string x integer Tupel: t R Bsp.: t = („Mickey Mouse“, „Main Street“, 4711) Schema: legt die Struktur der gespeicherten Daten fest Bsp.: Telefonbuch: {[Name: string, Adresse: string, Telefon#:integer]}
Telefonbuch NameStraßeTelefon# Mickey MouseMain Street4711 Mini MouseBroadway94725 Donald DuckBroadway Ausprägung: der aktuelle Zustand der Datenbasis Schlüssel: minimale Menge von Attributen, deren Werte ein Tupel eindeutig identifizieren Primärschlüssel: wird unterstrichen Einer der Schlüsselkandidaten wird als Primärschlüssel ausgewählt Hat eine besondere Bedeutung bei der Referenzierung von Tupeln
Studenten Assistenten MatrNr PersNr Semester Name Fachgebiet Note hören prüfen arbeitenFür Professoren Vorlesungen lesen voraussetzen SWS VorlNr Titel Raum Rang PersNr Nach- folger Vorgänger Name Uni-Schema 1 N 1 1 N N N M M MN
Relationale Darstellung von Entitytypen Studenten:{[MatrNr:integer, Name: string, Semester: integer]} Vorlesungen: {[VorlNr:integer, Titel: string, SWS: integer]} Professoren: {[PersNr:integer, Name: string, Rang: string, Raum: integer]} Assistenten: {[PersNr:integer, Name: string, Fachgebiet: string]}
Relationale Darstellung von Beziehungen A 11 E1E1 R... AR1AR1 EnEn E2E2 An1An1 A R:{[]}
Beziehungen unseres Beispiel- Schemas hören : {[MatrNr: integer, VorlNr: integer]} lesen : {[PersNr: integer, VorlNr: integer]} arbeitenFür : {[AssistentenPersNr: integer, ProfPersNr: integer]} voraussetzen : {[Vorgänger: integer, Nachfolger: integer]} prüfen : {[MatrNr: integer, VorlNr: integer, PersNr: integer, Note: decimal]}
Schlüssel der Relationen hören : {[MatrNr: integer, VorlNr: integer]} lesen : {[PersNr: integer, VorlNr: integer]} arbeitenFür : {[AssistentenPersNr: integer, ProfPersNr: integer]} voraussetzen : {[Vorgänger: integer, Nachfolger: integer]} prüfen : {[MatrNr: integer, VorlNr: integer, PersNr: integer, Note: decimal]}
Ausprägung der Beziehung hören Studenten MatrNr hören MatrNrVorlNr Vorlesungen VorlNr Studenten hören Vorlesungen M N MatrNr VorlNr
Verfeinerung des relationalen Schemas 1:N-Beziehung Initial-Entwurf Vorlesungen : {[VorlNr, Titel, SWS]} Professoren : {[PersNr, Name, Rang, Raum]} lesen: {[VorlNr, PersNr]} Professoren Vorlesungen lesen 1 1 N
Verfeinerung des relationalen Schemas 1:N-Beziehung Initial-Entwurf Vorlesungen : {[VorlNr, Titel, SWS]} Professoren : {[PersNr, Name, Rang, Raum]} lesen: {[VorlNr, PersNr]} Verfeinerung durch Zusammenfassung Vorlesungen : {[VorlNr, Titel, SWS, gelesenVon]} Professoren : {[PersNr, Name, Rang, Raum]} Regel Relationen mit gleichem Schlüssel kann man zusammenfassen aber nur diese und keine anderen!
Ausprägung von Professoren und Vorlesung Professoren PersNrNameRangRaum 2125SokratesC RusselC KopernikusC PopperC AugustinusC CurieC KantC47 Vorlesungen VorlNrTitelSWSGelesen Von 5001Grundzüge Ethik Erkenntnistheorie Mäeutik Logik Wissenschaftstheorie Bioethik Der Wiener Kreis Glaube und Wissen Die 3 Kritiken42137 Professoren Vorlesungen lesen 1 N
Vorsicht: So geht es NICHT Professoren PersNrNameRangRaumliest 2125SokratesC SokratesC SokratesC AugustinusC CurieC436?? Vorlesungen VorlNrTitelSWS 5001Grundzüge4 5041Ethik4 5043Erkenntnistheorie3 5049Mäeutik2 4052Logik4 5052Wissenschaftstheorie3 5216Bioethik2 5259Der Wiener Kreis2 5022Glaube und Wissen2 4630Die 3 Kritiken4 Professoren Vorlesungen lesen 1 N
Vorsicht: So geht es NICHT: Folgen Anomalien Update-Anomalie: Was passiert wenn Sokrates umzieht Lösch-Anomalie: Was passiert wenn „Glaube und Wissen“ wegfällt Einfügeanomalie: Curie ist neu und liest noch keine Vorlesungen Professoren PersNrNameRangRaumliest 2125SokratesC SokratesC SokratesC AugustinusC CurieC436?? Vorlesungen VorlNrTitelSWS 5001Grundzüge4 5041Ethik4 5043Erkenntnistheorie3 5049Mäeutik2 4052Logik4 5052Wissenschaftstheorie3 5216Bioethik2 5259Der Wiener Kreis2 5022Glaube und Wissen2 4630Die 3 Kritiken4
Relationale Modellierung der Generalisierung Fachgebiet Assistenten Professoren RaumRang is_a Angestellte PersNrName Angestellte: {[PersNr, Name]} Professoren: {[PersNr, Rang, Raum]} Assistenten: {[PersNr, Fachgebiet]}
Relationale Modellierung schwacher Entitytypen Studenten ablegen Prüfungen 1 N Note PrüfTeil MatrNr Vorlesungen umfassen VorlNr abhalten Professoren PersNr NN MM Prüfungen: {[MatrNr: integer, PrüfTeil: string, Note: integer]} umfassen: {[MatrNr: integer, PrüfTeil: string, VorlNr: integer]} abhalten: {[MatrNr: integer, PrüfTeil: string, PersNr: integer]}
Man beachte, dass in diesem Fall der (global eindeutige) Schlüssel der Relation Prüfung nämlich MatrNr und PrüfTeil als Fremdschlüssel in die Relationen umfassen und abhalten übernommen werden muß.
Die relationale Uni-DB Professoren PersNrNameRangRaum 2125SokratesC RusselC KopernikusC PopperC AugustinusC CurieC KantC47 Studenten MatrNrNameSemester 24002Xenokrates Jonas Fichte Aristoxenos Schopenhauer Carnap Theophrastos Feuerbach2 Vorlesungen VorlNrTitelSWSgelesen von 5001Grundzüge Ethik Erkenntnistheorie Mäeutik Logik Wissenschaftstheorie Bioethik Der Wiener Kreis Glaube und Wissen Die 3 Kritiken42137 voraussetzen VorgängerNachfolger hören MatrNrVorlNr Assistenten PerslNrNameFachgebietBoss 3002PlatonIdeenlehre AristotelesSyllogistik WittgensteinSprachtheorie RhetikusPlanetenbewegung NewtonKeplersche Gesetze SpinozaGott und Natur2126 prüfen MatrNrVorlNrPersNrNote
Professoren PersNrNameRangRaum 2125SokratesC RusselC KopernikusC PopperC AugustinusC CurieC KantC47 Studenten MatrNrNameSemester 24002Xenokrates Jonas Fichte Aristoxenos Schopenhauer Carnap Theophrastos Feuerbach2 Vorlesungen VorlNrTitelSWSgelesen Von 5001Grundzüge Ethik Erkenntnistheorie Mäeutik Logik Wissenschaftstheorie Bioethik Der Wiener Kreis Glaube und Wissen Die 3 Kritiken42137 voraussetzen VorgängerNachfolger hören MatrNrVorlNr Assistenten PerslNrNameFachgebietBoss 3002PlatonIdeenlehre AristotelesSyllogistik WittgensteinSprachtheorie RhetikusPlanetenbewegung NewtonKeplersche Gesetze SpinozaGott und Natur2126 prüfen MatrNrVorlNrPersNrNote
Die relationale Algebra Selektion Pojektion x Kreuzprodukt A Join (Verbund) Umbenennung Mengendifferenz Division Vereinigung Mengendurchschnitt F Semi-Join (linker) E Semi-Join (rechter) C linker äußerer Join D rechter äußerer Join
Formale Definition der Algebra Basisausdrücke Relation der Datenbank oder konstante Relationen Operationen Selektion: p (E 1 ) Projektion: S (E 1 ) Kartesisches Produkt: E 1 x E 2 Umbenennung: V (E 1 ), A B (E 1 ) Vereinigung: E 1 E 2 Differenz: E 1 - E 2
Die relationalen Algebra- Operatoren Semester > 10 (Studenten) MatrNrNameSemester 24002Xenokrates Jonas12 Semester > 10 (Studenten) Selektion Rang (Professoren) Rang C4 C3 Rang (Professoren) Projektion
Kartesisches Produkt: Minibeispiel L ABC a1a1 b1b1 c1c1 a2a2 b2b2 c2c2 R DE d1d1 e1e1 d2d2 e2e2 Resultat ABCDE a1a1 b1b1 c1c1 d1d1 e1e1 a1a1 b1b1 c1c1 d2d2 e2e2 a2a2 b2b2 c2c2 d1d1 e1e1 a2a2 b2b2 c2c2 d2d2 e2e2 x =
Die relationalen Algebra- Operatoren Professorenhören PersNrNameRangRaumMatrNrVorlNr 2125SokratesC SokratesC KantC Kartesisches Produkt Professoren x hören Problem: riesige Zwischenergebnisse Beispiel: (Professoren x hören) "bessere" Operation: Join (siehe unten)
Der natürliche Verbund (Join) Gegeben seien: R(A 1,..., A m, B 1,..., B k ) S(B 1,..., B k, C 1,..., C n ) R A S = A1,..., Am, R.B1,..., R.Bk, C1,..., Cn ( R.B1=S. B1 ... R.Bk = S.Bk (RxS)) R A S R SR SS R A1A1 A2A2...AmAm B1B1 B2B2 BkBk C1C1 C2C2 CnCn
Drei-Wege-Join (Studenten A hören) A Vorlesungen MatrNrNameSemesterVorlNrTitelSWSgelesenVon 26120Fichte105001Grundzüge Jonas125022Glaube und Wissen Carnap34052Wissenschftstheorie
Allgemeiner Join (Theta-Join) Gegeben seien folgende Relationen(-Schemata) R(A1,..., An) und S(B1,..., Bm) R A S RS A1A1 A2A2... AnAn B1B1 B2B2 BmBm R A S R A S = (R x S)
Andere Join-Arten natürlicher Join L ABC a1a1 b1b1 c1c1 a2a2 b2b2 c2c2 R CDE c1c1 d1d1 e1e1 c3c3 d2d2 e2e2 A = Resultat ABCDE a1a1 b1b1 c1c1 d1d1 e1e1 L ABC a1a1 b1b1 c1c1 a2a2 b2b2 c2c2 C = linker äußerer Join R CDE c1c1 d1d1 e1e1 c3c3 d2d2 e2e2 Resultat ABCDE a1a1 b1b1 c1c1 d1d1 e1e1 a2a2 b2b2 c2c2 --
L ABC a1a1 b1b1 c1c1 a2a2 b2b2 c2c2 D = rechter äußerer Join R CDE c1c1 d1d1 e1e1 c3c3 d2d2 e2e2 Resultat ABCDE a1a1 b1b1 c1c1 d1d1 e1e1 -- c3c3 d2d2 e2e2
Andere Join-Arten L ABC a1a1 b1b1 c1c1 a2a2 b2b2 c2c2 B = äußerer Join L ABC a1a1 b1b1 c1c1 a2a2 b2b2 c2c2 R CDE c1c1 d1d1 e1e1 c3c3 d2d2 e2e2 E = Semi-Join von L mit R R CDE c1c1 d1d1 e1e1 c3c3 d2d2 e2e2 Resultat ABCDE a1a1 b1b1 c1c1 d1d1 e1e1 a2a2 b2b2 c2c c3c3 d2d2 e2e2 ABC a1a1 b1b1 c1c1
Andere Join-Arten (Forts.) L ABC a1a1 b1b1 c1c1 a2a2 b2b2 c2c2 R CDE c1c1 d1d1 e1e1 c3c3 d2d2 e2e2 Resultat CDE c1c1 d1d1 e1e1 F = Semi-Join von R mit L
Die relationalen Algebra- Operatoren Umbenennung Umbenennung von Relationen Beispiel: Ermittlung indirekter Vorgänger 2. Stufe der Vorlesung 5216 V1. Vorgänger( V2. Nachfolger=5216 V1.Nachfolger = V2.Vorgänger ( V1 (voraussetzen) x V2 (voraussetzen))) Umbennung von Attributen Voraussetzung Vorgänger (voraussetzen)
Mengendurchschnitt Mengendurchschnitt nur auf zwei Argumentrelationen mit gleichem Schema anwendbar Deshalb ist die Umbenennung des Attribute gelesenVon in PersNr in der Relation Vorlesungen notwendig Der Mengendurchschnitt zweier Relationen R S kann durch die Mengendifferenz wie folgt ausgedrückt weden: R S = R (R S) Als Beispielanwendung für den Mengendurchschnitt (Operatorsymbol ) betrachten wir folgende Anfrage: Finde die PersNr aller C4-Professoren, die mindestens eine Vorlesung halten. PersNr ( PersNr gelesenVon (Vorlesungen)) PersNr ( Rang=C4 (Professoren))
Die relationale Division Bsp.: Finde MatrNr der Studenten, die alle vierstündigen Vorlesungen hören L := VorlNr ( SWS=4 (Vorlesungen)) hören VorlNr ( SWS=4 (Vorlesungen)) L
t R S, falls für jedes ts S ein tr R existiert, so dass gilt: tr.S = ts.S tr.(R-S) = t Die Division R S kann auch durch Differenz, Kreuzprodukt und Projektion ausgedrückt werden. R MV m1m1 v1v1 m1m1 v2v2 m1m1 v3v3 m2m2 v2v2 m2m2 v3v3 S V v1v1 v2v2 = R S = (R S) (R) (R S) (( (R S) (R) x S) R) R S M m1m1 Definition der Division
Division: Beispiel R = hören; S = Vorlesung MatrNr (hören) Alle Studenten (die irgendetwas hören) MatrNr (hören) x Vorlesung Alle Studenten hören alle Vorlesungen ( MatrNr (hören) x Vorlesung) – hören Studenten und Vorlesungen, die ein Student nicht hört MatrNr (( MatrNr (hören) x Vorlesung) – hören): Studenten, die mindestens eine Vorlesung nicht hören MatrNr (hören) - MatrNr (( MatrNr (hören) x Vorlesung) – hören) Studenten, die alle Vorlesungen hören R S = (R S) (R) (R S) (( (R S) (R) x S) R)
Der Relationenkalkül Eine Anfrage im Relationenkalkül hat die Form {t P(t)} mit P(t) Formel. Beispiele: C4-Professoren {p p Professoren p.Rang = 'C4'} Studenten mit mindestens einer Vorlesung von Curie {s s Studenten h hören(s.MatrNr=h.MatrNr v Vorlesungen(h.VorlNr=v.VorlNr p Professoren(p. PersNr=v.gelesenVon p.Name = 'Curie')))}
Wer hat alle vierstündigen Vorlesungen gehört {s s Studenten v Vorlesungen (v.SWS=4 h hören(h.VorlNr=v.VorlNr h.MatrNr= s.MatrNr))}
Definition des Tupelkalküls Atome s R, mit s Tupelvariable und R Relationenname s.A t.B, mit s und t Tupelvariablen, A und B Attributnamen und Vergleichsperator ( , , ,...) s. A c mit c Konstante Formeln Alle Atome sind Formeln Ist P Formel, so auch P und (P) Sind P 1 und P 2 Formeln, so auch P 1 P 2, P 1 P 2 und P 1 P 2 Ist P(t) Formel mit freier Variable t, so auch t R(P(t)) und t R(P(t))
Sicherheit Einschränkung auf Anfragen mit endlichem Ergebnis. Die folgende Beispielanfrage {n (n Professoren)} ist nicht sicher. Das Ergebnis ist unendlich. Bedingung: Ergebnis des Ausdrucks muss Teilmenge der Domäne der Formel sein. Die Domäne einer Formel enthält -alle in der Formel vorkommenden Konstanten -alle Attributwerte von Relationen, die in der Formel referenziert werden
Der Domänenkalkül Ein Ausdruck des Domänenkalküls hat die Form {[v 1, v 2,..., v n ] P (v 1,..., v n )} mit v 1,..., v n Domänenvariablen und P Formel. Beispiel: MatrNr und Namen der Prüflinge von Curie {[m, n] s ([m, n, s] Studenten v, p, g ([m, v, p,g] prüfen a,r, b([p, a, r, b] Professoren a = 'Curie')))}
Sicherheit des Domänenkalküls Sicherheit ist analog zum Tupelkakkül zum Beispiel ist {[p,n,r,o] ([p,n,r,o] Professoren) } nicht sicher. Ein Ausdruck {[x 1, x 2,..., x n ] P( x 1, x 2,..., x n )} ist sicher, falls folgende drei Bedingungen gelten:
1.Falls Tupel [c 1, c 2,..., c n ] mit Konstante c i im Ergebnis enthalten ist, so muss jedes c i (1 i n) in der Domäne von P enthalten sein. 2.Für jede existenz-quantifizierte Teilformel x(P 1 (x)) muss gelten, dass P 1 nur für Elemente aus der Domäne von P 1 erfüllbar sein kann - oder evtl. für gar keine. Mit anderen Worten, wenn für eine Konstante c das Prädikat P 1 (c) erfüllt ist, so muss c in der Domäne von P 1 enthalten sein. 3.Für jede universal-quantifizierte Teilformel x(P 1 (x)) muss gelten, dass sie dann und nur dann erfüllt ist, wenn P 1 (x) für alle Werte der Domäne von P 1 erfüllt ist- Mit anderen Worten, P 1 (d) muss für alle d, die nicht in der Domäne von P 1 enthalten sind, auf jeden Fall erfüllt sein.
Ausdruckskraft Die drei Sprachen 1.relationale Algebra, 2.relationaler Tupelkalkül, eingeschränkt auf sichere Ausdrücke und 3.relationaler Domänenkalkül, eingeschränkt auf sichere Ausdrücke sind gleich mächtig