Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5



Ähnliche Dokumente
Universität Augsburg, Institut für Informatik WS 2008/2009 Prof. Dr. W. Kießling 23. Nov Dr. A. Huhn, M. Endres, T. Preisinger Lösungsblatt 5

SQL Intensivpraktikum SS 2008

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Kapitel 3: Datenbanksysteme

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

MySQL: Einfaches Rechnen.

Informatik 12 Datenbanken SQL-Einführung

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

Views in SQL. 2 Anlegen und Verwenden von Views 2

Urs Meier Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung

5.3 Datenänderung/-zugriff mit SQL (DML)

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

IV. Datenbankmanagement

Suchmaschinen. Universität Augsburg, Institut für Informatik SS 2014 Prof. Dr. W. Kießling 23. Mai 2014 Dr. M. Endres, F. Wenzel Lösungsblatt 6

Oracle: Abstrakte Datentypen:

SQL und MySQL. Kristian Köhntopp

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

Beispiel 1: Filmdatenbank

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Datumsangaben, enthält mindestens Jahr, Monat, Tag

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11

Vorlesung Datenbankmanagementsysteme

Professionelle Seminare im Bereich MS-Office

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung

SQL Teil 2. SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Komplexer SELECT-Ausdruck

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Abfrage-Befehle in MySQL -diverse Funktionen -

7. Übung - Datenbanken

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Data Cube. Aggregation in SQL. Beispiel: Autoverkäufe. On-line Analytical Processing (OLAP) 1. Einführung. 2. Aggregation in SQL, GROUP BY

6. Sichten, Integrität und Zugriffskontrolle. Vorlesung "Informa=onssysteme" Sommersemester 2015

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Ein Ausflug zu ACCESS

Diana Lange. Generative Gestaltung Operatoren

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

Übungen zur Vorlesung Informationssysteme - Blatt 5

Kalkülteil. Structured Query Language, SQL. 1. Semantik: erzeuge alle Kombinationen von Tupeln

Vorlesung Dokumentation und Datenbanken Klausur

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

MIN oder MAX Bildung per B*Tree Index Hint

SQL structured query language

Datenbanksysteme 2 Frühjahr-/Sommersemester Mai 2014

SQL: statische Integrität

Informationsblatt Induktionsbeweis

Labor 3 - Datenbank mit MySQL

7 Rechnen mit Polynomen

Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Bibliografische Informationen digitalisiert durch

Datenbanken. Sommersemester 2010 Probeklausur

Sie sollen eine Datenbank für Befragungen mittels Online-Fragebögen zu unterschiedlichen Themen erstellen:

Aufgaben zu XPath und XQuery

Erstellen einer Datenbank. Datenbankabfragen

Einführung in die Algebra

Bevor lineare Gleichungen gelöst werden, ein paar wichtige Begriffe, die im Zusammenhang von linearen Gleichungen oft auftauchen.

Unterabfragen (Subqueries)

Schlüssel bei temporalen Daten im relationalen Modell

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Wie ist das Wissen von Jugendlichen über Verhütungsmethoden?

Im Jahr t = 0 hat eine Stadt Einwohner. Nach 15 Jahren hat sich die Einwohnerzahl verdoppelt. z(t) = at + b

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

Sructred Query Language

1 topologisches Sortieren

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)

Modul Datenbanksysteme 2 Prüfung skizzenhaft SS Aug Name: Note:

Zeit- und Feriensaldoberechnung TimeSafe Leistungserfassung

Grundbegriffe der Informatik

Access [basics] Gruppierungen in Abfragen. Beispieldatenbank. Abfragen gruppieren. Artikel pro Kategorie zählen

cs241: Datenbanken mit Übungen HS 2011

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Mai Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

Shopware 4.1 Kategorien

1 Jahr Datenbankprogrammierung lernen mit LON-CAPA - Ein Erfahrungsbericht. n.jensen@ostfalia.de

Abbildung 1: Das ERM. Nun zu den Tabellen: Zunächst wird aus jeder Entity eine Tabelle, d.h. wir erhalten:

Hans Walser, [ a] Wurzeln aus Matrizen

Installation des Add-Ins für Lineare Algebra in Microsoft Excel

Klausur Interoperabilität

Übungen Programmieren 1 Felix Rohrer. Übungen

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Eine Logikschaltung zur Addition zweier Zahlen

Zeichen bei Zahlen entschlüsseln

Prozentrechnung. Wir können nun eine Formel für die Berechnung des Prozentwertes aufstellen:

Probeklausur im Modul Informationstechnik 1, WS 2003/04. Studiengang IWD 1. Semester Seite 1 von 5

Grundlagen Theoretischer Informatik I SoSe 2011 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de

Kontakte nach Excel exportieren und korrigieren Outlook

1. Einführung Erstellung einer Teillieferung Erstellung einer Teilrechnung 6

Repetitionsaufgaben Wurzelgleichungen

Transkript:

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Aufgabe 1: Projektion Datenbanksysteme I π A1,...,A n (π B1,...,B m (R)) = π A1,...,A n (R) gilt, wenn {A i i = 1,..., n} {B i i = 1,..., m}, d.h. wenn die Attribute A i in der Menge der Attribute B i enthalten sind. Aufgabe 2: Division in relationaler Algebra Zu beweisen: Beweis: R S = π A (R) \ π A ((π A (R) S) \ R) Wir beweisen die Aussage wie in der Mengenlehre und veranschaulichen die Äquivalenzen anhand folgendem Beispiel: R Programmierer Sprache Müller Java Müller Basic Müller C++ Huber C++ Huber Java und S Sprache Basic C++ Java Frage: Welche Programmierer programmieren in allen Sprachen R S Programmierer Müller : Sei r R S 1. s S : [rs] R 2. r π A (R) Wegen 2. genügt es zu zeigen, dass r / π A ((π A (R) S) \ R) x S : [rx] / (π A (R) S) \ R x S : [rx] / π A (R) S [rx] R Die erste Bedingung [rx] / π A (R) S wird immer zu false ausgewertet, die zweite zu true für alle x S, d.h. die Bedingung ist wahr. : Sei r π A (R) \ π A ((π A (R) S) \ R) 1. r / π A ((π A (R) S) \ R) 2. r π A (R) Zu zeigen: s S : [rs] R aus 1. folgt: x S : [rx] / π A (R) S [rx] R. Restliche Argumentation wie bei. 1

Der Divisionoperator erhöht die Ausdruckskraft der Relationenalgebra nicht, sondern wurde nur zur Vereinfachung eingeführt. Aufgabe 3: Relationale Algebra Unter Verwendung von und den Zuweisungen R R S A R S S ergibt sich R S = π A (R) \ π A ((π A (R) S) \ R) (R S) S = π R (R S) \ π R ((π R (R S) S) \ (R S)) R \ π R ((R S) \ (R S)) R \ π R ( ) R \ R Aufgabe 4: Aggregation und Gruppierung in SQL Erstellen der Relation Produkte: CREATE TABLE Produkte ( ID INTEGER Primary Key, Anzahl_Lager INTEGER, Anzahl_Shops INTEGER); insert into Produkte Values (1, 1, 1); insert into Produkte Values (2, 1, 2); insert into Produkte Values (3, 2, 1); insert into Produkte Values (4, 2, 2); insert into Produkte Values (5, NULL, 1); insert into Produkte Values (6, NULL, 2); insert into Produkte Values (7, 1, NULL); insert into Produkte Values (8, 2, NULL); insert into Produkte Values (9, NULL, NULL); 2

a) Anfrage: SELECT Anzahl_Lager, SUM(Anzahl_Shops) as a_sum, COUNT(*) as a_count, COUNT(DISTINCT Anzahl_Shops) as a_d_count, MAX(Anzahl_Shops) as a_max, MIN(Anzahl_Shops) as a_min, AVG(Anzahl_Shops) as a_avg FROM Produkte GROUP BY Anzahl_Lager; ANZAHL LAGER A SUM A COUNT A D COUNT A MAX A MIN A AVG 1 3 3 2 2 1 1,5 2 3 3 2 2 1 1,5 NULL 3 3 2 2 1 1,5 Im Ergebnis kommt nur eine Gruppe für NULL-Werte vor. Bei Gruppierung werden NULLs also als gleich betrachtet. Die Summe ist die Summe der tatsächlichen Werte für Anzahl Shops. NULL hat hier keine Auswirkungen. COUNT(*) zählt alle Tupel, auch das mit Anzahl Shops = NULL. Im Gegensatz dazu zählt COUNT(DISTINCT Anzahl Shops) Einträge mit Anzahl Shops = NULL nicht. MAX(Anzahl Shops) und MIN(Anzahl Shops) liefern das Maximum bzw. das Minimum ohne NULLs zu berücksichtigen, obwohl NULL beim Sortieren von Oracle als größter Wert angesehen wird. AVG(Anzahl Shops) liefert den Duchschnitt der Tupelwerte ungleich NULL. NULL-Werte beeinflussen den Durchschnitt also nicht. b) Anfrage: SELECT * FROM Produkte P1, Produkte P2 WHERE P1.Anzahl_Lager = P2.Anzahl_Lager; Ergebnis: 3

ID ANZAHL LAGER ANZAHL SHOPS ID ANZAHL LAGER ANZAHL SHOPS 7 1 NULL 1 1 1 2 1 2 1 1 1 1 1 1 1 1 1 7 1 NULL 2 1 2 2 1 2 2 1 2 1 1 1 2 1 2 8 2 NULL 3 2 1 4 2 2 3 2 1 3 2 1 3 2 1 8 2 NULL 4 2 2 4 2 2 4 2 2 3 2 1 4 2 2 7 1 NULL 7 1 NULL 2 1 2 7 1 NULL 1 1 1 7 1 NULL 8 2 NULL 8 2 NULL 4 2 2 8 2 NULL 3 2 1 8 2 NULL Tupel mit P1.Anzahl Lager = NULL bzw. P2.Anzahl Lager = NULL fehlen. Das bedeutet NULLs werden hier als unterschiedliche Werte betrachtet (NULL <> NULL). Aufgabe 5: Count-Bug a) Relation erstellen: CREATE TABLE R ( dept_nr INTEGER, emp_nr INTEGER, job varchar(50), PRIMARY KEY (dept_nr, emp_nr)); b) Tupel einfügen: INSERT INTO R VALUES(1,1, programmer ); INSERT INTO R VALUES(1,2, clerk ); INSERT INTO R VALUES(2,3, clerk ); INSERT INTO R VALUES(2,4, clerk ); INSERT INTO R VALUES(3,5, sales ); c) Der erste intuitive Ansatz SELECT dept_nr FROM emp WHERE job = clerk GROUP BY dept_nr HAVING COUNT(*) <= 2 schlägt fehl. In der WHERE-Klausel werden alle Einträge außer denen mit job = clerk eliminiert. Dadurch fallen sämtliche Einträge zum Department 3 weg. Das Department 3 fehlt also auch im Ergebnis, obwohl es rein intuitiv auch gesucht war. 4

Ein anderer Lösungsansatz SELECT dept# FROM R GROUP BY dept# HAVING COUNT(*) <= 2 AND job = clerk ; ist syntaktisch falsch, da Nicht-Gruppierungsattribute wie job nur in Form von Aggregationsausdrücken in einer HAVING-Klausel vorkommen dürfen. Korrekte SQL-Anfrage: (SELECT dept_nr FROM R) MINUS (SELECT dept_nr FROM R WHERE job = clerk GROUP BY dept_nr HAVING COUNT(*) > 2); 5