Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr

Ähnliche Dokumente
Datenmodelle und Datenbanken 2

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

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Objektrelationale, erweiterbare Datenbanken WS 04/05

Philipp Cimiano AG Semantische Datenbanken und Wissensverarbeitung

Die Anweisung create table

E-R-Modell zu Relationenschema

Praktische SQL-Befehle 2

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

Datenbanksysteme 2013

Datenbanken. Zusammenfassung. Datenbanksysteme

Übung Datenbanksysteme Updates, Integritätsbedingungen, funktionale Abhängigkeiten

Grundlagen von Datenbanken

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

Moderne Datenbankkonzepte

Entwicklungsumgebung für die Laborübung

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

Objektorientierung unter Oracle richtet sich einerseits nach objekt-orientierten Programmiersprachen wie Java,

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

5. Objekt-relationale Systeme 5.1. Erweiterungen des Relationalen Modells 5.2. SQL-Erweiterungen 5.3. MM-DB

Datenbanken 1. Sommersemester Übung 1

Garten - Daten Bank. - survival pack -

Übersicht der wichtigsten MySQL-Befehle

Strukturierte Objekttypen

Vorlesung Datenbanken II SS 2006

Datenbanken. Seminararbeit. Einführung in das wissenschaftliche Arbeiten

4. Objektrelationales Typsystem Kollektionstypen. Nested Table

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

PostgreSQL unter Debian Linux

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

Logischer Entwurf und Dokumentation objektrelationaler Oracle Datenbanken

Logischer Entwurf. Stufen der Entwicklung einer Datenbank. Inhalt. Übersicht. 1. Datenbank - Entwurf ( ER - Diagramm)

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

Erstellen und Verwalten von Tabellen

DB I S. 1 Referentielle Aktionen [10 P.] Gegeben sei folgende Datendefinition:

Datenbankentwicklung

Objektrelationale Datenbanken. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Aufgabe 1: Integrität

Überblick Felix Naumann. Zugriffsrechte Zugriffsrechte erzeugen Zugriffsrechte prüfen Zugriffsrechte vergeben Zugriffsrechte entziehen

Übung 01 Tabellen erstellen

Kapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

12. Datenschutz: Zugriffsrechte in SQL Datenschutz: Zugriffsrechte in SQL

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

Datenschutz: Zugriffsrechte in SQL

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

Datenbanken im WI-Unterricht mit

8. Tabellendefinition in SQL 8-1. Tabellendefinitionen

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr. Praktikum: Datenbanken Woche 7: Noch mehr SQL

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 6 - Musterlösung

Üben von DDL und DML. Ergebnis:

7. Datenbankdefinitionssprachen

6. Trigger Charakterisierung von Triggern. 6. Trigger. Trigger definieren automatische Reaktionen auf Ereignisse, die durch Datenmanupilationen

Objektrelationale und erweiterbare Datenbanksysteme

Objektrelational: Einbettung der schwachen Entitätsmenge als tablewertiger Typ (NF2)

Am Campus Bockenheim, im Sozialzentrum/Neue Mensa Foyer. zwischen 10 Uhr und 16 Uhr Der Eintritt ist kostenfrei.

Labor 3 - Datenbank mit MySQL

Versehen Sie jedes Aufgabenblatt/-blätter mit Ihrem Namen und geben es mit ab! Seite 1

Webbasierte Informationssysteme

Praktische SQL-Befehle

Objektrelationale Datenbanken

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

Eine Einführung in MySQL

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

Garten -Daten Bank. Was ist das? Dr. Karsten Tolle PRG2 SS 2014

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

Wiederholung VU Datenmodellierung

Datenbanken Einführung Seite 1 von 7

DB-Datenbanksysteme. DB SQL-DML 1 Mario Neugebauer

Übung ERM. Beispiel: Erstellung einer relationalen Datenbank

5.2 Entity-Relationship-Modell

Integritätsbedingungen für komplexe Objekte in objektrelationalen Datenbanksystemen

Kapitel 1: Einführung 1.1 Datenbanken?

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Wiederholung VU Datenmodellierung

Erzeugung und Veränderung von Tabellen

Im Folgenden möchten wir Ihnen einige Beispiele aufzeigen, wie ALTER TABLE gemäß SQL92 verwendet wird:

Oracle 10g Einführung

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Datenbanksysteme I Integrität und Trigger Felix Naumann

Vorlesung Datenbanksysteme Endklausur

PRG2 Folien Zicari Teil 5. Einführung in Datenbanken SS 2007

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

SQL structured query language

Datenbanksysteme noch Kapitel 7: SQL Vorlesung vom Oliver Vornberger. Institut für Informatik Universität Osnabrück

Relationales Datenbanksystem Oracle

Probeklausur mit Musterlösung

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

Schnellübersichten. SQL Grundlagen und Datenbankdesign

10. Datenbank Design 1

Gregor Kuhlmann Friedrich Müllmerstadt. MySQL. Der Schlüssel zu Datenbanken-Design und -Programmierung. c 3 E. i- O Rowohlt Taschenbuch Verlag

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Datenbanksysteme II SS 2017 Übungsblatt 3 Teillösung

Kapitel 5. Objektrelationale Datenmodell- und Spracherweiterungen kommerzieller Datenbanksysteme. Objektrelationale Erweiterungen in Oracle9i

Objektrelationale Erweiterungen in DB2

Transkript:

Raum: LF 230 Nächste Sitzung: 19./22. Januar 2004 Die Dokumentation zu DB2 steht online zur Verfügung. Eine lokale Installation der Dokumentation findet sich unter der Adresse http://salz.is.informatik.uni-duisburg.de/db2doc/de_de/index.htm. Die englischsprachigen Handbücher für IBM DB2 V8.1 liegen als PDF Dateien lokal im Verzeichnis /usr/projects/db2doc/. Diese Handbücher sind sehr umfangreich und sollten nur zum Betrachten am Bildschirm herangezogen und nicht ausgedruckt werden. Die Referenzen in diesem Arbeitsblatt beziehen sich auf diese Handbücher. Die gleichen Informationen sind jedoch auch in der Online-Dokumentation zu finden. Einführung IBM DB2 V8.1 ist ein objektrelationales Datenbankmanagementsystem. Obwohl das relationale Datenbankkonzept ausgereift, leistungsfähig und theoretisch fundiert ist, ist es für viele Anwendungsfälle unbefriedigend, da es die Modellierung komplexerer Aufgabenstellungen nicht unterstützt. Genau hierzu sind aber objektorientierte Datenbanken in der Lage, die allerdings keinen vollständigen Ersatz für relationale Datenbanken darstellen, da sie in den klassischen Anwendungen für relationale Systeme, also der Verwaltung großer, einfach strukturierte Datenbestände konzeptionelle Nachteile haben. Objektrelationale Datenbanksysteme wurden entwickelt, um die Vorteile des objektorientierten und des relationalen Konzeptes zu vereinen und dabei deren jeweilige Nachteile auszuschalten. Wir können die objektrelationalen Konzepte hier nur kurz anreißen. Mehr Informationen (auch zahlreiche Beispiele) gab es in der Vorlesung. Das entsprechende Material steht zum Nachlesen im Web zur Verfügung: http://www.is.informatik.uni-duisburg.de/teaching/lectures/db_ws02/folien/ordms.pdf. Strukturierte Typen Mit strukturierten Typen (UST) lassen sich in objektrelationalen Datenbanken komplexere Objekte modellieren. Diese können auf das in rein relationalen Datenbanken fehlende Konzept der Vererbung (siehe Arbeitsblatt 2 und 3) zurückgreifen. Ein strukturierter Typ kann Attribut und Methoden an seine Subtypen vererben. Man kann strukturierte Typen auch verschachteln. Speichern kann man Instanzen eines UST als Tupel in einer typisierten Tabelle, deren Attribute durch Namen und Attribute des UST bestimmt werden oder aber als Werte eines Attributes in einer Tabelle. Typisierte Tabellen identifizieren Instanzen eines UST über den Objektidentifikator (OID). Tupel können so ganz unabhängig von ihren Werten referenziert werden, anders als mit Fremdschlüsseln in rein relationalen DBMS. Erstellt werden strukturierte Typen mit dem Befehl CREATE TYPE. Man unterscheidet zwischen instantiierbaren und nicht instantiierbaren Typen. Nicht instantiierbare Typen können nicht in einer Tabelle verwendet werden, nur als Attribute einer Tabelle. Dieses Attribut darf als Werte dann nur entweder NULL oder aber Instanzen S. 427 Seite 1 von 5

von instantiierbaren Subtypen dieses Typs annehmen. Im Normalfall sind USTs aber instantiierbar. Man löscht einen UST mit DROP TYPE typname, verändern kann man einen bereits definierten UST mit dem Befehl ALTER TYPE. Man kann nachträglich Attribute zum Typ hinzufügen oder löschen, bzw. Methoden hinzufügen oder löschen (siehe unten). Beispiel: CREATE TYPE adresse_typ AS ( Strasse VARCHAR(25), HNr SMALLINT, PLZ INT, Stadt VARCHAR(25) S. 83 CREATE TYPE telefon_typ AS ( Vorwahl SMALLINT, Nummer INT, Art VARCHAR(10) CREATE TYPE person_typ AS ( Name VARCHAR(50), GebDatum DATE ) NOT INSTANTIABLE MODE DB2SQL; CREATE TYPE kunde_typ UNDER person_typ AS ( KundenNr INT, Adresse adresse_typ, TelNr telefon_typ, HandyNr telefon_typ Typisierte Tabellen Eine typisierte Tabelle wird mit einer syntaktischen Variante des CREATE TABLE erzeugt. Sie kann nur Instanzen des festgelegten Typs aufnehmen. Um das obige Beispiel aufzunehmen, könnte man eine Tabelle Kunden erstellen, deren Tupel Instanzen des USTs kunde_typ sind: CREATE TABLE kunden OF kunde_typ (REF IS Oid USER GENERATED, kundennr WITH OPTIONS NOT NULL); Über REF IS wird ein OID-Attribut festgelegt. Dieses ist für jedes Tupel einzigartig und muß beim Eingeben des Tupels vom Benutzer angegeben werden. Es kann nachträglich nicht verändert werden. Man kann für einzelne Attribute des USTs zusätzliche Optionen festlegen, hier zum Beispiel die Bedingung, dass die Kundennr. keinen NULL-Wert annehmen darf. Auch für Tabellen kann es Hierarchien geben, d.h. eine Tabelle kann Untertabelle (Subtabelle) einer anderen sein. Der UST der Untertabelle muß ein direkter Subtyp S. 332 Seite 2 von 5

des UST der Obertabelle sein. Die Subtabellen erben dann das OID-Attribut und alle Attribute der Obertabelle. Vorhandene SELECT-Rechte werden übernommen. Angenommen es existieren bereits USTypen angestellter_typ, bedienung_typ und manager_typ, und letztere beiden Typen sind Subtypen von angestellter_typ dann könnte eine beispielhafte (und sehr kleine) Hierarchie so aussehen: CREATE TABLE angestellte OF angestellter_typ (REF IS Oid USER GENERATED); CREATE TABLE bedienungen OF bedienung_typ INHERIT SELECT PRIVILEGES; CREATE TABLE manager OF manager_typ INHERIT SELECT PRIVILEGES; Gelöscht wird eine typisierte Tabelle über den DROP TABLE Befehl, aber nur, falls keine Untertabellen zu dieser existieren. Mit DROP HIERARCHY Wurzeltabelle läßt sich auch eine ganze Tabellenhierarchie löschen. Methoden Wie aus der objektorientierten Programmierung bekannt, können auch strukturierte Typen Methoden haben. Diese können beim Anlegen eines neuen USTs (CREATE TYPE) oder nachträglich mit ALTER TYPE spezifiziert werden. Bei der Spezifikation verfährt man wie vom Erstellen benutzerdefinierter Funktionen bekannt. Insbesondere ist anzugeben, ob die Methode DETERMINISTIC oder NOT DETERMINISTIC ist, und ob sie andere Tabellen ausliest. Man erstellt die Methode entweder als extern oder intern implementierte Methode mit dem Befehl CREATE METHOD. Im folgenden Beispiel wurde eine interne Implementierung gewählt. Um eine Methode wieder zu löschen benutzt man DROP METHOD methode FOR typ. CREATE TABLE geliehene_dvds ( kunde REF(kunde_typ) SCOPE kunden, titel VARCHAR(50), rueckgabe DATE ) S. 288 ALTER TYPE kunde_typ ADD METHOD ist_ueberfaellig () RETURNS CHAR(1) LANGUAGE SQL READS SQL DATA NO EXTERNAL ACTION NOT DETERMINISTIC CREATE METHOD ist_ueberfaellig() FOR kunde_typ BEGIN ATOMIC IF EXISTS (SELECT titel FROM geliehene_dvds WHERE rueckgabe < current_date Seite 3 von 5

AND SELF..kundennr = DEREF(geliehene_dvds.kunde)..kundennr) THEN RETURN y ; ELSE RETURN n ; END IF; END Anwendung der Konzepte Einfügen von Tupeln in typisierte Tabellen INSERT INTO kunden (Oid, name, gebdatum, kundennr, adresse, telnr, handynr) VALUES ( kunde_typ( a ), Musterfrau, Hanna, 1981-11-02, 123456789, adresse_typ()..strasse( Musterweg )..hnr(2)..plz(12345)..stadt( Musterstadt ),..vorwahl(555)..nummer(1234567),..vorwahl(777)..nummer(7654321)), (kunde_typ( b ), Mustermann, Peter, 1969-10-17, 987654321, adresse_typ()..strasse( Musterstrasse )..hnr(18)..plz(12543)..stadt( Musterdorf ),..vorwahl(555)..nummer(3456789),..vorwahl(777)..nummer(9876543)); INSERT INTO geliehene_dvds VALUES (kunde_typ( a ), Terminator, 2004-01-01 ); INSERT INTO geliehene_dvds VALUES (kunde_typ( b ), Titanic, 2004-02-01 ); Seite 4 von 5

Anfragen mit strukturierten Datentypen SELECT name, CHAR(adresse..plz) CONCAT CONCAT adresse..stadt AS stadt FROM kunden WHERE adresse..stadt= Musterstadt ; NAME STADT -------------------------------------------------- ------------------- Musterfrau, Hanna 12345 Musterstadt SELECT name, kundennr FROM kunden WHERE OID->ist_ueberfaellig()= y ; NAME KUNDENNR -------------------------------------------------- ----------- Musterfrau, Hanna 123456789 Aufgaben (a) Erstellt die Typen und Tabellen aus den Beispielen des Arbeitsblatt in Eurer Datenbank. Die Tabellen sollen Kunden- und Angestelltendaten eines DVD- Verleihs fassen. Ergänzt sie, wenn nötig. (b) Benutzt die Modellierung der Miniwelt Filme und Serien, um daran die objektrelationalen Konzepte zu testen. (i) Erstellt eine Typhierarchie für Personen, SchauspielerInnen, Regisseure, Komponisten, Autoren. (ii) Macht das gleiche für Produktionen, Filme und Serien. (iii) Legt Tabellen zu den unter (a) und (b) erstellten USTs an, und füllt sie mit einigen Daten. (iv) In der rein relationalen Beispieldatenbank IMDB23 gibt es eine Relation spielt_in. Jedes Tupel beschreibt eine Rolle, die ein Schauspieler (eine Schauspielerin) in einer Produktion gespielt hat. Dabei sind Produktion und Jahr Fremdschlüssel auf die Tabellen Serie bzw. Film. Name ist ein Fremdschlüssel auf die Tabelle Person. Wie könnte diese Tabelle aussehen, wenn man objektrelationale Konzepte benutzt? Erstellt sie in Eurer Datenbank. (v) Formuliert einige Anfragen, um die objektrelationalen Konzepte zu testen. (c) Der DVD-Verleih hat einen Bestand an DVDs. Diese sollen in einer Tabelle festgehalten werden. Eine DVD hat eine eindeutige ID, einen Titel, eine Laufzeit und einen Regionalcode; außerdem ist jeder DVD ein Film bzw. eine Serie aus der Filmdatenbank zugeordnet. Es kann mehrere verschiedene DVDs zu einem Film geben (extended versions, directors cuts, etc.), ausserdem hat der DVD- Verleih von populären Titeln mehrere DVDs auf Lager. Erstellt eine Tabelle DVDs, die Referenzen auf die zuvor erstellte Tabelle für Filme enthält. Seite 5 von 5