Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Non-Standard-Datenbanken Neue Datentypen

Ähnliche Präsentationen


Präsentation zum Thema: "Non-Standard-Datenbanken Neue Datentypen"—  Präsentation transkript:

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

2 1. Datenbanksysteme nach Stonebraker
Objektrelationale Objektorientierte

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

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 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 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 4 Large Objects (LOBs) Binarry Large Objects (BLOBs)
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 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) );

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

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)

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

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, RoomArea squaremeters ); UPDATE RoomTable SET RoomWidth = RoomLength; SET RoomArea = RoomLength;   ERROR!

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

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

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

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

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

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) CREATE TYPE us_addr UNDER address( Area_code INTEGER, phone INTEGER ) NOT FINAL; CREATE TABLE properties( price NUMBER(11,4), owner VARCHAR(30), location address );

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

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? Typ X FLOAT(126) Y FLOAT(126)

23 5.5. Nested Tables CREATE TYPE PolygonType AS TABLE OF point_t;
CREATE TABLE Polygons ( Name VARCHAR2(20), punkte PolygonType) NESTED TABLE punkte STORE AS PunkteTab; polygontype TABLE OF POINT_T Name Null? Typ X FLOAT(126) Y FLOAT(126) NAME VARCHAR2(20) PUNKTE POLYGONTYPE

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 6.1 MEMBER – STATIC MEMBER STATIC
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 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;

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 Y 1 4 4 4 4 1

28 6.3 Vergleichsoperationen
Formen: EQUALS ONLY Nur Test auf Gleichheit Ergebnistyp: Boolean (TRUE/FALSE) ORDER FULL Test auf <, =, > Ergebnistyp: < 0, = 0, >0

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 MAP Nur ein Parameter Wandelt in vordefinierten Typ um  Vergleich

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)

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

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 IS RETURN emp_t IS BEGIN RETURN emp_t(name, dept); END; END; INSERT INTRO emps VALUES (emp_t.new_emp('Jörgen', 'Service'));

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;

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 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).dept FROM workpeople; W_ID DEREF(W.EMP).ENAME DEREF(W.EMP).DEPT 12 Jörgen Service

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

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


Herunterladen ppt "Non-Standard-Datenbanken Neue Datentypen"

Ähnliche Präsentationen


Google-Anzeigen