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



Ähnliche Dokumente
Probeklausur Datenbanken und Informationssysteme II

Datenbanken und Informationssysteme II

Datenbanken und Informationssysteme II

Datenbanken und Informationssysteme II (PO B.3)

Datenbanken und Informationssysteme II

Datenbanken und Informationssysteme II (PO B.4)

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

Probeklausur Datenbanken und Informationssysteme II

Probeklausur Datenbanken und Informationssysteme II (SS16)

Probeklausur Datenbanken und Informationssysteme II

Übungsblatt 8- Lösungsvorschlag

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

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

Probeklausur Datenbanken und Informationssysteme II

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Prozedurale Datenbank- Anwendungsprogrammierung

Aufgaben zu XPath und XQuery

Universität Augsburg, Institut für Informatik Wintersemester 2011/2012 Prof. Dr. W. Kießling 03. Feb Semesterklausur

desk.modul : WaWi- Export

Professionelle Seminare im Bereich MS-Office

Informatik 12 Datenbanken SQL-Einführung

Views in SQL. 2 Anlegen und Verwenden von Views 2

IV. Datenbankmanagement

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

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

XML Tutorium mit Oxygen. Oxygen Version 9.3!!

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

cs241: Datenbanken mit Übungen HS 2011

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Datenbanken (Bachelor) (SPO2007) WS 2011/12

Datenbanken Kapitel 2

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

Datenbanken. Sommersemester 2010 Probeklausur

Labor 3 - Datenbank mit MySQL

Datumsangaben, enthält mindestens Jahr, Monat, Tag

SQL - Übungen Bearbeitung der Datenbank Personal (1)

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Hochschule Karlsruhe Technik und Wirtschaft Fakultät für Informatik und Wirtschaftsinformatik

Vorlesung Dokumentation und Datenbanken Klausur

FIS: Projektdaten auf den Internetseiten ausgeben

Datenbanken für Online Untersuchungen

SQL: statische Integrität

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

Datenbanksysteme 2 Frühjahr-/Sommersemester Mai 2014

Klausur Interoperabilität

OP-LOG

Oracle: Abstrakte Datentypen:

Klausur Datenbanksysteme

SQL (Structured Query Language) Schemata Datentypen

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

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

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

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS XMLType. Christian Senger/Andreas Schmidt XMLType 1/32

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

etutor Benutzerhandbuch XQuery Benutzerhandbuch Georg Nitsche

Professionelle Seminare im Bereich MS-Office

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

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Business Intelligence Praktikum 1

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

MIN oder MAX Bildung per B*Tree Index Hint

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Grundzüge und Vorteile von XML-Datenbanken am Beispiel der Oracle XML DB

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

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Oracle SQL Tutorium - Wiederholung DB I -

Abfragen: Grundbausteine

Nutzer-Synchronisation mittels WebWeaver Desktop. Handreichung

Diese Programm ist für Hausverwaltungen, Kleingärtner Vereine gedacht und besteht eigentlich aus drei Programmen:

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

12. Dokumente Speichern und Drucken

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

Diplomprüfung. Termin: Wintersemester 2000/2001 (Wiederholungsklausur) Wirtschaftsinformatik II. ARIS: Modellierungsmethoden, Metamodelle, Anwendungen

Übung PL/SQL Trigger Lösungen

Kurzanleitung zur Erweiterung der htdig

SUB-ID- VERWALTUNG MIT GPP SETUP-GUIDE FÜR PUBLISHER

Programmierkurs Java

Download, Installation und Autorisierung der Lasergene Software. Bitte unbedingt beachten!

Übung - Datensicherung und Wiederherstellung in Windows 7

Übungen Programmieren 1 Felix Rohrer. Übungen

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

SEPA-Leitfaden für PC-VAB Version Inhalt

Kurzanleitung zur Bereitstellung von Sachverhalten und Lösungen zum Universitätsrepetitorium auf dem Server unirep.rewi.hu-berlin.

Einführung in die Java- Programmierung

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Mediator 9 - Lernprogramm

Beispiel 1: Filmdatenbank

Österreichische Trachtenjugend

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

MySQL Installation. AnPr

PostgreSQL unter Debian Linux

Whitepaper. Produkt: combit Relationship Manager / address manager. Integration der Ansicht "Adressen" in eigene Solution

Softwaretechnik Teil Webprogrammierung (HTML, PHP) SS2011

Transkript:

Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Datenbanken und Informationssysteme II Szenario: Projektverwaltung. Es gibt Projekte, Projektleiter, Mitarbeiter und ihre Zuordnung zu Projekten. Aufgabe 1 (Trigger) [ ] a) Analysiere das relationale Schema aus Anhang A und erstelle ein ER-Diagramm (Notation mit min/max- Kardinalitäten). Bitte Attribute angeben, Schlüsselattribute unterstreichen, Not Null Statements beachten! b) Implementiere in PL/SQL einen Trigger, der beim Eintrag einer Projektmitarbeit überprüft, ob der Mitarbeiter nicht bereits aktuell (zum aktuellen Zeitpunkt) im Projekt tätig ist. In diesem Fall soll mittels RAISE_APPLICATION_ERROR(errno, msg)folgende Fehlermeldung ausgegeben werden: Der Mitarbeiter <vorname> <name> arbeitet bereits am Projekt <projektkuerzel> mit c) Modifiziere das relationale Modell, so dass auch mehrere Projektleiter für ein Projekt unterstützt werden. Erweitere dazu die Tabelle projekt_mitarbeit in geeigneter Weise und modifiziere falls notwendig auch weitere Tabellen entsprechend. In Anhang B finden sich einige DDL-Statements die dabei hilfreich sein könnten. Modifiziere anschließend auch das ER-Modell entsprechend. d) (Bonusaufgabe) Um die Einträge in der Datenbank aus der alten Struktur (genau ein Projektleiter) in die neue Struktur aus Aufgabenteil (c) zu überführen, muss vor dem Löschen der betreffenden Spalte ein SQL- Statement formuliert werden, das alle Projektleiter in die neue Struktur überführt. Wie lautet das Statement? Aufgabe 2 (PHP) [ ] Gegeben ist das Fragment einer OR-Schicht (Anhang B). Benutze das in Anhang A gegebene relationale Schema (ohne die Erweiterung aus Aufgabe 1c) und erweitere die OR-Schicht um folgende Methoden (Hinweis: du kannst entweder die MDB2 oder die MDB2_Util Library zur Implementierung der Methoden benutzen): Hinweis: Der heutige Tag kann mit dem PHP-Funktionsaufruf date('y-m-d') 1 ermittelt werden. Das Datumsformat sieht dann für den heutigen Tag so aus: 2013-07-10. Die alphanumerische Ordnung entspricht dabei der datumsmäßigen Sortierung (das kannst du ausnutzen). Du kannst weiterhin davon ausgehen, dass das Oracle Datumsformat genauso aussieht. a) Implementiere in der Klasse CRUD_Person eine Instanzenmethode arbeitet_mit($projekt). Die Methode soll den angegebenen Mitarbeiter dem als Parameter angegebenen Projekt (Instanz) ab dem heutigen Tag zuordnen. Als Ergebnis soll eine Instanz vom Typ ProjektMitarbeit zurückgeliefert werden. b) Erstelle die Klasse Projekt sowie darin eine Methode aktuelle_mitarbeiter(), welche alle Personen als Array zurückliefert die aktuell am Projekt beteiligt sind. Der Projektleiter soll an erster Stelle zurückgeliefert werden. Hinweis: Die Implementierung dieser Methode soll kein SQL-Statement enthalten. Schau dir die Methoden an die es schon gibt. 1 1

Fakultät für Informatik und Wirtschaftsinformatik SS 13 c) (Bonusaufgabe) Was macht die folgende Methode? Wie wird sie eingesetzt? function call($method, $params) { if (substr($method,0,3)=='get' and count($params)==0) { $property = strtolower(substr($method,3)); if (property_exists($this, $property)) return $this->$property; die("method '$method(...)' does not exist"); Aufgabe 3 (XML) [ ] a) Gegeben ist das in Anhang D dargestellte XML Dokument. Formuliere als XPATH (Input ist unterstrichen): - Wie heißt der Projektleiter des Projektes MINAM mit Nachnamen? - In wie vielen Projekten ist Thomas Schulz aktuell beschäftigt? - Wie viele Mitarbeiter hat das Projekt Eco-LaserFact aktuell (Datum: 2013-07-10)? b) Erstelle einen SQLX Ausdruck auf Basis von Anhang A, der für alle Mitarbeiter die Projekte auflistet, an denen sie beteiligt waren (oder sind). Mitarbeiter die bisher an keinem Projekt teilgenommen haben sollen nicht angezeigt werden. Die Ausgabe soll wie in Anhang E aussehen. c) Erstelle einen XQuery Ausdruck (Input ist die Datei aus Anhang D), der für alle Mitarbeiter (nach Nachnamen sortiert) die Projekte auflistet, an denen sie beteiligt waren (oder sind). Mitarbeiter die bisher an keinem Projekt teilgenommen haben sollen nicht angezeigt werden. Die Ausgabe soll wie in Anhang E aussehen. d) (Bonusaufgabe) Gehe davon aus, dass in der Spalte PROJEKT der Tabelle PROJEKT_XML jeweils als Datensatz ein Projekt gespeichert ist und in der Spalte PERSON der Tabelle PERSON_XML jeweils ein Personendatensatz (Format siehe Anhang D). Erstelle ein SQL-Statement, so dass der Mitarbeiter mit dem Nachnamen Schulz ab dem aktuellen Tag Mitarbeiter im Projekt Eco-LaserFact ist. e) Was macht das folgende Codefragment? CREATE or replace TRIGGER unbekanter_weise BEFORE INSERT OR UPDATE ON projekt_xml FOR EACH ROW DECLARE value xmlsequencetype; persons_found number; xml xmltype; cursor cur_p_ids (p xmltype) is select extractvalue(column_value,'/mitarbeiter/@id') id from table(select xmlsequence(p.extract('/projekt//mitarbeiter')) from dual); BEGIN for data in cur_p_ids(:new.projekt) loop select * into xml from person_xml where existsnode(person,'/person[@id="' trim(data.id) '"]')=1; end loop; END; 2

Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Anhänge: Anhang A: create table person ( personalnummer number, nachname varchar2(32) not null, vorname varchar2(32) not null, geburtsdatum date not null, beschaeftigt_seit date not null, ausgeschieden_am date, primary key(personalnummer) ); create table projekt ( projektnummer number, projektleiter_fk number not null references person(personalnummer), projektkuerzel varchar(20) not null, projektbeschreibung clob, projektstart date, laufzeit_in_monaten number, primary key (projektnummer) ); create table projekt_mitarbeit ( person_fk number not null references person(personalnummer), projekt_fk number not null references projekt(projektnummer) on delete cascade, anteil number(4,1) default 100.0, seit date default round(sysdate,'day'), -- Default: Aktueller Tag ohne Uhrzeit bis date, primary key(person_fk, projekt_fk, seit) ); Anhang B: add <attributname> <datentyp>; add <attributname> <datentyp> references <tabelle> (<primaerschluessel>); drop column <attributname>; add check (column_name in (value1, value2,...)); 3

Fakultät für Informatik und Wirtschaftsinformatik SS 13 Anhang C: class CRUD_Person { protected $personalnummer; // Primary key; protected $nachname; protected $vorname; protected $geburtsdatum; protected $beschaeftigt_seit; protected $ausgeschieden_am; function construct($dic) static function get($personalnummer) // liefert Personeninstanz mit der angegebenen Personalnummer zurück function tostring() class CRUD_Projekt { protected $projektnummer; // Primary key; protected $projektleiter_fk; protected $projektkuerzel; protected $projektbeschreibung; protected $projektstart; protected $laufzeit_in_monaten; function construct($dic) static function get($id) function projekt_mitarbeiter() // listet Array mit ProjektMitarbeit Instanzen (s.u.) zurück function tostring() function getprojektnummer() class CRUD_ProjektMitarbeit { protected $projekt_fk; protected $person_fk; protected $anteil; protected $seit; protected $bis; function construct($dic) function getseit() function getbis() function getprojekt() // liefert zugehoerige projektinstanz function getperson() // liefert zugehoerige Personeninstanz 4

Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Anhang D (XML-Dokument) <?xml version="1.0" encoding="utf-8"?> <projektmanagement> <projektliste> <projekt kuerzel="minam" projektleiter="p-34567"> <beschreibung>rhababer laber laber</beschreibung> <laufzeit> <von>2012-01-07</von> <dauer>12</dauer> </laufzeit> <projektmitarbeiter> <mitarbeiter id="p-45678" von="2013-07-01"/> </projektmitarbeiter> </projekt> <projekt kuerzel="eco-laserfact" projektleiter="p-23456"> <beschreibung>bla bla</beschreibung> <laufzeit> <von>2012-01-01</von> <dauer>24</dauer> </laufzeit> <projektmitarbeiter> <mitarbeiter id="p-56789" von="2012-01-01" bis="2012-12-31"/> <mitarbeiter id="p-56789" von="2013-07-01"/> </projektmitarbeiter> </projekt> </projektliste> <angestellte> <person id="p-12345"> <name>schulz</name> <vorname>stefan</vorname> <geburtsdatum>1969-01-05</geburtsdatum> <eintrittsdatum>1997-01-01</eintrittsdatum> </person> <person id="p-23456"> <name>dickerhof</name> <vorname>markus</vorname> <geburtsdatum>1966-11-06</geburtsdatum> <eintrittsdatum>1995-01-01</eintrittsdatum> </person> </angestellte> </projektmanagement> 5

Fakultät für Informatik und Wirtschaftsinformatik SS 13 Anhang E (SQLX/XQuery Ausgabeformat) <?xml version="1.0" encoding="utf-8"?> <projektliste-mitarbeiter> <mitarbeiter name="markus Dickerhof"> <projekt laufzeit="36" start="2013-01-01" name="smartframe"/> <projekt laufzeit="24" start="2012-01-01" name="eco-laserfact"/> </mitarbeiter> <mitarbeiter name="max Dobler"> <projekt laufzeit="12" start="2012-01-07" name="minam"/> <projekt laufzeit="36" start="2013-01-01" name="smartframe"/> <projekt laufzeit="24" start="2012-01-01" name="eco-laserfact"/> </mitarbeiter> <mitarbeiter name="filip Perisic"> <projekt laufzeit="24" start="2012-01-01" name="eco-laserfact"/> </mitarbeiter> </projektliste-mitarbeiter> 6