Dies ist eine Probeklausur, die keine formalen Schlüsse auf die Form, die Struktur oder den Inhalt der endgültigen Klausur zulässt.

Ähnliche Dokumente
Kapitel 10. JDBC und SQLJ. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Beispiel: DB-Mock (1/7)

Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn

Oracle: Abstrakte Datentypen:

Probeklausur Datenbanktechnologie

Einführung in die Informatik II

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung

Datenbanken 1 Sommersemester 2014/

Finalklausur zur Vorlesung Datenbanksysteme I Wintersemester 2003/2004 Prüfer: Prof. R. Bayer, Ph.D. Datum: Zeit: 16.

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

Klausur zur Vorlesung Datenbanken I im Wintersemester 2011/12

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

Es geht also im die SQL Data Manipulation Language.

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

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

Klausur zur Vorlesung Datenbanksysteme I

Programmieren II. Beispiele für RDBMS. Relationale Datenbanken. Datenbanken SQL. Dr. Klaus Höppner JDBC. Hochschule Darmstadt SS 2008

Tag 4 Inhaltsverzeichnis

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

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

Vorlesung Datenbank-Entwurf Klausur

Klausur Datenbanken Wintersemester 2004/2005 Prof. Dr. Wolfgang May 10. Februar 2004, Uhr Bearbeitungszeit: 90 Minuten

Tag 4 Inhaltsverzeichnis

TECHNISCHE UNIVERSITÄT DRESDEN Fakultät Wirtschaftswissenschaften Prof. Dr. W. Esswein Lehrstuhl Wirtschaftsinformatik, insbesondere Systementwicklung

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Datenbanken & Informationssysteme Übungen Teil 1

Klausur Datenbanksysteme, Lösungen

Datenbanken Unit 4: Das Relationale Modell & Datenintegrität

Hochschule Karlsruhe Technik und Wirtschaft

Datenbankentwurf & Datenbankzugriff mit JDBC. Georg Köster Sven Wagner-Boysen

ARBEITSBLATT ZUR SQL-BEFEHLEN

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

Datenbanken (Bachelor) (SPO2007) WS 2011/12

DB-Programmierung. Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1. Ziele. DB2 Zugriff mit Java selbst programmieren

Datenbanken. Zusammenfassung. Datenbanksysteme

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql

Unterabfragen (Subqueries)

Datenbanken (Übung 12)

Wiederholung VU Datenmodellierung

Universität Augsburg, Institut für Informatik WS 2009/2010 Prof. Dr. W. Kießling 06. Nov Dr. A. Huhn, F. Wenzel, M. Endres Lösungsblatt 2

SQL: statische Integrität

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung

Hochschule Karlsruhe Technik und Wirtschaft

Universität Augsburg, Institut für Informatik WS 2007/2008 Prof. Dr. W. Kießling 18. Jan Dr. A. Huhn, M. Endres, T. Preisinger Übungsblatt 12

Klausur Datenbanksysteme

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme

Vorlesung Dokumentation und Datenbanken Klausur

Microsoft Access 2010 SQL nutzen

SQL,Teil 1: CREATE, INSERT, UPDATE, DELETE, DROP

Prüfung Informatik für Ökonomen II. 14. Januar Teil 1: Datenbanktechnik Musterlösungen

5.8 Bibliotheken für PostgreSQL

Sructred Query Language

Datenbanksysteme 2 Fachbereich Angewandte Informatik WS 11/12 Dipl.-Inf. Christian Pape. 6. Übung

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

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Multimedia im Netz Wintersemester 2013/14. Übung 03 (Nebenfach)

Klausur Datenbanken Wintersemester 2013/2014 Prof. Dr. Wolfgang May 29. Januar 2014, Uhr Bearbeitungszeit: 90 Minuten

Klausur mit Musterlösung

Webbasierte Informationssysteme

Datenbank Grundlagen. Performanceuntersuchungen

Allgemeine Hinweise:

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

Aufgaben zu Tabellenanalyse mit SQL

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

Entwicklung einer DB-Anwendung vergleichbar mit gewöhnlicher Anwendungsprogrammierung:

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

Abfragen (Queries, Subqueries)

11 Anwendungsprogrammierung

Modul Datenbanken I Klausur

PROGRAMMIERPROJEKT 2016 VERWENDETE TECHNOLOGIEN

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN. Name Vorname Studiengang Matrikelnummer. Hörsaal Reihe Sitzplatz Unterschrift

Welche Kunden haben die gleiche Ware bestellt? select distinct a1.name, a2.name from Auftrag a1, Auftrag a2 where a1.ware = a2.ware.

FACHHOCHSCHULE MANNHEIM. Hochschule für Technik und Gestaltung. Beispielklausur zur Vorlesung:

Beispiel zur referentiellen Integrität

Universität Augsburg, Institut für Informatik WS 2014/2015 Prof. Dr. W. Kießling 28. Nov F. Wenzel, L. Rudenko Lösungsblatt 6

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

SQL structured query language

Klausur Grundlagen der Programmierung

4. Objektrelationales Typsystem Kollektionstypen. Nested Table

SQL: Weitere Funktionen

2. Übungsblatt 3.0 VU Datenmodellierung

dbis Praktikum DBS I SQL Teil 2

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Kapitel 3: Datenbanksysteme

3. Übungszettel (Musterlösung)

Aufbau einer Datenbasis im DBMS SYBASE ASE

Modifikation der Datenbank

Klausur Datenbanken Wintersemester 2004/2005 Prof. Dr. Wolfgang May 10. Februar 2004, Uhr Bearbeitungszeit: 90 Minuten

Probeklausur Grundlagen der Datenbanksysteme II

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs

Introduction to Data and Knowledge Engineering. 6. Übung SQL

SQL - Datenbankdesign - Aufbau

Bearbeitungszeit: 120 Minuten. Kommentare kosten Zeit; kommentieren Sie ihr Programm nur da, wo der Code alleine nicht verständlich wäre.

DBSY - Projekt. Datenbanksysteme. Imstepf Martin. Klasse: Abgabedatum: 21. Februar Inventar FHZ -> FACHHOCHSCHULE ZENTRALSCHWEIZ

Einführung in JDBC. IFIS Universität zu Lübeck

Klausur Fachprüfung Wirtschaftsinformatik. Name:

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

Transkript:

Thema: Datenbanken Dozent: Prof. Dr. Stephan Kleuker Seitennummer: Seite 1 von 12 Studiengang: Technische Informatik Studiensemester: 3 Datum: Bearbeitungszeit: 120 Minuten Matrikelnummer: Name: Dies ist eine Probeklausur, die keine formalen Schlüsse auf die Form, die Struktur oder den Inhalt der endgültigen Klausur zulässt. Diese Klausur ist Bestandteil der Bachelor-Prüfung im Sinn der Prüfungsordnung. Zugelassene Hilfsmittel: keine, beachten Sie die letzte Seite, nur diese darf von der Klausur abgetrennt, dann aber nicht mehr für abzugebende Ergebnisse verwendet werden. Überprüfen Sie, dass Ihre Arbeit aus 12 Blättern besteht. Schreiben Sie oben auf die Klausur Ihren Namen und Ihre Matrikelnummer. Es ist nicht erlaubt, die Heftung der Klausur aufzutrennen. Schreiben Sie nur mit einem dokumentenechten Stift (kein Bleistift!) nicht in roter Farbe. Rückseiten können beschrieben werden. Während der Klausur können keine Fragen gestellt werden, falls Sie meinen, dass eine Aufgabenstellung unklar ist, dokumentieren Sie Ihre Annahmen. Es werden 50 Punkte zum Bestehen benötigt. Unterschreiben Sie die Klausur. Aufgabe 1 /12 Aufgabe 2 /11 Aufgabe 3 /11 Aufgabe 4 /18 Aufgabe 5 /6 Aufgabe 6 /6 Aufgabe 7 /6 Aufgabe 8 /10 Aufgabe 9 /20 Note: Gesamt /100 Mit meiner Unterschrift bestätige ich, dass ich die Klausur alleine, nur unter Nutzung der zugelassenen Hilfsmittel, bearbeitet habe. Unterschrift Seite 1 von 12

Aufgabe 1) ER-Diagramm erstellen (8+4 = 12 Punkte) a) Formulieren Sie folgende Sachverhalte als ER-Diagramm (Entitäten, Relationen, Attribute, Markierung eines Schlüsselkandidaten, Kardinalitäten): Eine IT-Firma erstellt Software in verschiedenen Projekten. Die Entwicklungsinformationen zu den verschiedenen Projekten sollen festgehalten werden. Jedes Projekt, das durch seinen Namen eindeutig gekennzeichnet ist und einen Leiter hat, stellt einen oder mehrere SW-Module her. Jeder SW-Modul, der durch seinen Namen eindeutig erkennbar ist, gehört zu genau einem Projekt. Jeder SW-Modul kann aus mehreren SW-Modulen bestehen, jeder SW-Modul kann in maximal einem übergeordneten SW-Modul genutzt werden. Zu jedem Projekt gehört eine Liste von Testfällen, die durch eine Nummer eindeutig identifizierbar sind und einen Ersteller haben. Jeder Testfall bezieht sich auf einen oder mehrere SW-Module, jeder SW- Modul sollte in mindestens einem Testfall vorkommen, was aber nicht immer garantiert ist. Es gibt Testfälle, die frühzeitig erstellt werden und erst wesentlich später SW-Modulen zugeordnet werden. Für jede Ausführung eines Testfalls wird der letzte Zeitpunkt der Ausführung, der Name des Testers und das Testergebnis festgehalten (auf eine Historie der Testfälle wird verzichtet), dabei kann sich die Testausführung auf eine Teilmenge der zugeordneten Module beziehen. b) In Ihrem Diagramm sollte es einen Zyklus geben (zwei Entitätsmengen sind auf unterschiedlichen Wegen miteinander verknüpft). [Ist dies nicht der Fall, ergänzen Sie einen Zyklus ihrer Wahl.] Beschreiben Sie zunächst, warum es sich generell dabei um ein Indiz für ein Modellierungsproblem handelt und warum der Zyklus in ihrer Modellierung beibehalten werden muss oder eine Relation gelöscht werden kann. Seite 2 von 12

Aufgabe 2) ER-Diagramm in Relationen (Tabellen) übersetzen (9+2 = 11 Punkte) Gegeben sei das folgende ER-Diagramm: Einwohner Länge Name Breite Länge Stadt C 1 N Hauptstadt von liegt in C 1 Name Land M NC MC grenzt an beheimatet Mitglied von NC Status C Organisation Name Gründungsdatum a) Leiten Sie aus dem Diagramm nach den Standard-Verfahren Tabellen ab, die in den Spalten (insofern die Werte der im Diagramm genannten Attribute nicht NULL sind) keine NULL-Werte enthalten. Markieren Sie einen Schlüsselkandidaten in jeder Tabelle. Vermeiden Sie die Ableitung überflüssiger Einzeltabellen. b) Nennen Sie zwei Korrekturen, die Sie im ER-Diagramm durchführen würden, um das Modell realistischer zu machen, die sich nicht auf Attribute beziehen. Seite 3 von 12

Aufgabe 3) Relationen in Normalform (1+2+4+4 = 11 Punkte) Grundsätzlich soll für folgende Umformungen gelten, dass Sie dabei nur die unbedingt notwendigen Veränderungen vornehmen sollen. Markieren Sie die Schlüsselkandidaten der Tabellen. Nehmen Sie an, dass zur Verwaltung von Studierenden, die von Firmen ausgesucht werden und dort ein Stipendium erhalten, folgende (Excel)-Tabelle genutzt wird: MatNr Name TelefonNr Studium Firma Betreuer Fach Note Dabei gelten folgende funktionale Abhängigkeiten (weitere Abhängigkeiten lassen sich aus diesen berechnen) I. {MatNr} -> {Name, TelefonNr, Studium, Firma, Betreuer} II. {TelefonNr} -> {MatrNr} III. {MatNr, Fach} -> {Note} IV. {TelefonNr, Fach} ->{Note} V. {Firma} -> {Betreuer} a) Begründen Sie formal, warum {TelefonNr} -> {Firma} gilt. b) Nennen Sie alle Schlüsselkandidaten. c) Bringen Sie die Tabelle mit dem Standardverfahren in die zweite Normalform. Vermeiden Sie für die zweite Normalform überflüssige Umformungen. d) Bringen Sie die Tabellen aus c) mit dem Standardverfahren in die dritte Normalform. Vermeiden Sie für die dritte Normalform überflüssige Umformungen. Seite 4 von 12

Aufgabe 4) SQL-Anfragen formulieren (3+3+3+3+3+3 = 18 Punkte) Gegeben seien folgende Tabellen zur Projektverwaltung, Schlüssel sind unterstrichen: Projekt Arbeitspaket Arbeit PrNr PrName PrLeiter PrNr PakNr PakName PakLeiter PakNr MiName Anteil 1 Notendatenbank Wichtig 1 1 Analyse Wichtig 1 Wichtig 50 2 Adressdatenbank Wuchtig 1 2 Modell Wuchtig 1 Klein 30 3 Fehlzeitendatenbank Wachtig 1 3 Implementierung Mittel 2 Winzig 100 2 4 Modell Durch 3 Hack 70 2 5 Implementierung Mittel 4 Maler 40 3 6 Modell Schnitt 4 Schreiber 30 3 7 Implementierung Hack 6 Maler 30 6 Schreiber 40 7 Hack 50 Formulieren Sie die folgenden Textzeilen jeweils als SQL-Anfragen. a) Geben Sie die Namen der Personen an, die gleichzeitig Projektleiter (PrLeiter) und Arbeitspaketleiter (PakLeiter) sind (nicht unbedingt im gleichen Projekt!). b) Geben Sie die Namen der Personen an, die mehrere Arbeitspakete leiten. c) Geben Sie die Arbeitspaketnamen an, denen noch keine Arbeit (also kein Mitarbeiter) zugeordnet wurde. Seite 5 von 12

Projekt Arbeitspaket Arbeit PrNr PrName PrLeiter PrNr PakNr PakName PakLeiter PakNr MiName Anteil 1 Notendatenbank Wichtig 1 1 Analyse Wichtig 1 Wichtig 50 2 Adressdatenbank Wuchtig 1 2 Modell Wuchtig 1 Klein 30 3 Fehlzeitendatenbank Wachtig 1 3 Implementierung Mittel 2 Winzig 100 2 4 Modell Durch 3 Hack 70 2 5 Implementierung Mittel 4 Maler 40 3 6 Modell Schnitt 4 Schreiber 30 3 7 Implementierung Hack 6 Maler 30 6 Schreiber 40 7 Hack 50 d) Geben Sie eine Liste der Projektnamen zusammen mit der Summe der zugeordneten Arbeitsanteile (Anteil ist in Prozent angegeben, diese sind zu addieren) aus. e) Geben Sie die Namen aller Mitarbeiter an, die zu mehr als 100% arbeiten. f) Geben Sie alle Arbeitspaketnamen (PakName) aus, an denen zwei oder mehr unterschiedliche Personen beteiligt, also mehr als eine Person in der Tabelle Arbeit für das Arbeitspaket eingetragen, sind. ( Implementierung gehört z. B. nicht dazu, da sie nur von Hack durchgeführt wird.) Seite 6 von 12

Aufgabe 5) Tabelle in SQL definieren (6 Punkte) Geben Sie den SQL-Befehl zur Erzeugung der Tabelle Arbeitspaket aus der vorherigen Aufgabe in SQL an (nur CREATE, keine INSERT). Neben den dort sichtbaren Randbedingungen, sollen folgende Bedingungen aufgenommen werden: - Kein Eintrag darf leer sein. - Die Person Winzig darf nie Arbeitspaketleiter sein. - Alle Arbeitspakete mit dem Namen Analyse dürfen nie von der Person Hack geleitet werden. - Alle Arbeitspakete mit dem Namen Implementierung müssen von der Person Mittel oder der Person Hack geleitet werden. Seite 7 von 12

Aufgabe 6) Auswertung von DB-Anfragen (2+2+2 = 6 Punkte) Gegeben seien folgende SQL-Anfragen an die Datenbank aus der Aufgabe 4. Projekt Arbeitspaket Arbeit PrNr PrName PrLeiter PrNr PakNr PakName PakLeiter PakNr MiName Anteil 1 Notendatenbank Wichtig 1 1 Analyse Wichtig 1 Wichtig 50 2 Adressdatenbank Wuchtig 1 2 Modell Wuchtig 1 Klein 30 3 Fehlzeitendatenbank Wachtig 1 3 Implementierung Mittel 2 Winzig 100 2 4 Modell Durch 3 Hack 70 2 5 Implementierung Mittel 4 Maler 40 3 6 Modell Schnitt 4 Schreiber 30 3 7 Implementierung Hack 6 Maler 30 6 Schreiber 40 7 Hack 50 (a) (b) (c) SELECT Projekt.PrName FROM Projekt, Arbeitspaket WHERE Projekt.PrNr=Arbeitspaket.PrNr AND Arbeitspaket.PakName='Implementierung' AND Arbeitspaket.PakLeiter='Mittel'; SELECT A1.MiName FROM Arbeit A1, Arbeit A2 WHERE A1.PakNr<A2.PakNr AND A1.MiName=A2.MiName; SELECT Arbeitspaket.PakName, COUNT(Arbeit.MiName) FROM Arbeitspaket, Arbeit WHERE Arbeitspaket.PakNr=Arbeit.PakNr GROUP BY Arbeitspaket.PakName; Geben Sie jeweils die zugehörige Ausgabe an. Seite 8 von 12

Aufgabe 7) Trigger (6 Punkte) Arbeitspaket Schreiben Sie einen Trigger, der beim Einfügen eines PrNr PakNr PakName PakLeiter Arbeitspakets für die Tabelle aus der Aufgabe 4 überprüft, ob der neu einzutragende PakLeiter schon dreifach oder häufiger in der Tabelle vorkommt. Ist das der Fall, soll das Einfügen mit einer Fehlermeldung abgebrochen werden. Es reicht die Java-Methode für den Trigger anzugeben, nutzen Sie bei Parametern sprechende Namen. Seite 9 von 12

Aufgabe 8) Prozeduren (10 Punkte) Schreiben Sie eine in der Datenbank laufende Prozedur arbeitverteilen, die für jeden Mitarbeiter (MiName sei eindeutig!) die Summe der Arbeitsanteile addiert und auf 100% aufrechnet und diese Änderungen in der Tabelle Arbeit einträgt. Arbeitet z.b. ein Mitarbeiter in genau zwei Projekten mit 20% und mit 60%, soll nach der Aufrechnung 25% und 75% in der 20 Tabelle stehen. (25 *100) Links steht 20 60 die Tabelle vor und rechts nach der Ausführung der Prozedur. Es reicht die Java-Methode anzugeben, nutzen Sie bei Parametern sprechende Namen. Arbeit Arbeit PakNr MiName Anteil PakNr MiName Anteil 1 Wichtig 50 1 Wichtig 100 1 Klein 30 1 Klein 100 2 Winzig 100 2 Winzig 100 3 Hack 70 3 Hack 58.3 4 Maler 40 4 Maler 57.1 4 Schreiber 30 4 Schreiber 42.9 6 Maler 30 6 Maler 42.9 6 Schreiber 40 6 Schreiber 57.1 7 Hack 50 7 Hack 41.7 Seite 10 von 12

Aufgabe 9) Einige Fragen zu Datenbanken (2+5+6+3+4 = 20 Punkte) a) Wie kann man in einer Tabelle für eine bestimmte Spalte zählen, wie oft der Wert NULL in dieser Spalte steht? b) Beschreiben Sie den Nutzen und die möglichen Probleme von Views in SQL. c) Wenn ein DBMS keine Transaktionssteuerung nutzt, können Unrepeatable Reads und Lost Updates auftreten. Beschreiben Sie diese Fehlerarten. d) Beschreiben Sie, wozu die SQL-Befehle COMMIT und ROLLBACK dienen. e) Gegeben sei eine Tabelle mit drei Spalten A, B, C und genau den vollen funktionalen Abhängigkeiten {A} {B,C} und {B} {A,C}. Nennen Sie alle Schlüsselkandidaten und begründen Sie formal, warum die Tabelle (nicht?) in zweiter Normalform ist. Seite 11 von 12

Infoblatt, darf abgetrennt werden (dann nicht abgeben!) Beispiele für Procedures und Trigger. CREATE TABLE Konto(nr INTEGER PRIMARY KEY, betrag INTEGER) public static void neueskonto(int nr, int betrag) throws SQLException{ Connection con = DriverManager.getConnection("jdbc:default:connection"); try (Statement stmt = con.createstatement()){ stmt.execute("insert INTO Konto VALUES(" + nr + "," + betrag +")"); } } // Trigger: Summe auf allen Konten zusammen darf nicht negativ werden public static void nichtnegativ() throws SQLException{ Connection con = DriverManager.getConnection("jdbc:default:connection"); try (Statement stmt = con.createstatement()){ ResultSet rs = stmt.executequery("select SUM(betrag) FROM Konto"); rs.next(); // Iterator, der mit while-schleife durchlaufen werden kann System.out.println("Summe: " + rs.getint(1)); if(rs.getint(1) < 0){ throw new SQLException("Pleite verhindern","30002"); } } } Seite 12 von 12