Strukturierte Objekttypen

Ähnliche Dokumente
4. Objektrelationales Typsystem Kollektionstypen. Nested Table

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

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

Objekt-relationales Datenbanksystem Oracle

Moderne Datenbankkonzepte

Objektrelationale, erweiterbare Datenbanken WS 04/05

ORACLE9i: Objekt-Relationale Datenbanken

Objektorientierte PL/SQL- Programmierung

Prozedurale SQL-Erweiterungen

Objektrelationale Datenbanken

Objektorientierung in Oracle

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

Die Anweisung create table

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Javakurs 2013 Objektorientierung

Einstieg in die Informatik mit Java

Erzeugen von Constraints

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

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

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

Programmiertechnik Klassenvariablen & Instantiierung

Übung PL/SQL Trigger Lösungen

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

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

7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Geschachtelte Klassen

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

C++ - Objektorientierte Programmierung Polymorphie

Programmieren in Java

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

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

Einführung SQL Data Definition Language (DDL)

Einstieg in die Informatik mit Java

Objektrelationale und erweiterbare Datenbanksysteme

Tag 7 Repetitorium Informatik (Java)

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

SQL Data Manipulation Language (DML) und Query Language (QL)

SQL mit ORACLE. Wolf-Michael Kahler

Oracle 10g Einführung

Schnellübersichten. SQL Grundlagen und Datenbankdesign

Oracle native json Support. Erste Schritte

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

Repetitorium Informatik (Java)

7. Datenbankdefinitionssprachen

Philipp Güttler Objektorientierung und komplexe Datentypen

Einstieg in die Informatik mit Java

Arbeit mit zusammengesetzten Datentypen

OBJEKTORIENTIERTE ENTWICKLUNG IN DER DATENBANK. Anja Hildebrandt buw Unternehmensgruppe

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Objektorientierte PL/SQL-Programmierung für RDBMS

Vorbereitungen zum 3. Praktikum (PL/SQL):

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

Datenbanksysteme 2013

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

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

Kapitel 4 Dynamisches SQL

Datenmanagement I SoSe 2006 Aufgabenblatt 4

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Implementieren von Klassen

Relationales Datenbanksystem Oracle

SQL-Vertiefung. VL Datenbanksysteme. Ingo Feinerer

Einstieg in die Informatik mit Java

Grundlagen der Objektorientierten Programmierung - Methoden -

Methoden und Wrapperklassen

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

Einstieg in die Informatik mit Java

Kapitel 4 Dynamisches SQL

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

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

10. Programmieren in SQL

Zusammengesetzte Datentypen

Einführung in PL/SQL

Algorithmen und Datenstrukturen

Erzeugung und Veränderung von Tabellen

Klassen als Datenstrukturen

Ergänzungen zur Vorlesung Informationssysteme WS 2000/01

Transkript:

Strukturierte Objekttypen Der Typ t approxmatch row des letzten Beispiels ist ein sogenannter Objekttyp. Definition: Ein Objekttyp ist ein Datentyp, bei dem (u.u. verschiedene) bekannte Datentypen zu einem neuen Datentyp zusammengefasst werden. Der Einsatz eines Objekttyps bietet sich an, wenn auf strukturierte Werte überwiegend als Ganzes zugegriffen wird. Insbesondere wird so Konsistenz im Datenbankschema für die einzelnen Attribute (bzw. Instanzvariablen) des Objekttyps hergestellt. Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 170

Definition eines Objekttyps Ähnlich einer Tabellendefinition: CREATE TYPE objekttyp AS OBJECT ( attribut1 datentyp1,... attributn datentypn ); / Die Vereinbarung eines Objekttyps ist in Oracle stets eine PL/SQL-Anweisung! Daher im Beispiel das /. Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 171

Löschen von Typdefinitionen Gegenstück zu CREATE TYPE ist: DROP TYPE objekttyp [FORCE] FORCE ermöglicht ein Löschen, obwohl abhängige Datenbankobjekte existieren. Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 172

Beispiel: Objekttyp für Adressen create type t_anschrift as object ( strasse varchar2(50), hausnr varchar2(4), plz char(5), ort varchar2(30) ); create table kunden ( k_nr number(6) primary key, k_name varchar2(50) not null, k_anschrift t_anschrift not null ); Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 173

Constraints Bei der Typdefinition können keine Constraints für die Attribute definiert werden. Bei Tabellendefinition sind Constraints wie üblich mit Hilfe von CHECK definierbar. Man beachte: NOT NULL bei einem Relationsattribut mit Objekttyp vehindert nicht, dass die Instanzattribute den Wert NULL annehmen können! CREATE TABLE kunden (... CONSTRAINT CHECK (k_anschrift.strasse IS NOT NULL AND...) ); Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 174

Beispiel: Verschachtelte Objekttypen create type Point2D as object ( x number, y number ); create type Box2D as object ( lowleft Point2D, upright Point2D ); Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 175

Optionen bei der Typdefinition NOT INSTANTIABLE entspricht einem abstrakten Typ, es wird kein Konstruktor zur Verfügung gestellt NOT FINAL es besteht die Möglichkeit, Untertypen zu definieren Standard: INSTANTIABLE und FINAL Man beachte den Unterschied zu Java bei FINAL. Beispiel: CREATE TYPE t_adress AS OBJECT (... ) NOT INSTANTIABLE NOT FINAL; CREATE TYPE t_usadress UNDER t_adress (... ); CREATE TYPE t_deadress UNDER t_adress (... ); Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 176

Instanziierung von Objekttypen Wenn instantiable, dann steht ein Konstruktor mit passender Stelligkeit zur Verfügung. Bei Nutzung geschachtelter Objekttypen sind natürlich auch die Konstruktoren zu schachteln. insert into kunden values ( 4711, Paul Paulsen, t_anschrift( Paulsplatz, 17a, 77777, Paulsheim ) ); insert into boxes values ( 4712, Box2D( Point2D(1,1), Point2D(2,3) ) ); Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 177

Nutzung in SQL und PL/SQL Auf die einzelnen Attribute eines Objekttyps wird mit der Punkt-Notation zugegriffen. Sowohl in SQL als auch in PL/SQL möglich. select k_name, k_anschrift.ort from kunden where k_anschrift.plz like 53% Bei mehrfacher Verschachtelung setzt sich dies entsprechend fort. select box.lowleft.x, box.lowleft.y, box.upright.x, box.upright.y from boxes where box_id = 4712 Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 178

Vergleichsoperatoren Für ganze Objekte stehen die Vergleichsoperatoren = und <> zur Verfügung. Vergleich erfolgt komponentenweise, Wildcards sind nicht möglich Definition spezialisierter Vergleichs- und Ordnungsmethoden möglich (später mehr) select box_id from boxes where lowleft = Point2D(1,1) Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 179

Indexdefinitionen Indexdefinitionen auf Attributen eines Objekttyps innerhalb einer Tabelle sind möglich. create index kunden_plz_index on kunden(k_anschrift.plz); Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 180

Methoden-Deklaration (1) Neben Attributen können für einen Objekttyp Methoden definiert werden. Hierbei wird zwischen Methoden mit Rückgabe (MEMBER FUNCTION) und ohne Rückgabe eines Ergebnisses (MEMBER PROCEDURE) unterschieden. Bei der Typdefinition wird nur das Interface bzw. die Signatur für die Methoden angegeben, keine Implementierung. Die Implementierung erfolgt in einer separaten Definition: CREATE TYPE BODY Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 181

Methoden-Deklaration (2) Allgemeiner Aufbau: CREATE TYPE typname AS OBJECT ( attribut1 datentyp1,... attributn datentypn, MEMBER PROCEDURE methodenname(argument1,...),... MEMBER FUNCTION methodenname(argument1,...) RETURN datentyp,... ); Hinweis: Bei parameterlosen Methoden werden bei Deklaration (und Definition) keine Klammern verwendet, beim Aufruf sind aber Klammern notwendig. Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 182

Beispiel: CREATE TYPE Box2d AS OBJECT ( lowleft Point2d, upright Point2d, MEMBER FUNCTION flaeche RETURN number ); Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 183

Methoden-Implementierung Die Implementierung erfolgt mit Hilfe einer CREATE TYPE BODY Anweisung. In der Anweisung wird die Signatur der Methoden wiederholt. HinterAS oderis schließt sich dann die Implementierung als PL/SQL-Block (BEGIN... END;) an. Die CREATE TYPE BODY Anweisung wird insgesamt auch mit einem END abgeschlossen. Innerhalb der Implementierungblöcke haben wir mit Hilfe von SELF Zugriff auf das Objekt, für das eine Methode aufgerufen wurde. Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 184

CREATE TYPE BODY typname AS MEMBER PROCEDURE methodenname(argument1,...) AS lokale Variablen... BEGIN PL/SQL-Anweisungen... END; MEMBER FUNCTION methodenname(argument1,...) RETURN datentyp AS lokale Variablen... BEGIN PL/SQL-Anweisungen... RETURN Wert; END; END; Beispiele Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 185

Nutzung der Methoden Mit der üblichen Punkt-Notation innerhalb von SQL- und PL/SQL-Anweisungen. select b.box_id, b.box_box.flaeche() from boxes b where b.box_box.flaeche() > 2 Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 186

Klassenmethoden Neben Instanzmethoden besteht auch die Möglichkeit Klassenmethoden zu deklarieren und definieren. Solche Methoden werden mit dem Schlüsselwort STATIC statt mit MEMBER versehen, sowohl innerhalb von CREATE TYPE als auch von CREATE TYPE BODY. Klassenattribute werden nicht unterstützt. STATIC FUNCTION funktionsname(argument1,...) RETURN datentyp STATIC PROCEDURE funktionsname(argument1,...) RETURN datentyp CREATE TYPE Point2d AS OBJECT (... STATIC FUNCTION ursprung RETURN Point2d ); Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 187

CREATE TYPE BODY Point2d AS... STATIC FUNCTION ursprung RETURN Point2d IS BEGIN RETURN Point2d(0,0); END; END; Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 188

Zusätzliche Konstruktoren Neben dem Standardkonstruktor können weitere Konstruktoren mit anderen Signaturen definiert werden. Konstruktormethoden werden mit dem Schlüsselwort CONSTRUCTOR FUNCTION eingeleitet. Es wird auch ein Methodenname verlangt, er muss mit dem Typnamen identisch sein. Als Rückgabetyp muss SELF AS RESULT angegeben werden. In der Implementierung wird mittels SELF der passende Zustand hergestellt. Für RETURN wird kein Wert angegeben. Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 189

Map-Funktion Eine Map-Funktion dient dazu, zusätzliche Vergleichsoperatoren zur Verfügung zu stellen. Die Map-Funktion bildet ein Objekt auf einen Wert vom Typ Zahl, String oder Datum ab. Für den Vergleich wird dann der Wert genutzt. Für t 1, t 2 T gilt t 1 < t 2 gdw. map(t 1 ) < map(t 2 ). Die Map-Funktion ist eine parameterlosemember FUNCTION, die zusätzlich mit dem Schlüsselwort MAP versehen wird. MAP MEMBER FUNCTION funktionsname RETURN typ Beispiel Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 190

Order-Funktion Alternativ zu einer Map-Funktion kann auch eine Order-Funktion definiert werden (aber nicht beide). Die Order-Funktion ist flexibler: Für zwei Objekte wird ein Vergleich durchgeführt. Vergleich: SELF mit Parameter OBJ Ergebis: -1, falls SELF OBJ, sonst 1 Beispiel Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 191