39
Non-Standard- Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappl

Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

Embed Size (px)

Citation preview

Page 1: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

Non-Standard-DatenbankenNeue Datentypen

Objektrelationale Datenbanken

SQL3 Standard Oracle

Sebastian Wappler

Page 2: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

2

1. Datenbanksysteme nach Stonebraker

RelationaleDBMS

Datei-systeme

Objekt-speichersy

steme

hoch

niedrig

hochniedrig

Komplexität der Zugriffe/Anfragen

Komplexität derDatenstrukturen

DBMS

Objektrelationale

Objektorientierte

Page 3: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

3

1.1 Relationale DBMS

• Einfache vordefinierte Datenstrukturen – Relationen, Tabellen, Datentypen

• INTEGER, FLOAT, DATE, VARCHAR

• Anfragesprache SQL - optimiert– Manipulation der Werte– Auswertung Mengenbeschreibung

• Dauerhaftigkeit, Integrität, Schutz

Page 4: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

4

1.2 Objektspeichersysteme

• Speicherung komplexer Objekte– Kombination von Objekten zu neun Objekten– Komplexe Beziehungen zwischen Objekten

• Nachbarschaftsbeziehungen von Polygonen; CAD

• Dauerhafte Speicherung von Anwendungsprogrammobjekten

• Smalltalk, Tycoon; O2, Objectivity

Page 5: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

5

1.3 Objektrelationale / Objektorientierte DBMS

• Anfragen auf komplexe Daten– Geographisch Daten: Nahverkehrsnetz

• „Alle Bushaltenstellen im Umkreis von 500 m?“

– Bild: Objekte, Personen, Beziehungen• „Alle Bilder auf denen Person X zu sehen ist?“

– Audio: Mitschnitt, Sprecher, Stimmmuster• „Alle Mitschnitte in denen ‚äh‘ 20 mal vorkommt?“

– Volltextsuche• „Wort Objekt in der Nähe von relational?“

Page 6: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

6

2. Motivation zu objektrelationalen DBMS

Relationale DBMS- Keine komplexen

Strukturen - Nur Basistypen- Begrenzte Anzahl von

PrädikatenRelationen AlgebraTabellen effizient

(z.B. Index, Schlüssel)

Objektspeichersysteme- Kein anerkannter

Standard- Navigierender Zugriff

besser als anfrageorientierter

Komplexe Strukturen und Methoden

Page 7: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

7

3. Objektorientierte Erweiterungen in SQL3/SQL99

• Large Objects (LOB)• User Defined Types (UDTs)

– User Defined Methods• Comparison

• Casts

• Type Constructors

– Referenced Types

– Collection Types

– Table/View Hierarchies

Page 8: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

8

4 Large Objects (LOBs)

mehrere Gigabyte große Objekte Festgelegte Maximallänge Speicherung im DBMS

• Binarry Large Objects (BLOBs)– Jede Art von digital gespeicherte Information

• Character Large Objects (CLOBs)– Zeichenketten

– Auswertung innerhalb des DBMS

– NCLOB - mehr-Byte Zeichensätze (Oracle)

Page 9: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

9

4.1 Beispiel: Tabellendefinition mit LOBs

CREATE TABLE Buchtabelle

(

Titel VARCHAR(200),

Buch_ID INTEGER PRIMARY KEY,

Zusammenfassung CLOB(32K),

Buch_Text CLOB(20M),

Film BLOB(2G)

);

Page 10: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

10

4.2 Benutzung von LOBs

Einfügen, Entfernen, AktualisierenKein Vergleich (<, >) Kein Index oder Schlüssel

• BLOB– LIKE (Gleichheit)

• CLOB– TRIM, SUBSTRING, POSITION, LENGTH

Page 11: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

11

4.2 Benutzung von LOBs (fort.)

• Puffer für LOBs im Anwendungsprogramm

• Zeiger auf LOBs (LOB-Locator)– 4 Byte

• Stückweise Verarbeitung der LOBs

Zeiger „überlebt“ Transaktionsende (Std)

Page 12: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

12

5 User Defined Types

• UDTs auch Abstract Datatypes (ADTs)• Abbildung der Realität• Vordefinierte Datentypen sind Basis für

UDTs• Definition durch Anwender• Eigens Verhalten (Prozeduren, Funktionen)• Gleiche Verwendung wie vordefinierte

Datentypen

Page 13: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

13

5.1 User Defined Distinct Types

• Benutzerdefinierter Name für einen vordefinierten Datentyp (Urtyp)

• Zwei benutzerdefinierte Typen mit gleichem Urtyp sind verschieden (distinct)

• Vergleiche auf Ebene des Urtyps realisiert

• Zusätzlich eigenes Verhalten

• CASTs: benutzerdefinierter Typ Urtyp

Page 14: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

14

5.1.1 Beispiel: User Defined Distinct Types

CREATE TYPE roomtype

AS CHAR(10) FINAL;

CREATE TYPE meters

AS FLOAT FINAL;

CREATE TYPE squaremeters

AS FLOAT FINAL;  

CREATE TABLE RoomTable

(

RoomID roomtype,

RoomLength meters,

RoomWidth meters,

RoomAreasquaremeters

);

UPDATE RoomTableSET RoomWidth = RoomLength;

UPDATE RoomTableSET RoomArea = RoomLength; ERROR!

Page 15: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

15

5.2 User Defined Structured Types

• Komplexe Datenstrukturen

• Verwendung in Spalten

• Als ganze Tabelle

• Enthalten Attribute, Prozeduren und Funktionen

• Constructor-Fkt. wird vom DBMS erstellt

• Methoden zur Manipulation von Attributen

Page 16: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

16

5.2.1 Beispiel: User Defined Structured Types

CREATE TYPE adresse_t AS OBJECT (Strasse VARCHAR(20),Hausnummer NUMBER(3),Ortsname VARCHAR(30));

 CREATE TYPE personal_t AS OBJECT (

Nachname VARCHAR(20),Vorname VARCHAR(20),Geburtsdatum DATE,Gehalt NUMBER(7,4),Kinder NUMBER(5),Adresse adresse_t );

Page 17: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

17

5.2.2 Beispiel: User Defined Structured Types (fort.)

CREATE TABLE personal(P_ID INTEGER,Angestellterpersonal_t);

 INSERT INTO personal (P_ID, Angestellter)

VALUES( 320, personal_t(’Mustermann’,

’Gabi’,’07-aug-1971’,2500.00,2,adresse_t(’Musterstr.’,1,’Musterstadt’)

));

Page 18: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

18

5.3 Subtypes - Supertypes

• Untertyp ist Spezialisierung des Obertyps

+ Erbt Attribute und Verhalten des Obertyps

+ Neue Attribute und neues Verhalten

• Kann Attribute und Methoden überschreiben (Overriding)

• Untertyp kann anstelle des Obertypen verwendet werden

Page 19: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

19

5.3.1 Subtypes – SupertypesFINAL / NOT FINAL

FINAL• Tiefster Untertyp• Nur Distinct - Typen

NOT FINAL• Kann Untertypen

haben • Nur strukturierte

Typen

SQL4: Beide Kombinationen erlaubt

Page 20: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

20

5.3.2 Beispiel: Subtypes - Supertypes

CREATE TYPE address AS(

Street CHAR(30),

city CHAR(20),

state CHAR(2),

zip INTEGER

) NOT FINAL;

CREATE TYPE german_addr UNDER address(

Family_name VARCHAR(30)

) NOT FINAL;

CREATE TYPE us_addr

UNDER address(

Area_code INTEGER,

phoneINTEGER

) NOT FINAL;

CREATE TABLE properties( priceNUMBER(11,4),

owner VARCHAR(30),

location address

);

Page 21: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

21

5.3.2 Beispiel: Subtypes - Supertypes

INSERT INTO properties VALUES(

1000000, 'Mr.S.White',us_addr('1654Haeth Road','Heath','OH',45394,

1222, 5550231));

PRICE OWNER LOCATION(STREET, CITY, STATE, ZIP)1000000 Mr.S.White US_ADDR(

'1654Haeth Road ', 'Heath ' ,

'OH', 45394, 1222, 5550231)

Page 22: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

22

5.4 Rowtypes / Typed tables

CREATE TYPE point_t AS OBJECT(x FLOAT, y FLOAT );

CREATE TABLE Points OF point_t;

DESC Points;Name Null? TypX FLOAT(126)Y FLOAT(126)

Page 23: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

23

5.5. Nested Tables

CREATE TYPE PolygonType AS TABLE OF point_t;

CREATE TABLE Polygons (

NameVARCHAR2(20),

punkte PolygonType)

NESTED TABLE punkte

STORE AS PunkteTab;

polygontype TABLE OF POINT_T

Name Null? Typ

X FLOAT(126)

Y FLOAT(126)

Name Null? Typ

NAME VARCHAR2(20)

PUNKTE POLYGONTYPE

Page 24: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

24

6 User Defined Methods

• Prozeduren und Funktionen in SQL

• Auswertung, Berechnung, Manipulation

• Ergebnis wird im DBMS berechnet – weiniger Datentransfer

• Vereinbarung außerhalb der Typdefinition

• Punktnotation: Typ.Mehtode()• Werden mit vererbt; Override möglich

Page 25: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

25

6.1 MEMBER – STATIC

• MEMBER – Bezieht sich auf eine Instanz des Typs– Verändert keine Attribute– Impliziter Parameter SELF

• STATIC – Bezieht sich auf den Typ – Kein impliziter SELF Parameter

Page 26: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

26

6.2 Beispiel MEMBER – Funktion in Oracle

CREATE TYPE point_t AS OBJECT(

x FLOAT,y FLOAT,

MEMBER FUNCTION distance (p point_t) RETURN FLOAT );

 

CREATE OR REPLACE TYPE BODY point_t AS

MEMBER FUNCTION distance (p point_t) RETURN FLOAT IS

BEGIN

RETURN sqrt(power(SELF.x-p.x, 2)+power(SELF.y-p.y, 2));

END;

CREATE TABLE Points OF point_t;

Page 27: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

27

6.2 Beispiel MEMBER – Funktion in Oracle (fort.)

insert into Points VALUES(1,1);insert into Points VALUES(1,4);insert into Points VALUES(4,4);insert into Points VALUES(4,1);

select * from points p where p.distance(point_t(0,0))>=4;

 X Y1 44 44 1

Page 28: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

28

6.3 Vergleichsoperationen

• Formen:a) EQUALS ONLY

• Nur Test auf Gleichheit

• Ergebnistyp: Boolean (TRUE/FALSE)

b) ORDER FULL• Test auf <, =, >

• Ergebnistyp: < 0, = 0, >0

Page 29: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

29

6.3.1 Vergleichskategorien

• STATE – Funktion (EQUALS ONLY)

– Vom DBMS selbst erzeugt– Ergebnistyp: Boolean (TRUE/FALSE) – – Muss für den Obertyp definiert werden

• RELATIVE– Vom Anwender definiert– Zwei Eingabeparameter– Ergebnistyp: < 0, = 0, >0– Muss für den Obertyp definiert werden

• MAP – Nur ein Parameter– Wandelt in vordefinierten Typ um Vergleich

Page 30: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

30

6.3.2 Anwendung der Vergleichskategorien

• STATE– State_comp_func (Value1, Value2) =

TRUE/FALSE

• RELATIVE– Relative_comp_func (Value1, Value2) = 0 , >0

oder <0

• MAP– Map_func1 (Value1) = Map_func2

(Value2)

Page 31: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

31

6.4 Cast - Funktionen

• UDT erschient wie anderer Datentyp• Distinct UDTs mit impliziter CAST – Fkt.

CREATE TYPE meters

AS INTEGER FINAL

CAST ( SOURCE AS DISTINCT ) WITH meters

CAST ( DISTINCT AS SOURCE ) WITH INTEGER;

- - -

CREATE CAST( typ1 AS typ2 ) WITH

FUNCTION cast_func( typ1 );

Page 32: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

32

6.5 Erzeugerfunktion

CREATE TYPE emp_t AS OBJECT( ename CHAR(31), dept CHAR(20),STATIC FUNCTION new_emp (name VARCHAR2, dept VARCHAR2)

RETURN emp_t);

CREATE BODY emp_t ISSTATIC FUNCTION new_emp (name VARCHAR2, dept VARCHAR2)

RETURN emp_t ISBEGIN RETURN emp_t(name, dept); END;

END; INSERT INTRO emps VALUES (emp_t.new_emp('Jörgen',

'Service'));

Page 33: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

33

6.5.1 Abstrakte UDTs

• Keine Erzeugung einer Instanz möglich• UDT, mit mindestens einem Untertypen

CREATE TYPE Individuum AS OBJECT(

Name VARCHAR(30), Adresse VARCHAR(100)

) NOT FINAL NOT INSTANTIABLE;

CREATE TYPE Mensch UNDER Individuum(

Vorname VARCHAR(20), Telefon NUMBER(20)

) NOT FINAL INSTANTIABLE;

Page 34: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

34

7 Referenzen

• Object ID (OID) für jede Instanz = Zeiger • Referenzen (REFs) sind diese Zeiger

SELECT REF(e) FROM emps e WHERE ename='Jörgen';REF(E)0000280209342BDA0E8BFA417F9ADF6812510BB1176C32804

72D7748EA84B2BD78AA84C447020001420000

SELECT VALUE(e) FROM emps e WHERE ename='Jörgen'; VALUE(E)(ENAME, DEPT)EMP_T('Jörgen', 'Service')

Page 35: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

35

7.1 Referenzieren und dereferenzieren

CREATE TABLE workPeople( W_ID INTEGER PRIMARY KEY, Emp REF emp_t); INSERT INTO workpeople (E_ID, Emp)VALUES (

12,(SELECT REF(e) FROM emps e WHERE ename='Jörgen')); SELECT W_ID, DEREF(emp).ename, DEREF(emp).deptFROM workpeople; W_ID DEREF(W.EMP).ENAME DEREF(W.EMP).DEPT12 Jörgen Service

Page 36: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

36

8. Collection Types

• Arrays– Alle Elemente haben gleichen Typ– Typ kann UDT sein– Maximallänge muss definiert werden– Zugriff über ganzzahligen Feldindex– Verwendung als Datentyp für Spalten– In Oracle eigner UDT nötig

Page 37: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

37

8.1 Beispiel: Collection Types

CREATE TABLE reports(

R_ID INTEGER,

title VARCHAR(100),

authors

VARCHAR(15) ARRAY[5]);

 

CREATE TYPE authors_array AS VARRAY(5) OF CHAR(15);

CREATE TABLE reports_feld

( id INTEGER PRIMARY KEY,

authors authors_array,

title VARCHAR(100) );

SELECT R_ID, authors[1] AS Name FROM reports;

Page 38: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

38

9. Table/View Hierarchies

• Analog zu Ober-/Untertypen • Views und Tabellen gleich• Untertabellen erben alle Attribute und Methoden• Zusätzliche Attribute und Methoden• DML – Befehle für Hierarchien erweitert• Datensatz aus einer Untertabelle ist in Obertabelle • Datensatz aus Obertabelle muss nicht in einer

Untertabelle sein

Page 39: Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler

39

9.1 Beispiel Tabellenhierarchie

CREATE TYPE Grundstueck . . . NOT FINAL;

CREATE TYPE Lager UNDER Grundsueck . . . NOT FINAL;

CREATE TYPE Haus UNDER Grundsueck . . . NOT FINAL;

 

CREATE TABLE Immobilien OF Grundstueck;

CREATE TABLE Lager_Lst OF Lager UNDER Immobilien;

CREATE TABLE Haeuser OF Haus UNDER Immobilien;