Datenbanken und Informationssysteme II

Ähnliche Dokumente
Datenbanken und Informationssysteme II (PO B.4)

Datenbanken und Informationssysteme II (PO B.3)

Datenbanken und Informationssysteme II

Probeklausur Datenbanken und Informationssysteme II

Datenbanken und Informationssysteme II

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

Probeklausur Datenbanken und Informationssysteme II

Probeklausur Datenbanken und Informationssysteme II

Probeklausur Datenbanken und Informationssysteme II

Probeklausur Datenbanken und Informationssysteme II (SS16)

Übungen zu XML & Datenbanken

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

XML und Datenbanken Fortsetzung

Übung PL/SQL Trigger Lösungen

Dr. Christian Senger DB & IS II, SS

Tutorium zum Aufbau einer objektrelationalen Abbildungsschicht in PHP (Version 2.8 vom )

Metadaten oder Metainformationen sind Daten, die Informationen über Merkmale anderer Daten enthalten, aber nicht diese Daten selbst (Wikipedia)

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

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

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - WS 2016 SQLX. Andreas Schmidt Oracle und XML (SQLX) 1/15

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

Object Relational Mapping Layer

Teil II. Erweiterte Konzepte innerhalb SQL

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

1 Relationenalgebra [8 P.] Gegeben seien die folgenden Relationenschemata: Hafen(HNR, Ort, Grundsteinlegung)

Übung ERM. Beispiel: Erstellung einer relationalen Datenbank

Tutorium zum Aufbau einer objektrelationalen Abbildungsschicht in PHP (Version 4.4 vom )

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

Beispiel zur referentiellen Integrität

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - WS Metadaten. Andreas Schmidt Metadaten 1/17

Kapitel 7: Referentielle Integrität

Praktische SQL-Befehle

Datenbanken im WI-Unterricht mit

Relationales Datenbanksystem Oracle

Einführendes Tutorium zu SQLX

Grundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich

5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp

Oracle 10g Einführung

Praktikum: Datenbankprogrammierung in SQL/ORACLE INHALT: SQL-3 STANDARD/ORACLE

4. Objektrelationales Typsystem Kollektionstypen. Nested Table

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

Datenbanken. Zusammenfassung. Datenbanksysteme

Praktikum: Datenbankprogrammierung in SQL/ORACLE INHALT: SQL-3 STANDARD/ORACLE

Prakt. Datenbankprogrammierung. Sommersemester Was sind Constraints? I,11: Verwendung von Constraints. Festlegung von Constraints

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #5. SQL (Teil 3)

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

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

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II SS XML und Datenbanken. Dr. Christian Senger. XML und Datenbanken 1

1 Hartmann Anna Cäcilienstr Köln (0221) Behrens-Hoffmeister Heidi Lindenweg Köln (0221)

Übung 01 Tabellen erstellen

DB I S. 1 Relationenalgebra [8 P.] Gegeben seien die folgenden Relationenschemata: Person(PNR, Vorname, Nachname, Geburtsdatum, Wohnort Ort.

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

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Grundlagen von Datenbanken

3.3. Implementierung in SQL DDL-Grundlagen Constraint-Verzögerung Implementierungs-Strategien

Erstellen und Verwalten von Tabellen

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

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

Handout. - NoSQL Datenbanken -

4.14 Integrität und Trigger

Semesterklausur. Hinweise:

5. SQL: Erstellen von Tabellen. Erzeugen und Löschen von Tabellen. Umgang mit Bedingungen (Constraints) Einfügen und Löschen von Daten

Modell/Metamodell. Generated Source Code. Generator. Model. Fakultät für Informatik und Wirtschaftsinformatik MDSD - SS 2014

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Trigger. Andreas Schmidt Trigger 1/25

Einführung SQL Data Definition Language (DDL)

Objekt-relationales Datenbanksystem Oracle

Aufgaben eines Codegenerators

Wiederholung VU Datenmodellierung

Themenkomplexe. Weiterführende Konzepte relationaler Datenbanken. Objektrelationale Abbildungsschicht. XML und Datenbanken

C++ Anwendungskurs Tag 4: Datenbanken Daniela Horn Institut für Neuroinformatik Real-time Computer Vision

Der Standard SQL/XML

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

6.2 Datenbanken SQL - Einführung

Kapitel 3: Datenbanksysteme

Wiederholung VU Datenmodellierung

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

Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern

XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN. 4. Übung SQL/XML

MNR NAME VORNAME STRASSE PLZ ORT TELEFON

Kapitel 3: Datenbanksysteme

5. SQL: Erstellen von Tabellen

XML in der Oracle Datenbank "relational and beyond"

PHP Schulung Beginner. Newthinking Store GmbH Manuel Blechschmidt

Datenbanksysteme I WS 18/19 Teillösung Übungsblatt 4-6

Kapitel 2: Das Relationale Modell

Visualisierung in Informatik und Naturwissenschaften

Beispiele zum Einsatz von XML in Oracle

SQL structured query language

Datenintegrität. Kapitel 5 1

Präsentation mongodb. David Wild

Kapitel 7 TEIL II: Dies und Das

Aufgabe 1: XML Retrieval (theoretisch / praktisch)

Datenbanken (Bachelor) (SPO2007) WS 2009/10

Transkript:

Datenbanken und Informationssysteme II Szenario: Mondial (zugehöriges DDL-Schema in Anhang A) Es gibt Länder, Provinzen, Städte und Grenzen. Aufgabe 1 (Trigger) [23 + 5] a) Analysiere das relationale Schema aus Anhang A und erstelle ein ER-Diagramm (Chen Notation mit min/max- Kardinalitäten). Bitte Attribute angeben, Schlüsselattribute unterstreichen, Not Null Statements beachten! Erstelle einen Trigger, der beim Update einer Stadt (Zuordnung zu einer anderen Provinz), die Einwohnerzahl der beteiligten Provinzen entsprechend der Einwohnerzahl der Stadt anpasst. Hinweis: Beachte, dass sich bei einem Update auch die Einwohnerzahl der Stadt ändern kann. Der Fall, dass eine Provinzhauptstadt verschoben wird muss nicht behandelt werden (Foreign Key Constraint Violation). b) Welchen Input bekommt der Trigger? Formuliere verbal welche einzelnen Schritte innerhalb des Triggers ausgeführt werden müssen. c) Implementiere den Trigger in PL/SQL. d) (Bonusaufgabe): Ändere das relationale Modell so ab, dass Grenzen zwischen Provinzen abgespeichert werden können. Wird dadurch die Tabelle borders (Anhang A) überflüssig? - warum? Aufgabe 2 (PHP) [16 + 10] Gegeben ist der in Anhang B dargestellte Programmierrahmen für eine objektrelationale Abbildungsschicht in PHP. Dieser Rahmen stellt in Basisklassen Zugriffsfunktionalität bereit. Grundlage ist weiterhin das relationale Schema aus Anhang A. Erweitere den Rahmen um folgende Methoden: a) Erstelle in der Klasse CRUD_Province eine Methode setcapital($city), welche die Provinzhauptstadt (Parameter $city ist eine Instanz) setzt. b) Erstelle eine von der Klasse CRUD_Country abgeleiteten Klasse Country mit einer Methode getcities(), welche alle Städte des Landes ausgibt (in Form eines Arrays mit Instanzen vom Typ City). Nutze dazu die Funktionalität der Basisklassen (kein SQL!) c) (Bonusaufgabe): Überschreibe in der Klasse Province die zuvor in der Oberklasse CRUD_Province definierte Methode setcapital($city), durch eine Version, die vor dem Setzen der neuen Hauptstadt überprüft, ob sich die Stadt überhaupt in der betreffenden Provinz befindet. Befindet sich die Stadt in einer anderen Provinz, so soll die Ausführung mit folgender Meldung beendet werden: Die Stadt <Stadtname> liegt in <Provinzname1> (<Länderkuerzel1>) und nicht in <Provinzname2> (Länderkürzel2) (bitte wenden ) 1

Hochschule Karlsruhe Technik und Umwelt- 2.7.2009 Fakultät für Informatik und Wirtschaftsinformatik SS 09 Aufgabe 3 (XML) [28 + 8] a) Gegeben ist das XML-Dokument in Anhang C. Formuliere folgende Anfragen mittels XPath (Inputs sind unterstrichen): - wie lange ist die Außengrenze von Deutschland? - zu welchem Land (Name des Landes) gehört die Insel Korfu? - wie viele französische Inseln gibt es? (Input France) b) Was ist das Ergebnis der folgernden Anfrage (Ausgabeformat, Anzahl Datensätze, Inhalt)? select extractvalue(column_value, '/*/name/text()') col1, extractvalue(column_value, '/*/population/text()') col2 from table (select xmlsequence(extract(xml_document, '//country[population/text()>50000000]')) from mondial_in_one) order by extract(column_value, '/*/population/text()').getnumberval() desc; Hinweis: Die Tabelle mondial_in_one enthält genau einen Datensatz, der den kompletten Mondial-Datensatz im XML_Format (entsprechend Anhang C) enthält. c) Erstelle ein SQLX Statement, das auf Basis des relationalen Schemas in Anhang A, die folgende Ausgabe liefert (Pro Land sollen alle in diesem Land vertretenen Religionen samt Prozentsatz ausgegeben werden): <land id="zambia"> <religion prozent="50">christian</religion> <religion prozent="24">muslim Hindu</religion> </land> <land id="zimbabwe"> <religion prozent="1">muslim</religion> <religion prozent="25">christian</religion> </land> d) (Bonusaufgabe): Erstelle ein XQuery-Statement, das als Output ein XML-Dokument mit folgender DTD hat: <!ELEMENT nachbarlaender (land+) > <!ELEMENT land EMPTY> <!ATTLIST land name CDATA #REQUIRED hauptstadt CDATA #REQUIRED> Das Dokument soll für alle Nachbarstaaten von Deutschland den Landesnamen und die Hauptstadt (jeweils als Attribut) ausgeben. 2

Anhänge: Anhang A: CREATE TABLE Country ( code VARCHAR2(4) PRIMARY KEY, name VARCHAR2(32) NOT NULL UNIQUE, capital VARCHAR2(35) NOT NULL, capital_province VARCHAR2(32) NOT NULL, population NUMBER CREATE TABLE Province ( name VARCHAR2(32), country VARCHAR2(4) REFERENCES Country(code), population NUMBER, capital VARCHAR2(35) NOT NULL, PRIMARY KEY (name, country), FOREIGN KEY(country) REFERENCES Country(code) CREATE TABLE City ( name VARCHAR2(35), country VARCHAR2(4), province VARCHAR2(32), population NUMBER, PRIMARY KEY (Name, Country, Province), FOREIGN KEY(country, province) REFERENCES Province(country, name) CREATE TABLE borders ( country1 VARCHAR2(4) not null references Country(code) on delete cascade, country2 VARCHAR2(4) not null references Country(code) on delete cascade, length NUMBER, PRIMARY KEY (country1,country2) ALTER TABLE Country ADD ( FOREIGN KEY( capital, code, capital_province) REFERENCES CITY( name, country, province) ALTER TABLE Province ADD ( FOREIGN KEY( capital, country, name) REFERENCES CITY( name, country, province) HIER HAT DIE TABELLE GEO_RELIGION GEFEHLT!! 3

Hochschule Karlsruhe Technik und Umwelt- 2.7.2009 Fakultät für Informatik und Wirtschaftsinformatik SS 09 Anhang B: class CRUD_City { protected $country; protected $province; static function getbyid($name, $country, $province) { function getname() { return $this->name; function getprovince() { // liefert Instanz der zugehörigen Provinz zurück class CRUD_Province { protected $country; protected $capital; protected $capprov; static function getbyid($name, $country) { function getcities() { // liefert Array von Städten zurück function setcapital($city) { function getcountry() { // liefert Landinstanz zurück function getname() { return $this->name; class CRUD_Country { protected $code; protected $capital; protected $province; static function getbyid($code) { function setcapital($city) { function getprovinces() { // liefert Array von Provinzen zurück function getname() { return $this->name; function getid() { return $this->code; 4

Anhang C (XML-Dokument) <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE simple-mondial SYSTEM "simple-mondial.dtd"> <simple-mondial> <country car_code="f" area="547030" capital="cty-france-paris"> <name>france</name> <population>58317450</population> <encompassed continent="europe" percentage="100"/> <religions percentage="1">muslim</religions> <religions percentage="1">jewish</religions> <languages percentage="100">french</languages> <border country="and" length="60"/> <border country="e" length="623"/> <border country="d" length="451"/> <province id="prov-cid-cia-france-2" capital="cty-france-strasbourg"> <name>alsace</name> <area>8280</area> <population>1624000</population> <city id="cty-france-strasbourg" is_state_cap="yes"> <name>strasbourg</name> <population>252338</population> </city> </province> </country> <island id="island-guadeloupe" country="f"> <name>guadeloupe</name> <area>1780</area> </island> <island id="island-martinique" country="f"> <name>martinique</name> <area>1100</area> </island> </simple-mondial> 5