Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler."—  Präsentation transkript:

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

2 2 1. Datenbanksysteme nach Stonebraker Objektrelationale Objektorientierte

3 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

4 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; O 2, Objectivity

5 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?

6 6 2. Motivation zu objektrelationalen DBMS Relationale DBMS -Keine komplexen Strukturen -Nur Basistypen -Begrenzte Anzahl von Prädikaten Relationen Algebra Tabellen effizient (z.B. Index, Schlüssel) Objektspeichersysteme -Kein anerkannter Standard -Navigierender Zugriff besser als anfrageorientierter Komplexe Strukturen und Methoden

7 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

8 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)

9 9 4.1 Beispiel: Tabellendefinition mit LOBs CREATE TABLE Buchtabelle ( TitelVARCHAR(200), Buch_IDINTEGER PRIMARY KEY, ZusammenfassungCLOB(32K), Buch_TextCLOB(20M), FilmBLOB(2G) );

10 Benutzung von LOBs Einfügen, Entfernen, Aktualisieren Kein Vergleich ( ) Kein Index oder Schlüssel BLOB –LIKE (Gleichheit) CLOB –TRIM, SUBSTRING, POSITION, LENGTH

11 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)

12 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

13 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

14 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 ( RoomIDroomtype, RoomLengthmeters, RoomWidthmeters, RoomAreasquaremeters ); UPDATE RoomTable SET RoomWidth = RoomLength; UPDATE RoomTable SET RoomArea = RoomLength; ERROR!

15 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

16 Beispiel: User Defined Structured Types CREATE TYPE adresse_t AS OBJECT ( StrasseVARCHAR(20), HausnummerNUMBER(3), OrtsnameVARCHAR(30)); CREATE TYPE personal_t AS OBJECT ( NachnameVARCHAR(20), VornameVARCHAR(20), GeburtsdatumDATE, GehaltNUMBER(7,4), KinderNUMBER(5), Adresse adresse_t );

17 Beispiel: User Defined Structured Types (fort.) CREATE TABLE personal( P_IDINTEGER, Angestellterpersonal_t); INSERT INTO personal (P_ID, Angestellter) VALUES(320, personal_t(Mustermann, Gabi, 07-aug-1971, , 2, adresse_t(Musterstr.,1,Musterstadt) ) );

18 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

19 Subtypes – Supertypes FINAL / NOT FINAL FINAL Tiefster Untertyp Nur Distinct - Typen NOT FINAL Kann Untertypen haben Nur strukturierte Typen SQL4: Beide Kombinationen erlaubt

20 Beispiel: Subtypes - Supertypes CREATE TYPE address AS( StreetCHAR(30), cityCHAR(20), stateCHAR(2), zipINTEGER ) NOT FINAL; CREATE TYPE german_addr UNDER address( Family_name VARCHAR(30) ) NOT FINAL; CREATE TYPE us_addr UNDER address( Area_codeINTEGER, phoneINTEGER ) NOT FINAL; CREATE TABLE properties( priceNUMBER(11,4), ownerVARCHAR(30), locationaddress );

21 Beispiel: Subtypes - Supertypes INSERT INTO properties VALUES( , 'Mr.S.White', us_addr('1654Haeth Road','Heath','OH',45394, 1222, )); PRICEOWNER LOCATION(STREET, CITY, STATE, ZIP) Mr.S.WhiteUS_ADDR( '1654Haeth Road ', 'Heath ', 'OH', 45394, 1222, )

22 Rowtypes / Typed tables CREATE TYPE point_t AS OBJECT( xFLOAT, yFLOAT ); CREATE TABLE Points OF point_t; DESC Points; NameNull?Typ XFLOAT(126) YFLOAT(126)

23 Nested Tables CREATE TYPE PolygonType AS TABLE OF point_t; CREATE TABLE Polygons ( NameVARCHAR2(20), punktePolygonType) NESTED TABLE punkte STORE AS PunkteTab; polygontype TABLE OF POINT_T NameNull?Typ XFLOAT(126) YFLOAT(126) NameNull?Typ NAMEVARCHAR2(20) PUNKTEPOLYGONTYPE

24 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

25 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

26 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;

27 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; XY

28 Vergleichsoperationen Formen: a)EQUALS ONLY Nur Test auf Gleichheit Ergebnistyp: Boolean (TRUE/FALSE) b)ORDER FULL Test auf Ergebnistyp: 0

29 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 –Muss für den Obertyp definiert werden MAP –Nur ein Parameter –Wandelt in vordefinierten Typ um Vergleich

30 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)

31 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 );

32 Erzeugerfunktion CREATE TYPE emp_t AS OBJECT( enameCHAR(31),deptCHAR(20), STATIC FUNCTION new_emp (name VARCHAR2, dept VARCHAR2) RETURN emp_t); CREATE BODY emp_t IS STATIC FUNCTION new_emp (name VARCHAR2, dept VARCHAR2) RETURN emp_t IS BEGIN RETURN emp_t(name, dept); END; END; INSERT INTRO emps VALUES (emp_t.new_emp('Jörgen', 'Service'));

33 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;

34 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) BDA0E8BFA417F9ADF BB1176C D7748EA84B2BD78AA84C SELECT VALUE(e) FROM emps e WHERE ename='Jörgen'; VALUE(E)(ENAME, DEPT) EMP_T('Jörgen', 'Service')

35 Referenzieren und dereferenzieren CREATE TABLE workPeople (W_IDINTEGER 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).dept FROM workpeople; W_IDDEREF(W.EMP).ENAMEDEREF(W.EMP).DEPT 12JörgenService

36 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

37 Beispiel: Collection Types CREATE TABLE reports( R_IDINTEGER, titleVARCHAR(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;

38 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

39 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;


Herunterladen ppt "Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler."

Ähnliche Präsentationen


Google-Anzeigen