Non-Standard-Datenbanken Neue Datentypen Objektrelationale Datenbanken SQL3 Standard Oracle Sebastian Wappler.
Post on 05-Apr-2015
106 Views
Preview:
Transcript
Non-Standard-DatenbankenNeue 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
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ädikatenRelationen AlgebraTabellen 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)
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, AktualisierenKein 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,
RoomAreasquaremeters
);
UPDATE RoomTableSET RoomWidth = RoomLength;
UPDATE RoomTableSET 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,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’)
));
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 – SupertypesFINAL / NOT FINAL
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)
) 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
);
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)
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)
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
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 – 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 Y1 44 44 1
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
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
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 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'));
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)0000280209342BDA0E8BFA417F9ADF6812510BB1176C32804
72D7748EA84B2BD78AA84C447020001420000
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).deptFROM workpeople; W_ID DEREF(W.EMP).ENAME DEREF(W.EMP).DEPT12 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;
top related