4. Objektrelationales Typsystem Kollektionstypen. Nested Table

Ähnliche Dokumente
Strukturierte Objekttypen

Oracle 10g Einführung

Oracle: Abstrakte Datentypen:

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Datenmanagement I SoSe 2006 Aufgabenblatt 4

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Die Anweisung create table

Objektrelationale und erweiterbare Datenbanksysteme

Übersicht der wichtigsten MySQL-Befehle

Objektrelationale, erweiterbare Datenbanken WS 04/05

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

Zusammengesetzte Datentypen

SQL structured query language

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Objekt-relationales Datenbanksystem Oracle

SQL Data Manipulation Language (DML) und Query Language (QL)

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

Wiederholung VU Datenmodellierung

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

6. Sichten, Integrität und Zugriffskontrolle. Vorlesung "Informa=onssysteme" Sommersemester 2015

Views in SQL. 2 Anlegen und Verwenden von Views 2

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Webbasierte Informationssysteme

Datenbanksysteme 2013

6. Trigger Charakterisierung von Triggern. 6. Trigger. Trigger definieren automatische Reaktionen auf Ereignisse, die durch Datenmanupilationen

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Objektrelationale Datenbanken

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Garten - Daten Bank. - survival pack -

Abfragen (Queries, Subqueries)

Introduction to Data and Knowledge Engineering. 6. Übung SQL

Temporale Daten in objekt-relationalen Datenbanksystemen

7. Datenbankdefinitionssprachen

Grundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15

Ergänzungen zur Vorlesung Informationssysteme WS 2000/01

Beispiel zur referentiellen Integrität

4. Datenbanksprache SQL

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13

Inhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15

Datenbank und Tabelle mit SQL erstellen

Vergessene (?) SQL- und PL/SQL- Funktionen

SQL als Zugriffssprache

IV. Datenbankmanagement

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1)

5.8 Bibliotheken für PostgreSQL

Datenbanken. Zusammenfassung. Datenbanksysteme

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

Inhaltsverzeichnis. Einleitung

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

7. XML-Datenbanksysteme und SQL/XML

SQL. SQL SELECT Anweisung SQL-SELECT SQL-SELECT

Welche Kunden haben die gleiche Ware bestellt? select distinct a1.name, a2.name from Auftrag a1, Auftrag a2 where a1.ware = a2.ware.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung

Kapitel 8: Datenintegrität

Übung 01 Tabellen erstellen

Probeklausur mit Musterlösung

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Prozedurale Datenbank- Anwendungsprogrammierung

Erzeugung und Veränderung von Tabellen

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Visualisierung in Informatik und Naturwissenschaften

5.3 Datenänderung/-zugriff mit SQL (DML)

Bibliografische Informationen digitalisiert durch

Kapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Modul Datenbanksysteme 2 Prüfung skizzenhaft SS Aug Name: Note:

Kapitel 7 Datenbank-Tuning

Verbunde (Joins) und mengentheoretische Operationen in SQL

dbis Praktikum DBS I SQL Teil 2

Kapitel 5 Dr. Jérôme Kunegis. SQL: Grundlagen. WeST Institut für Web Science & Technologien

Verbunde (Joins) und mengentheoretische Operationen in SQL

Themen des Kapitels. 2 Grundlagen von PL/SQL. PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren. 2.1 Übersicht. Grundelemente von PL/SQL.

Es geht also im die SQL Data Manipulation Language.

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Datenbanksysteme Kapitel 5: SQL Data Manipulation Language

Grober Überblick zu Datendefinitionsanweisungen in SQL

Transkript:

Nested Table Bei einer Nested Table handelt es sich um eine Tabelle als Attributwert. Im Gegensatz zu Varray gibt es keine Beschränkung bei der Größe. Definition erfolgt auf einem Basistyp, als Basistypen zulässig sind beliebigige Typen. Eine Tabelle im klassischen Sinn entsteht bei einem Objekttyp (später) als Basistyp. Nested Tables sind bspw. sinnvoll, wenn Mengen kleiner Kardinalität als Attributwert gespeichert werden sollen (Alternative: weitere Tabelle mit Verbund), damit aber Aufhebung der 1. Normalform Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 150

Typdefinition für Nested Table create type typname as table of Basisdatentyp Der so definierte Typ darf natürlich auch für andere Typdefinitionen verwendet werden, insbesondere Objekttypen. create t_phoneset as table of varchar2(20); create type t_zeitreihe as varray(30) of number; create type zrnested as table of t_zeitreihe; create type zrnested2 as table of zrnested; Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 151

Tabellendefinition mit Nested Table Nested Tables werden nicht in den Zeilen einer gewöhnlichen Tabelle gespeichert. Dies erfordert die Umsetzung auf eine andere Tabllen für Attribute mit Nested Table Typ. create table tabellenname (... attribut nestedtabletyp,... ) nested table attribut store as nestedtabelle Wirkung: Die Daten des Attributs attribut werden in einer Tabelle mit dem Namen nestedtabelle abgelegt. Diese Tabelle ist nur intern vorhanden, Abfragen auf diese Tabelle sind nicht möglich. Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 152

Beispiel: create table customer ( id char(6) not null primary key, name varchar2(50) not null, phones t_phoneset ) nested table phones store as phone_nested; Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 153

Indexerzeugung für Nested Table Tabellen Auch wenn eine Tabelle zur Speicherung von Nested Tables nicht direkt zugreifbar ist, kann es sinnvoll sein, auf solch einer Tabelle einen Index zu definieren. Grund: Implizit muss ein Verbund (Join) zwischen den Zeilen der eigentlichen Tabelle und den Zeilen der Nested Table Tabelle hergestellt werden. Dieser Verbund kann durch einen Index beschleunigt werden. Die Tabelle zur Speicherung des Nested Tables hat eine Pseudospalte: NESTED TABLE ID create index indexname on nestedtabelle(nested TABLE ID) Beispiel: create index customer_phones_index on phone_nested(nested_table_id); Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 154

Konstruktoren Wie bei Varrays stehen nach der Typdefinition Konstruktoren mit beliebiger Stelligkeit zur Verfügung. insert into customer values (1, Rosi Mueller, t_phoneset( 089/32168 )); insert into customer values (2, Jupp Schmitz, t_phoneset( 0815/123123, 0172/1236969 )); Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 155

Tabellenfunktion THE() In bestimmten Situationen muss ein einzelner Nested Table Wert wie eine eigene Tabelle behandelt werden. Hierzu dient die Tabellenfunktion THE() Ohne THE() nur Zugriff auf die Nested Table als Ganzes. Schema: THE( nestedtable ) nestedtable kann bspw. über eine Selektion bestimmt sein. Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 156

Einsatzszenarien für THE() Einfügen eines Werts/Tupels in eine Nested Table: insert into THE(select phones from customer where id = 4711) values ( 0172/1717170 ); Direkter Zugriff auf die Werte einer Nested Table: select * from THE (select phones from customer where id = 4711) Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 157

Tabellenfunktion MULTISET() Typische Verwendung in Verbindung mit CAST Wandelt eine Ergebnisrelation in einen Nested Table Typ CAST( MULTISET( ergebnisrelation ) AS nestedtabletyp ) Beispiel: Ergebnis eines Select soll als Nested Table verwendet werden: update customer set phones = CAST( MULTISET( select phonenr from phonetable where cid = 4711 ) AS t_phoneset ) where id = 4711 Auch die Übernahme aus Varrays ist möglich, mit Hilfe eines einfachen Cast: CAST ( varray AS nestedtabletyp ) Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 158

Tabellenfunktionen Eine Tabellenfunktion ist eine UDF, die eine Tabelle statt eines skalaren Wertes als Ergebnis liefert. Tabellenfunktionen dienen u.a. dazu, Daten, die ausserhalb der Datenbank liegen, in relationaler Form zur Verfügung zu stellen. Durch die Bereitstellung einer Tabellenfunktionen können solche Daten mit Daten innerhalb einer Datenbank verknüpft und mittels SQL analysiert werden. Damit läßt sich die Ausdruckskraft von SQL auf Daten aus ganz unterschiedlichen Quellen anwenden. Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 159

Nutzung von Tabellenfunktionen in SQL Tabellenfunktion werden in der FROM-Klausel einer SQL-Anfrage verwendet (evtl. auch Unterabfragen). Die Syntax lautet: FROM TABLE( tabfunktion( para1,... ) ) [tabellenname] Damit wird durch tabellenname die Ergebnisrelation des Aufrufs der Tabellenfunktion tabfunktion mit den angegebenen Parametern referenziert. Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 160

Beispiel für Einsatz Die UDF passwd() sei eine Tabellenfunktion, die Informationen über die Benutzer eines Rechnersystems bereitstellt (siehe /etc/passwd). Informationen über den Benutzer scott könnten dann mit der folgenden SQL- Anfrage ermittelt werden: SELECT * FROM TABLE( passwd ) WHERE name = scott Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 161

Deklaration und Implementierung von Tabellenfunktionen Zur Deklaration einer Tabellenfunktion wird eine create function-anweisung mit kleinen Unterschieden benutzt: Hinter dem Rückgabetyp im Kopf der Funktion wird durch PIPELINED angegeben. Obwohl es sich um eine Funktion handelt, muss hinter einer RETURN-Anweisung im Rumpf kein Wert stehen. Tupel der Ergebnisrelation werden durch PIPE ROW(tupel) definiert. Die Tabellenfunktion darf SELECT-Anweisungen benutzen. Beispiel Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 162

Weitere Einsatzszenarien für Tabellenfunktionen Mengenwertige UDFs Einfache Schnittstelle für zusätzliche Indextechnologie Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 163

Beispiel: Mengenwertige UDFs Mit einer kleinen Änderung kann der Algorithmus zur Berechnung des Levenshtein- Distanz (vgl. Folie 109) auch für das approximative Pattern Matching eingesetzt werden (vgl. Folie 100). Es sei MLEV definiert durch: MLEV [i, j] := min {lev(pat[1... i], text[l... j])} 1 l j d.h., MLEV [i, j] ist die kleinste Distanz zwischen pat[1... i] und einem Suffix von text[1, j]. Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 164

Es gilt nun: MLEV [0, j] = 0 für 0 j n, denn pat[1... 0] = ǫ und ǫ ist stets in text[1... j] ohne Fehler enthalten. Ansonsten berechnet sich MLEV [i, j] wie LEV [i, j], d.h.: MLEV [i, 0] = i für 0 i m MLEV [i, j] = min{ MLEV [i 1, j] + 1, MLEV [i, j 1] + 1, MLEV [i 1, j 1] + δ(x[i], y[j])} Gilt nun MLEV [m, j] k, so endet in Position j ein Substring y von text mit lev(pat, y) k (wobei m die Patternlänge ist). Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 165

Beispiel: Die Tabelle M LEV für pat = ABCDE und text = ACEABP CQDEABCR. j 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 i A C E A B P C Q D E A B C R 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 A 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 2 B 2 1 1 2 1 0 1 2 2 2 2 1 0 1 2 3 C 3 2 1 2 2 1 1 1 2 3 3 2 1 0 1 4 D 4 3 2 2 3 2 2 2 2 2 3 3 2 1 1 5 E 5 4 3 2 3 3 3 3 3 3 2 3 3 2 2 Für k = 2 ergeben sich die Positionen 3, 10, 13 und 14. Die zugehörigen Substrings von text sind ACE, ABPCQDE, ABC und ABCR. Bemerkung: Für m = pat und n = text ist approximatives Pattern-Matching in Zeit O(mn) möglich. Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 166

Umsetzung in eine Tabellenfunktion Typ für die Zeilen der Tabellenfunktion definieren: create type t_approxmatch_row as object ( position number, substring varchar2(100) ); Typ für das Ergebnis der Tabellenfuntion definieren: create type t_approxmatch_table as table of t_approxmatch_row; Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 167

Tabellenfunktion definieren: create function approxmatch(pat in varchar2, text in varchar2, k in integer) return t_aproxmatch_table pipelined is pos integer; substring varchar2(100); match t_approx_match_row := t_approx_match_row(null,null); begin... /* Wenn Match gefunden */ match.position := pos; match.substring := substring; pipe row(match);... return; end; Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 168

Nutzung: Bestimmung aller Textstellen einer Menge von Texten, die approximativ auf ein Muster mit Abstand 2 passen: select t.id, match.* from texte t, table(approxmatch( abcde,t.text,2)) match Objektrelationale Datenbanksysteme Hochschule Bonn-Rhein-Sieg, SS 2010 169