Non-Standard-Datenbanken Neue Datentypen

Slides:



Advertisements
Ähnliche Präsentationen
Objekt-relationale und erweiterbare Datenbanksysteme
Advertisements

der Universität Oldenburg
Objekt-relationale und erweiterbare Datenbanksysteme Erweiterbarkeit SQL:1999 Objekt-relationale Modellierung.
Objekt – Relationales – Modell Tomasz Makowski IN
System J – Compiler – Praktikum: Datenbanksystementwicklung Knut Stolze
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
MySQL.
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Objekt-relationale und erweiterbare Datenbanksysteme
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Referenzen und Zeichenketten
SQL als Abfragesprache
SQL als Abfragesprache
Datensicherheit in DBMS
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Objektrelationale Datenbanken (am Beispiel Oracle)
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
Objektrelationale Datenbanken (am Beispiel Oracle)
Text-Retrieval mit Oracle Vortrag von Andreas Mück & David Diestel.
Geometrische Objekte in Datenbanken Martin Pfeifle Institut für Informatik, Universität München Lehr- und Forschungseinheit für Datenbanksysteme Prof.
Datenintegrität Referentielle Integrität create table
Oracle interMedia Image
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
Information Systems & Semantic Web University of Koblenz Landau, Germany Vorlesung Multimedia-Datenbanken Objekt-relationale Datenbanksysteme (Folien nach.
DVG Klassen und Objekte
Datenbanken 13: Objekt-Klasse-Datenbank
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
3.5.2 Fremdschlüssel/ Referentielle Integrität (6/9)
2.2 Definition eines Datenbankschemas (SQL-DDL)
objekt-relationale Datenbanken
Datenbankentwicklung IV-LK
Visualisierung objektrelationaler Datenbanken
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Information Systems & Semantic Web University of Koblenz Landau, Germany Vorlesung Multimedia-Datenbanken Objekt-relationale Datenbanksysteme (Folien nach.
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
Generalisierung/Spezialisierung Subtypisierung/Vererbung
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #4 SQL (Teil 1)
Vorlesung #4 SQL (Teil 1).
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #6 SQL (Teil 1)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #7 SQL (Teil 4)
WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #4 SQL (Teil 1)
Allgemeines zu Datenbanken
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Datenbanksysteme für hörer anderer Fachrichtungen
Relationales Datenmodell ist beherrschend: –Riesige Datenbestände und damit hohe Investitionen. –Die große Mehrzahl der Anwendungen arbeitet mit weitgehend.
Relationales Datenmodell und DDL
PL/SQL - Kurze Einführung April 2003Übung Data Warehousing: PL/SQL 2 PL/SQL.. ist eine Oracle-eigene, prozedurale Programmiersprache Sämtliche.
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Structured Query Language
8 Erzeugen und Verwalten von Tabellen Ziele Kennenlernen der wichtigsten Datenbankobjekte Anlegen von Tabellen Datentypen zur Definition von Spalten.
Benutzerdefinierte Datentypen (1)
Oberseminar Moderne Datenbanken WS03/04
11 Verwaltung von Abhängigkeiten. Ziele Am Ende dieser Lektion verfügen Sie über die folgenden Kenntnisse: Überwachen prozeduraler Abhängigkeiten Effekte.
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
Vordefinierte Datentypen (1)
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Datenbanken erstellen mit PostgreSQL
Datenbanken abfragen mit SQL
1 Objektorientierte Datenbanken zBeim vorigen Mal: zODMG-OQL und FastObjects-OQL zIntegritätsbedingungen und Schema-Evolution zHeute: Objektrelationale.
XML-Erweiterungen in ORDBMS Seminar: DBMS für spezielle Anwendungen Florian Brieler.
SQL Structured Query Language Enzio Thiem. INHALT CREATE TABLE Anweisung Gängige Datentypen Beispiel CREATE TABLE Beispiel CREATE TABLE - erweitert Beispiel.
SQL Basics Schulung –
Sprachumfang von SQL Vier Kategorien DDL (Data Definition Language)
Vorlesung #4 Relationales Kalkül und SQL (Teil 1)
Indexierung Oracle: indexes Indexierung.
(Structured Query Language)
 Präsentation transkript:

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

1. Datenbanksysteme nach Stonebraker Objektrelationale Objektorientierte

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

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

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

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

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

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)

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

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

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)

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

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

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!

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

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

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

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

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

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

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)

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)

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

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

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

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;

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

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

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

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)

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

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

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;

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

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

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

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;

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

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;