4. Datenbankdefinitionssprachen



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

7. Datenbankdefinitionssprachen

Objektrelationale Datenbanken

Einleitung create table Integritätsbed. alter/ drop table Index ODL. Einleitung. create table. alter/ drop table Index ODL. Einleitung.

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

Informations- und Wissensmanagement

Objektrelationale und erweiterbare Datenbanksysteme

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

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

Die Anweisung create table

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

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

SQL (Structured Query Language) Schemata Datentypen

3. Das Relationale Datenmodell

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

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

SQL objektorientiert

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

Kapitel DB:VI (Fortsetzung)

Objekt-relationales Datenbanksystem Oracle

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

Client-Server-Beziehungen

Datenmanagement in Android-Apps. 16. Mai 2013

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Referentielle Integrität

3 Objektorientierte Konzepte in Java

Oracle: Abstrakte Datentypen:

Strukturierte Objekttypen

Referentielle Integrität

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

Vorkurs C++ Programmierung

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

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Datenintegrität. Bisherige Integritätsbedingungen

Kapitel 3: Datenbanksysteme

XML-Namensräume. Marc Monecke

Vorlesung. Grundlagen betrieblicher Informationssysteme. Prof. Dr. Hans Czap. Lehrstuhl für Wirtschaftsinformatik I

Computeranwendung und Programmierung (CuP)

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

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Referenzielle Integrität SQL

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

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

Objektorientierte Programmierung. Kapitel 12: Interfaces

Prozedurale Datenbank- Anwendungsprogrammierung

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Programmieren Tutorium

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

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

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

2. Datenbank-Programmierung

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Vorlesung "Software-Engineering"

SQL und MySQL. Kristian Köhntopp

XML Schema vs. Relax NG

SQL: statische Integrität

Relationale Datenbanken in der Praxis

7. Übung - Datenbanken

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Objektorientierte Programmierung

Objektrelationale, erweiterbare Datenbanken WS 04/05

Prinzipien Objektorientierter Programmierung

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Philipp Cimiano AG Semantische Datenbanken und Wissensverarbeitung

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

Arrays Fortgeschrittene Verwendung

Grundlagen von Python

Modul 122 VBA Scribt.docx

Klausur Interoperabilität

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

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Sichten II. Definition einer Sicht. Sichten. Drei-Ebenen-Schema-Architektur. Vorteile Vereinfachung von Anfragen Strukturierung der Datenbank

Kapitel 6. Vererbung

4. Objektrelationales Typsystem

Kapitel 6. Vererbung

Datenbanken. Sommersemester 2010 Probeklausur

Datenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs])

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

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Objektorientierte PL/SQL- Programmierung

Klaus Schild, XML Clearinghouse Namensräume

4. Datenbanksprache SQL

SQL. Fortgeschrittene Konzepte Auszug

Schlüssel bei temporalen Daten im relationalen Modell

Assoziation und Aggregation

Programmieren in Java

Kommunikation und Datenhaltung

Bedingungen über Werte Statische Integrität. CHECK-Klausel

Arbeiten mit einem lokalen PostgreSQL-Server

4. Objektrelationales Typsystem Kollektionstypen. Nested Table

Software-Engineering Einführung

Kapitel 6. Vererbung

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

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Software Engineering Klassendiagramme Assoziationen

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Objektorientierung in Oracle

Transkript:

4. Datenbankdefinitionssprachen SQL-DDL ODL (Object Definition Language) für objektorientierte Datenbanksysteme nach dem ODMG-Standard Objektrelationale Konzepte DDL-Erweiterungen von SQL:1999 Oracle9i XML: DTD und XML Schema VL Objektrelationale Datenbanken 4 1 4.1. Relationales Modell: SQL-DDL SQL-DDL umfaßt alle Klauseln von SQL, die mit Definition von Typen Wertebereichen Relationenschemata Integritätsbedingungen zu tun haben VL Objektrelationale Datenbanken 4 2 Anforderungen an eine relationale DDL nach Codd 1982 Sprachmittel zur Definition von 1. Attributen 2. Wertebereichen 3. Relationenschemata 4. Primärschlüsseln 5. Fremdschlüsseln Praxis SQL-89: Relationenschemata mit Attributen und Wertebereichen ab SQL-92 vollständig VL Objektrelationale Datenbanken 4 3

SQL als Definitionssprache Externe Ebene create view, drop view Konzeptuelle Ebene create table, alter table, drop table Konzeptuelle Ebene (SQL-92) create domain, alter domain, drop domain Interne Ebene create index, alter index, drop index VL Objektrelationale Datenbanken 4 4 Die Anweisung create table create table basisrelationenname ( spaltenname_1 wertebereich_1 [not null], spaltenname_k wertebereich_k [not null]) VL Objektrelationale Datenbanken 4 5 Erlaubte Wertebereiche in create table integer (oder auch integer4, int), smallint (oder auch integer2) float(p) (oder auch kurz float) decimal(p,q) und numeric(p,q) mit jeweils q Nachkommastellen character(n) (oder kurz char(n), bei n = 1 auch char) für Strings fester Länge n character varying(n) (oder kurz varchar(n)) für Strings variabler Länge bis zur Maximallänge n bit(n) oder bit varying(n) analog für Bitfolgen date, time bzw. timestamp für Datums-, Zeit- und kombinierte Datums-Zeit-Angaben VL Objektrelationale Datenbanken 4 6

Beispiel Tabellendefinition mit SQL-92 create table Buecher ( ISBN char(10), Titel varchar(200), Verlagsname varchar(30), primary key (ISBN), foreign key (Verlagsname) references Verlage (Verlagsname) ) VL Objektrelationale Datenbanken 4 7 Erweiterungen in SQL-92 Neben Primär- und Fremdschlüssel in SQL-92: default-klausel: Defaultwerte für Attribute create domain-anweisung benutzerdefinierte Wertebereiche check-klausel weitere lokale Integritätsbedingungen innerhalb der zu definierenden Wertebereiche, Attribute und Relationenschemata VL Objektrelationale Datenbanken 4 8 Definition eines Wertebereichs create domain Gebiete varchar(20) default Informatik create table Vorlesungen ( V_Bezeichnung varchar(80) not null, SWS smallint, Semester smallint, Studiengang Gebiete ) create table Mitarbeiter ( PANr integer not null, AngNr char(10) not null, Fachbereich Gebiete, Gehalt decimal(10,2), Raum integer, Einstellung date ) VL Objektrelationale Datenbanken 4 9

Integritätsbedingungen mit check create domain Gebiete varchar(20) default Informatik check ( value in ( Informatik, Mathematik, Elektrotechnik, Linguistik ) ) VL Objektrelationale Datenbanken 4 10 Integritätsbedingungen mit check /2 create table Vorlesungen ( V_Bezeichnung varchar(80) not null, primary key, SWS smallint check(sws 0), Semester smallint check( Semester between 1 and 9), Studiengang Gebiete ) VL Objektrelationale Datenbanken 4 11 Integritätsbedingungen mit check /3 create table Buch_Versionen ( ISBN char(10), Auflage smallint check(auflage > 0), Jahr integer check (Jahr between 1800 and 2020), Seiten integer check(seiten > 0), Preis decimal(8,2) check(preis 250), primary key (ISBN, Auflage), foreign key (ISBN) references Bcher (ISBN), check ((select sum(preis) from Buch_Versionen)< (select sum(budget) from Lehrsthle))) VL Objektrelationale Datenbanken 4 12

4.2. Objektorientiertes Modell: ODL Datendefinitionssprache der ODMG für Objektdatenbanken programmiersprachenneutral (Erweiterung der OMG-IDL) Beschreibung der Schnittstellen (Objekttypen) Attribute, Beziehungen, Methodensignaturen Implementierung in konkreter Programmiersprache Mapping für C++, Java, Smalltalk Präprozessor, Schema-Compiler VL Objektrelationale Datenbanken 4 13 ODL: Konzepte Schnittstelle: Spezifikation des abstrakten Verhaltens eines Typs Klasse: Spezifikation des abstrakten Verhaltens und Zustands eines Typs Attribut: benannte Eigenschaften von Literal- oder Objektdatentypen Beziehungen: Verweise (Referenzen) auf andere Objekte (einstellig/mehrstellig) Operationen: Methoden mit Parametern, Rückgabewert, Ausnahmen VL Objektrelationale Datenbanken 4 14 ODL: Beispiel class Student : Person ( extent Studenten, key matrnr) attribute char matrnr[6]; attribute string studienfach; attribute set<struct<float note, string fach>> zeugnis; relationship Person mutter inverse Person::kind; relationship Person vater inverse Person::kind; } float durchschnittsnote () raises (keine_note); void exmatrikulation (in string art) raises (buecher_ausgeliehen); VL Objektrelationale Datenbanken 4 15

Erläuterung ODL-Beispiel Objekttyp Personen beschreibt Typhierarchie: Angabe der Obertypen hinter dem Typnamen (hier: Obertyp Person) Extension, in der die aktuell erzeugten Objekte vom Typ Student gesammelt werden sollen (hier: Extension mit dem Namen Studenten) Schlüssel des Objekttyps, eine Auswahl der Attribute, die zur eindeutigen Identifizierung der Objekte unabhängig von der Objektidentität verwendet werden können (hier: nur das Attribut matrnr) Attribute mit Datentypen und Namen VL Objektrelationale Datenbanken 4 16 Erläuterung ODL-Beispiel /2 Beziehungen zu anderen Klassen mit dem Wortsymbol relationship auch inverse Beziehungen ermöglichen Wahl zwischen 1:1-, 1:n, und n:m- Kardinalitäten hier: zwei 1:n-Beziehungen Vater und Mutter zwischen Studenten und Personen, da nur die Rückrichtung einen Set-Typ enthält: set<person> kind Methoden mit ihrer Schnittstelle und einer spezifizierten Ausnahmebehandlung, die im Fehlerfall ausgelöst wird (etwa bei Verletzung von Integritätsbedingungen) VL Objektrelationale Datenbanken 4 17 ODL: Vererbung isa-beziehung (Generalisierung/Spezialisierung): Vererbung von Verhalten interface Object { }; interface Dokument : Object { }; extends-beziehung: Vererbung von Verhalten und Zustand (nur Einfachvererbung) class Buch : Dokument { }; class Monographie extends Buch { }; VL Objektrelationale Datenbanken 4 18

ODL: Beziehungen Umsetzung von m:n-beziehungen besucht(student[0,*], Vorlesung[0,*]) class Vorlesung { relationship set<student> wird_besucht_von inverse Student::besucht; } class Student { relationship set<vorlesung> besucht inverse Vorlesung::wird_besucht_von; } VL Objektrelationale Datenbanken 4 19 ODL: Beziehungen /2 Umsetzung von Beziehungen mit Attributen wird_geprüft(student[0,*], Vorlesung[0,*]; Note) class Pruefung { attribute int note; relationship Vorlesung fach inverse Vorlesung::pruefung; relationship Student pruefling inverse Student::pruefung; } class Student { relationship set<pruefung> pruefung inverse Pruefung::pruefling; } VL Objektrelationale Datenbanken 4 20 Java-ODL Nutzung von Java-Klassendefinitionen als DDL keine neue Sprache notwendig aber nur eingeschränkte Definitionsmöglichkeiten teilweise Ergänzung mittels Informationen aus Konfigurationsdateien Persistenzfähigkeit von Java-Klassen durch Präprozessor: Verarbeitung einer Java-Klassendefinition, Extraktion der notwendigen Schemainformationen, Hinzufügen von DB-spezifischem Code Postprozessor: Verarbeitung von kompilierten Bytecode, Code-Modifikation entsprechend Persistenzanforderungen VL Objektrelationale Datenbanken 4 21

Java-ODL: Beispiel public class Author { private String firstname, lastname; public Author (String first, String last) { firstname = first; lastname = last; } public String getlastname () { return lastname; } } public String getfirstname () { return firstname; } VL Objektrelationale Datenbanken 4 22 Java-ODL: Beispiel /2 public class Book { private String isbn, title; private Category classifiedin; private ListOfObject writtenby; } public Buch (String isbn) { this.isbn = isbn; writtenby = new ListOfObject (); } VL Objektrelationale Datenbanken 4 23 4.3. SQL:1999 SQL:1999 aktuelle Version des SQL-Standards der ISO u.a. Unterstützung objektrelationaler Konzepte Verbindung von Konzepten objektorientierter Datenbankmodelle mit SQL nutzerdefinierte Datentypen, Vererbung/Spezialisierung, Methoden bisher nur teilweise umgesetzt: IBM DB2, Oracle9i, PostgreSQL, (jeweils mit proprietären Varianten) VL Objektrelationale Datenbanken 4 24

SQL:1999: Neue Datentypen BLOB, CLOB: Datentypen für große Binär-/Zeichenkettenobjekte (binary/character large objects) Boolean: boolesche Werte TRUE, FALSE, UNKNOWN Array: Kollektionstyp für mehrwertige Attribute REF-Typen: zur eindeutigen Identifikation von Tupeln (OID) sowie zur Navigation über Pfadausdrücke ROW-Typen: Typkonstruktor für strukturierte Attribute nutzerdefinierte Datentypen: Konstruktion neuer Typen VL Objektrelationale Datenbanken 4 25 BLOB und CLOB Speicherung großer Zeichenketten/Binärfolgen Bilder, Audio-/Videodaten, XML-Dokumente, Angabe der max. Größe erforderlich Grenzen sind systemspezifisch Beispiel create table Professoren ( Foto blob(100k)); erfordern spezielle Behandlung beim Zugriff Einschränkungen: kein Primär-/Fremdschlüssel, keine Gruppierung/Sortierung VL Objektrelationale Datenbanken 4 26 Kollektionsdatentypen Datentypen zur Speicherung mehrerer Werte für ein Attribut array-typkonstruktor Elementdatentyp max. Kardinalität k Notation datentyp array[k] keine Schachtelung möglich! unterstützte Operationen: Indexzugriff (1 k), Länge VL Objektrelationale Datenbanken 4 27

Kollektionsdatentypen: Beispiel create table Bcher ( titel varchar(100), isbn varchar(10), preis decimal(5,2), abstract clob(10k), autoren varchar(20) array[5] ); VL Objektrelationale Datenbanken 4 28 Anonyme ROW-Typen Typkonstruktor für strukturierte Attribute anonym kein expliziter Typname Notation row (fname 1, ftyp 1,, fname n, ftyp n ) Beispiel: create table Kunden ( name varchar(50), adresse row (strasse varchar(30), plz char(5), ort varchar(30)) ); VL Objektrelationale Datenbanken 4 29 Nutzerdefinierte Datentypen (UDT) Definition abstrakter Datentypen Unterscheidung in Distinct-Typen: Definition eines Datentyps direkt als Umbenennung eines Basisdatentyps Strukturierte Typen: Typkonstruktor für benannte strukturierte Datentypen VL Objektrelationale Datenbanken 4 30

Distinct-Typen Umbennung existierender Typen zur Einführung von Typ-Inkompatibilitäten nur für Attribute, Parameter, Variablen Beispiel: create type meter as integer final; create type quadratmeter as integer final; kein Vergleich/Zuweisung von Attributen verschiedener Distinct-Typen create table Grundstck ( laenge meter, breite meter, flaeche quadratmeter); breite und flaeche sind inkompatibel VL Objektrelationale Datenbanken 4 31 Strukturierte Typen Typkonstruktor zur Definition abstrakter Datentyp verwendbar für Attribute, Parameter, Variablen, Tabellen Beispiele: create type Adresse as ( strasse varchar(30), plz char(5), ort varchar(30) ) not final create type Kunde as ( knr int, name varchar(30), lieferadresse Adresse ) not final VL Objektrelationale Datenbanken 4 32 Subtyping Definition von Untertypen als Erweiterung existierender Datentypen (UDTs) Notation: untertyp under supertyp keine Mehrfachvererbung zulässig bei Typdefinition not final: Subtyping zulässig final: keine Bildung von Untertypen Beispiel: create type Person as ( ) not final create type Kunde under Person as ( ) not final VL Objektrelationale Datenbanken 4 33

Strukturierte Typen: Methoden SQL-Funktionen/Prozeduren, die UDT zugeordnet sind Besonderheiten: impliziter SELF-Parameter (vergleichbar this in C++, Java) getrennte Spezifikation von Signatur und Implementierung automatisch generierte set/get-methoden für alle Attribute eines Typs VL Objektrelationale Datenbanken 4 34 Methoden: Beispiel create type Kunde as ( ) not final method gesamt_bestellsumme() returns decimal(9,2)) create method gesamt_bestellsumme() for Kunde begin end VL Objektrelationale Datenbanken 4 35 Strukturierte Typen für Tabellen Definition von Tabellen auf Basis strukturierter Typen Objektrelation Attribute werden Spalten zusätzliche Spalte für OID (benötigt für REF-Typen) Beispiel: create table Kunden of Kunde ( ref is oid user generated) Kunde ist Tabellentyp Adresse ist Spaltentyp VL Objektrelationale Datenbanken 4 36

Objektidentifikatoren Bildung von Objektidentifikatoren für Tupel in Objektrelationen (unveränderliche IDs) ref is user generated nutzerdefinierte/-vergebene OID ref is system generated systemgenerierte OID ref from (Attributliste) OID wird abgeleitet von anderen Attributen (z.b. Primärschlüssel) VL Objektrelationale Datenbanken 4 37 REF-Typ Typ für Referenzen auf Instanzen eines strukturierten Datentyps (Tupel einer Objektrelation) Notation: ref(strukturierter-typ) [ scope gltigkeitsbereich ] Gültigkeitsbereich: vorgegebene Tabelle alle Tabellen VL Objektrelationale Datenbanken 4 38 REF-Typ: Beispiel create type Person as ( personalnr integer, name varchar(30), vorgesetzter ref(person)) create table Angestellte of Person ( ) create table Abteilungen ( name varchar(10), leiter ref(person) scope(angestellte), mitarbeiter ref(person) scope(angestellte) array[10] ) VL Objektrelationale Datenbanken 4 39

Typisierte Sichten Sicht auf strukturierte Typen Unterschiede zu Tupelsichten Zeilen über OID-Spalte referenzierbar Methodenaufrufe möglich typisierte Sicht als Subsicht einer anderen typisierten Sicht definierbar typisierte Sicht ohne Supersicht: Wurzelsicht Definition: create view sichtname of typname [( oid-generierung, spalten-option )] as sicht-anfrage VL Objektrelationale Datenbanken 4 40 Typisierte Sichten: Definition OID-Generierung: ref is oid Spaltenoption: spalte with options scope tabelle Einschränkungen für Sichtanfrage: Typverträglichkeit mit Sichttyp bei benutzerdefinierter OID-Generierung: Aufruf des Referenzkonstruktors sichttyp-name(ref-wert) als erster Parameter der Projektionsliste from-klausel mit genau einer Tabelle/Sicht; bei typisierter Tabelle/Sicht nur mit flacher Extension (only) keine Verbund- oder Gruppierungsoperationen VL Objektrelationale Datenbanken 4 41 Typisierte Sichten: Beispiel create type Person as ( personalnr integer, name varchar(30), gehalt decimal(8,2), vorgesetzter ref(person)) not final ref using integer; create view ReicheMitarbeiter of Person ( ref is oid user generated, vorgesetzter with options scope ReicheMitarbeiter ) as select ReicheMitarbeiter(personalnr), personalnr, name, gehalt, ReicheMitarbeiter(vorgesetzter->personalnr) from only (Angestellte) where gehalt > 5000; VL Objektrelationale Datenbanken 4 42

Subsichten Sicht mit genau einer direkten Supersicht erbt OID-Spalte und Spaltenoptionen Tabelle der Sichtanfrage muss Subtabelle der Supersicht sein Extension der Subsicht ist Teilmenge der Extension der Supersicht Definition create view sichtname of typname under supersichtname [( spalten-optionen )] as sicht-anfrage VL Objektrelationale Datenbanken 4 43 4.4. Objektrelationale Typen in Oracle9i Unterstützung objektrelationaler Konzepte in Oracle seit Version 8 Abweichungen vom SQL-Standard proprietäre Erweiterungen Methodenimplementierung in PL/SQL Konzepte: UDTs, REF, Kollektionen, Methoden, Subtyping VL Objektrelationale Datenbanken 4 44 Oracle: Typdefinition Definition von Datentypen für Attribute, Variablen und Tabellen (row objects) Notation: create type name as object ( ) VL Objektrelationale Datenbanken 4 45

Oracle: Objekttabellen Tabellen mit Objekten (Instanzen eines UDT) als Tupel Beispiel: create table Kunden of Kunde; Interpretation Tabelle mit einer Spalte von Objekten Tabelle mit (mehreren) Spalten, die Attributen des UDT entsprechen VL Objektrelationale Datenbanken 4 46 Oracle: Objekttabellen (II) Objektidentifikatoren object identifier is primary key: Nutzung des Primärschlüssels as OID object identifier is system generated: systemgenerierte OID VL Objektrelationale Datenbanken 4 47 Oracle: Kollektionen Repräsentation von mehrwertigen Attributen und 1:n-Beziehungen Typkonstruktoren varray: geordnete Menge von Elementen nested table: ungeordnete Menge ohne Größenbeschränkung VL Objektrelationale Datenbanken 4 48

Oracle: VARRAY geordnete Menge von Elementen über Index adressierbar max. Größe bei Definition spezifizieren Speicherung als Binärobjekt (BLOB) Beispiel: create type AutorenListe as varray(10) of varchar(50); create table Buecher ( autoren AutorenListe ); VL Objektrelationale Datenbanken 4 49 Oracle: Nested Tables ungeordnete Menge von Elementen ohne Größenbeschränkung Speicherung der Objekte in separater Tabelle intern: NESTED_TABLE_ID für Verweis von Elterntabelle auf nested table Beispiel: create type Person as object ( ); create type Angestellte as table of Person; create table Abteilungen ( name varchar(10), mitarbeiter Angestellte ) nested table mitarbeiter store as abt_mitarb_tbl; VL Objektrelationale Datenbanken 4 50 Oracle: REF-Typen Implementierung logischer Zeiger über OIDs Ersatz für Fremdschlüssel vereinfachte Navigation (Pfadausdrücke) Typkonstruktor address_ref ref address_type Angabe des Gültigkeitsbereichs scope is address_table VL Objektrelationale Datenbanken 4 51

Oracle: Methoden Funktionen/Prozeduren, die zu einem Objekttyp zugeordnet sind Implementierung in PL/SQL oder als externe Methoden (C, Java) self als impliziter Parameter impliziter Konstruktor zur Erzeugung von Objekten Beispiel: create type Kunde as object ( member function gesamt_bestellsumme() return number(9,2)) ); VL Objektrelationale Datenbanken 4 52 Oracle: Map- und Order-Methoden Spezifikation von Vergleichs- und Ordnungsfunktionen für Objekttypen Nutzung im Rahmen von Anfragen (Gruppierung, Sortierung) MAP-Funktionen: Vergleich durch Abbildung auf Basisdatentypen (date, varchar, number, ) create type Rechteck as object ( laenge integer, breite integer, map member function flaeche return integer ); VL Objektrelationale Datenbanken 4 53 Oracle: Map- und Order-Methoden /2 ORDER-Funktionen: direkte Vergleiche von Objekten create type Kunde as object ( order member function vergleiche (k Kunde) return integer ); VL Objektrelationale Datenbanken 4 54

Oracle: Subtyping Definition von Objekttypen durch Ableitung von vorhandenen Objekttypen Hinzufügen von Attributen und Methoden Überschreiben von Methoden final/not final Beispiel: create type Student under Person ( ); Typersetzbarkeit: Tabelle eines gegebenen Objekttyps kann auch Instanzen eines Subtyps aufnehmen VL Objektrelationale Datenbanken 4 55 4.5. XML Schema: Überblick Datendefinition für XML (valide Dokumente): bisher nur DTD Grammatik zur Festlegung der zulässigen Elemente und deren Schachtelung schwache Typisierung, begrenzte Ausdrucksmöglichkeiten dokument-orientiert Alternative: XML Schema Definition einer Klasse von XML-Dokumenten (Dokumentinstanzen) Schemadefinitionssprache nicht auf Dokumente beschränkt (vgl. XML-DBS) weitergehende Modellierungsmöglichkeiten daten-orientiert VL Objektrelationale Datenbanken 4 56 XML Schema: Konzepte Namensraum (Präfix): xsd Schemaelement: bestehend aus Subelementen Elementen: element komplexen Typdefinitionen: complextype Komposition aus anderen Elementen und Attributen einfachen Typdefinitionen: simpletype Basistypen Einschränkung von Basistypen Kommentaren VL Objektrelationale Datenbanken 4 57

Beispieldokument <?xml version="1.0"?> <bestellung datum="2002-11-18" > <lieferadresse land="d" > <name>institut fuer Informatik</name> <ort>halle/s.</ort> <strasse>von-seckendorff-platz 1</strasse> <plz>06120</plz> </lieferadresse> <positionen> <position prodnr="mon-123-a" > <prodname>17-zoll-tft Singsang</prodName> <menge>1</menge> <preis>599</preis> </position> </positionen> </bestellung> VL Objektrelationale Datenbanken 4 58 Schemadefinition <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:element name=bestellung type="bestelltyp"/> <xsd:complextype name="bestelltyp"> <xsd:sequence> <xsd:element name="lieferadresse" type="adresstyp" /> <xsd:element name="positionen" type="positionentyp" /> </xsd:sequence> <xsd:attribute name="datum" type="xsd:date" /> </xsd:complextype> </xsd:schema> VL Objektrelationale Datenbanken 4 59 Deklaration von Elementen Definition von Elementen und Attributen, die im Dokument auftreten können typisierte Elemente und Attribute Notation: <xsd:element name="element-name" type="typ-name" /> weitere Attribute für xsd:element minoccurs/maxoccurs: Beschränkung der min. bzw. max. Häufigkeit des Auftretens des Elementes use: required, optional default: Default-Wert VL Objektrelationale Datenbanken 4 60

Einfache Typen Builtin-Typen: string, integer, double, date, anyuri, abgeleitete Typen durch Restriktion der Builtin-Typen erlauben keine Attribute Bereichseinschränkung Muster Aufzählung von Werten (enumeration) Listen (list), Vereinigung verschiedener Wertebereiche (union) VL Objektrelationale Datenbanken 4 61 Einfache Typen: Bereichseinschränkung Einschränkung des Wertebereichs (1 100) <xsd:simpletype name="mengentyp"> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="1" /> <xsd:maxinclusive value="100" /> </xsd:restriction> </xsd:simpletype> VL Objektrelationale Datenbanken 4 62 Einfache Typen: Muster Einschränkung des Wertebereichs durch Angabe eines Musters (regulärer Ausdruck) <xsd:simpletype name="prodnrtyp"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[a-z]{3}-\d{3}-[a-z]{1}" /> </xsd:restriction> </xsd:simpletype> VL Objektrelationale Datenbanken 4 63

Komplexe Typen Typkonstruktor für Elemente mit Attributen und Subelementen Bildung komplexer Typen auf Basis einfacher Typen Mixed Content (Sequenz von Subelementen) Auswahl, Gruppierung VL Objektrelationale Datenbanken 4 64 Komplexe Typen: Beispiel Typdefinition <xsd:complextype name="intpreistyp"> <xsd:simplecontent> <xsd:extension base="xsd:decimal"> <xsd:attribute name="waehrung" type="xsd:string"/> </xsd:extension> </xsd:simplecontent> </xsd:complextype> Anwendung (Dokumentinstanz) <preis waehrung="euro">899</preis> VL Objektrelationale Datenbanken 4 65 Komplexe Typen: Beispiel /2 <xsd:complextype name="positionentyp"> <xsd:sequence> <xsd:element name="position" minoccurs="1" maxoccurs="unbounded"> <xsd:complextype> <xsd:sequence> <xsd:element name="prodname" type="xsd:string"/> <xsd:element name="menge" type="mengentyp"/> <xsd:element name="preis" type="xsd:decimal"/> </xsd:sequence> <xsd:attribute name="prodnr" type="prodnrtyp" use="required"/> </xsd:complextype> </xsd:element> </xsd:sequence> </xsd:complextype> VL Objektrelationale Datenbanken 4 66