6. Tutorübung zu Grundlagen: Datenbanken Chaoran Chen [email protected] 17.11 - 23.11.2014 Von letzter Woche.. select s.matrnr, count (s.matrnr) as anz vorlesungen from studenten s left join hoeren h on s.matrnr = h.matrnr group by s.matrnr Von letzter Woche.. select * from studenten s left join hoeren h on s.matrnr = h.matrnr Von letzter Woche.. das ist schnell erklärt. Und zwar ist das ein Bug ;) Wir ” kümmern uns darum, kann allerdings nicht genau sagen, wielange das bugfixen dauern wird.“ Von letzter Woche.. das ist schnell erklärt. Und zwar ist das ein Bug ;) Wir ” kümmern uns darum, kann allerdings nicht genau sagen, wielange das bugfixen dauern wird.“ Von letzter Woche.. select s.matrnr, ( case when sum(h.vorlnr) is null then 0 else count (s.matrnr) end ) as anz vorlesungen from studenten s left join hoeren h on s.matrnr = h.matrnr group by s.matrnr Etherpad https://ep.mafiasi.de/p/GDB-08 Hausaufgabe 1 Was bringt der Vorlesungsbesuch? Finden Sie heraus, ob es für Prüfungen von Vorteil ist, die jeweiligen Vorlesungen auch gehört zu haben. Ermitteln Sie dazu die Durchschnittsnote der Prüfungen, zu denen die Studenten die Vorlesungen nicht gehört haben und die Durchschnittsnote der Prüfungen, zu denen sie die Vorlesungen gehört haben. Hausaufgabe 2 StudentenGF :{[MatrNr : integer , Name : varchar (20), Semester : integer , Geschlecht : char , FakName : varchar (20)]} ProfessorenF :{[PersNr : integer , Name : varchar (20), Rang : char (2), Raum : integer , FakName : varchar (20)]} 1. Ermitteln Sie den Männeranteil an den verschiedenen Fakultäten in SQL! 2. Ermitteln Sie in SQL die Studenten, die alle Vorlesungen ihrer Fakultät hören. Geben Sie zwei Lösungen an, höchstens eine davon darf auf Abzählen basieren. Hausaufgabe 3 Fest- und Gleitkommazahlen cast (2.05 as decimal (5,2)) cast (2.05 as real ) Fest- und Gleitkommazahlen cast (2.05 as decimal (5,2)) cast (2.05 as real ) decimal (precision, scale): 1234. 56789 | {z } | {z scale } precision Fest- und Gleitkommazahlen cast (2.05 as decimal (5,2)) cast (2.05 as real ) decimal (precision, scale): 1234. 56789 | {z } | {z scale } precision real Fest- und Gleitkommazahlen cast (2.05 as decimal (5,2)) cast (2.05 as real ) decimal (precision, scale): 1234. 56789 | {z } | {z scale } precision real + 103 ⇤ 1.23456789 Hausaufgabe 4 SQL bietet Datentypen für Festkommazahlen (DECIMAL(p,s)) sowie Gleitkommazahlen (REAL) mit doppelter Genauigkeit nach IEEE 754. Bei Zweiterem handelt es sich lediglich um eine approximative Darstellung von reellen Zahlen. Konstruieren Sie ein beliebiges Beispiel in SQL, das abhängig von der Verwendung von Festkomma- oder Gleitkommaarithmetik zu verschiedenen Ergebnissen führt. Hausaufgabe 5 Gegeben sei: R : {[A : integer , B : integer , C : integer ; D : integer , E : integer }g Sie vermuten“, dass folgendes gilt: ” 1. AB ist ein Schlüssel der Relation 2. DE ! B Formulieren Sie SQL-Anfragen, die Ihre Vermutungen bestätigen oder widerlegen. Hausaufgabe 6 PunkteListe :{[Name, Aufgabe, Max, Erzielt, KlausurSumme, KNote, Bonus, GNote]} 1. Bestimmen Sie die geltenden FDs (functional dependencies). 2. Bestimmen Sie die Kandidatenschlüssel. Relationale Entwurfstheorie Funktionale Abhängigkeiten Armstrong Axiome • –, — und “ sind Teilmengen von R • Dann gibt es folgende korrekte und vollständige Regeln: I I I Reflexivität: — ™ – ∆ – æ — Verstärkung: Falls – æ —, dann gilt auch –“ æ —“ (–“ steht für – fi “) Transitivität: – æ — und — æ “ ∆ – æ “ • Mit Hilfe der Armstrong Axiome können alle gültigen FDs hergeleitet werden. 13 / 44 Relationale Entwurfstheorie Funktionale Abhängigkeiten Armstrong Axiome(2) • Die folgenden Zusatzregeln sind eigentlich nicht erforderlich, aber häufig nützlich: I I I Vereinigungsregel: Wenn – æ — und – æ “, dann gilt auch – æ —“ Dekompositionsregel: Wenn – æ —“, dann gelten auch – æ — und –æ“ Pseudotransitivitätsregel: Wenn – æ — und “— æ ”, dann gilt auch –“ æ ” • Da die Anwendung der Armstrong Axiome für die Schlüsselfindung etwas aufwendig ist, benutzt man meistens Attributhüllen. 14 / 44 Relationale Entwurfstheorie Funktionale Abhängigkeiten Attributhülle • Die Attributhülle AH(–) einer Attributmenge – ist die Menge alle Attribute aus R die funktional von – abhängen • Es gibt einen einfachen Algorithmus zur Bestimmung von AH(–): AH := – while (AH ändert sich noch) do for each FD — æ “ in FR do if (— ™ AH) then AH := AH fi “ 15 / 44