• Keine Ergebnisse gefunden

Non-Standard-Datenbanken Neue Datentypen

N/A
N/A
Protected

Academic year: 2022

Aktie "Non-Standard-Datenbanken Neue Datentypen"

Copied!
39
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Non-Standard-Datenbanken Neue Datentypen

Objektrelationale Datenbanken

SQL3 Standard  Oracle

(2)

1. Datenbanksysteme nach Stonebraker

Relationale DBMS

Datei- systeme

Objekt- speichersy steme

hoch

niedrig

Komplexität der Zugriffe/Anfragen

Komplexität der

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

2

, 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

(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

(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, ZusammenfassungCLOB(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

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

(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

(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),

(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’, 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 – Supertypes FINAL / 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, 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(

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

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

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;

(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

(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

(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

(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

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

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

(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).dept FROM workpeople;

(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

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

Referenzen

ÄHNLICHE DOKUMENTE

• Lokale Variablen sind nur im eigenen Funktionsrumpf sichtbar, nicht in den aufgerufenen Funktionen.. • Damit die aufgerufenen Hilfsfunktionen auf b zugreifen können, muss b

wird find0() für ein Intervall [n1,n2℄ aufgerufen mit mehr als einem Element, dann terminiert der Aufruf entweder direkt (weil x gefunden wurde), oder find0() wird mit einem

Betrachte Beispiel 3.12 von Folie 169, die Arithmetik der

Betrachte Beispiel 3.12 von Folie 169, die Arithmetik der

Allgemeine Informationen zur Vorlesung und Übungsblätter benden sih auf der Webseite. http://www.math.unibas.h/

a) Bestimme den Faktor b der Parabelgleichung und gib dann die vollständige

Fachbereich Mathematik und Statistik Prof.

Wir interessieren uns für die Koordina- ten (x’,y’,z’) dieses Punktes, nachdem er um einen Vektor ver- schoben bzw./und um eine vorgegebene Achse gedreht wurde... Wir wählen als