KarczewskiDatenbanken II1 Objekt-Relationale (OR) Datenbanken Übersicht Einführung: Objekt-relationale Erweiterungen von SQL (ORSQL) Objekte und Tabellen.

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

Folien 2-5, 7-8 © Prof. Dr. Manfred Rössle (FH Aalen)
Objekt – Relationales – Modell Tomasz Makowski IN
System J – Compiler – Praktikum: Datenbanksystementwicklung Knut Stolze
MySQL.
Allgemeine Technologien II
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Objektorientierte Datenbanken
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
FH-Hof SQLJ Richard Göbel. FH-Hof SQLJ - Idee Erweiterung von Java um SQL Die Verwendung von SQL-Anweisungen innerhalb einer Programmiersprache wird vereinfacht.
Java: Grundlagen der Objektorientierung
Alternativen und Muster. Alternativen Gegeben ist eine Tabelle in der ein Attribut der Tabelle Buecher Gruppe genannt wurde. So gibt es unter anderem.
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.
Text-Retrieval mit Oracle Vortrag von Andreas Mück & David Diestel.
Otto-von-Guericke-Universität Magdeburg Gamal Kassem 1 Tabellenzeile mit READ lesen READ TABLE itab INDEX idx READ TABLE itab WITH KEY comp1 = f1.... Compn.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
SQL 2 Order by null Aggregatfunktionen group by Join subselect.
Datenintegrität Referentielle Integrität create table
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
JDBC EDV JDBC.
1 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines Schlüssels 1:N - Beziehung Angabe.
1 Kapitel 8: Datenintegrität. 2 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines.
Datenbanken 10: Einfügen, Ändern, Löschen
Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar.
objekt-relationale Datenbanken
Datenbankentwicklung IV-LK
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Prof. Dr. F. Mücklich, Dipl.-Ing. C. Gachot Organisatorisches: 15 min
Relationale Datenbanken III
Pascal Schmidt 25. November 2010
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #7 SQL (Teil 4)
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
PL/SQL - Kurze Einführung April 2003Übung Data Warehousing: PL/SQL 2 PL/SQL.. ist eine Oracle-eigene, prozedurale Programmiersprache Sämtliche.
SQL - Structured Query Language AIFB SS (1/9) Join-Operationen in SQL-92(1/9) Syntax einer Join-Operation: join-op := CROSS JOIN | [NATURAL]
Datenbankanbindung mit
Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung
Transaktionen Dr. Heidrun Bethge Datenbanken II.
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
Integritätsbedingungen (Constraints)
10 Sichten (Views) Ziele Verständnis einer View Erzeugen einer View Lesen von Daten durch eine Sicht Ändern der Definition von Views Einfügen, Ändern.
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)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)
11 Zugriffskontrolle (Access Control) Ziele Privilegien Rollen GRANT und REVOKE Befehl Privilegien Rollen GRANT und REVOKE Befehl.
Einfache SQL-Befehle Schedule: Timing Topic 40 minutes Lecture
Prolog: Datenbanken Inhalt - Überblick - Erstellen einer Datenbank
Datenbank für Skriptenverkauf
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Datenbanken erstellen mit PostgreSQL
Datenbanken abfragen mit SQL
SQL Lutz KleinostendarpJOBELMANN-SCHULE Datendefinition Die Organisation einer Datenbank basiert auf einer Anzahl verschiedener Objekte. Diese können physikalischer.
Thomas Tretter, 10. Februar 2004Oracle Label Security1 Oracle Label Security (fine grained access control) 10. Februar 2004.
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)
Create Table, Rechte und Rollen
Die erste Form der INSERT-Anweisung dient der Neueingabe von Daten:
(Structured Query Language)
 Präsentation transkript:

KarczewskiDatenbanken II1 Objekt-Relationale (OR) Datenbanken Übersicht Einführung: Objekt-relationale Erweiterungen von SQL (ORSQL) Objekte und Tabellen OR-Create, -Insert, -Update, -Select User-Defined Functions (UDFs) und Methoden Literatur O´Neil / O´Neil: Database – Principles, Programming, and Performance, 2nd Edition. Morgan Kaufmann Publishers, 2001.

KarczewskiDatenbanken II2 ORSQL Möglichkeiten Relationale Tabellendefinitionen werden erweitert durch user defined types: Spalten, die mehr als einen Eintrag besitzen und solche, die eine interne Struktur haben (wie ein Record), sind erlaubt (Verletzung 1NF). Beispiel: eidenamepositiondependents dep_namedep_age e01Smith, JohnAgentMichael J.9 Susan R.7 e02Andrews, DavidSuperintendentDavid M. Jr.10 e03Jones, FranklinAgentAndrew K.11 Mark W.9 Louisa M.4

KarczewskiDatenbanken II3 Objekte und Tabellen Ein Objekt-Typ besitzt Attribute unterschiedlicher Typen, analog zu Spalten einer Tabelle. Beispiel (Oracle): create type name_t as object-- Create Object Type ( lnamevarchar(30),-- last name fnamevarchar(30),-- first name michar(1)-- middle initial ); /-- SQL*Plus

KarczewskiDatenbanken II4 Nach der Definition eines Typs (mit create type) kann man diesen so definierten Typ wie ein gewöhnliches Attribut benutzen. Beispiel (Oracle): create table teachers-- Create Table Scheme ( tidint,-- identifier tnamename_t,-- object type defined above roomint-- room number ); Bis hierher existieren noch keine Objekte vom Typ name_t. Objekte und Tabellen

KarczewskiDatenbanken II5 Einträge in die zuvor definierte Tabelle sind wie in SQL durch den insert-Befehl möglich. Insert wird erweitert um die Möglichkeit, Objekt-Typen zu integrieren. Dies geschieht durch Benutzung eines Objekt-Konstruktors in dem insert-Befehl. Beispiel (Oracle): insert into teachers values ( 1234, name_t(Einstein, Albert, E), 120 ); Objekt-Konstruktor Objekte und Tabellen

KarczewskiDatenbanken II6 Nach Ausführung des insert-Befehls liegt folgender Tabelleninhalt vor: Beispiel (Oracle): tid 1234 tname lnamefnamemi EinsteinAlbertE room 120 Objekte und Tabellen

KarczewskiDatenbanken II7 Die Punkt-Notation wird konsequent genutzt, um Werte des Objekt- Typs zu nutzen: selectt.tid from teachers t wheret.room = 120; -- normal SQL-select selectt.tid, t.tname.fname, t.tname.lname fromteachers t wheret.room = 123; -- extended SQL selecttid, tname.fname, tname.lname fromteachers whereroom = 123; -- doesn´t work Der alias t muss verwendet werden, damit die mehrfache Punkt- Notation funktioniert. Objekte und Tabellen

KarczewskiDatenbanken II8 Man kann die Objekt-Typ-Definition innerhalb einer anderen Objekt- Typ-Definition verwenden. Beispiel: create type person_t as object ( ssnoint, pnamename_t,-- must be defined first ageint ); / person_t ist abhängig von name_t, d.h. man kann name_t nicht löschen bevor person_t gelöscht ist. Objekte und Tabellen

KarczewskiDatenbanken II9 Eine Tabelle wird Objekt-Tabelle genannt, wenn ihre Zeilen vom Objekt-Typ sind. Das bedeutet: Jede Zeile enthält ein Objekt dieses Typs. Beispiel: create table people of person_t ( primary key(ssno) ); Objekte und Tabellen

KarczewskiDatenbanken II10 Beispiel-Tabelle people: nameless top-level column (Zeilen-Objekte) named columns (also known as top-level attributes) attributes within pname row 1 row 3 row 2 ssno pname pname.lname pname.fname pname.mi Sanchez Jose F Delaney Patrick X March Jacquelin E age people row objects column objects select * select value(p) Objekte und Tabellen

KarczewskiDatenbanken II11 select p.age from people p where p.ssno = (wie bei SQL) select p.pname from people p where p.age > 25 Spalten werden mit vorangestelltem Typ ausgegeben, z.B. name_t(´Sanchez´, ´Jose´, ´F´) select * from people p where p.age > 25 Liefert die top-level Attribute (row objects) ssnopname(lname,fname,mi) age name_t(´Delaney´,´Patrick´,´X´) name_t(´Sanchez´,´Jose´,´F´) 30 Objekte und Tabellen ( select-statements )

KarczewskiDatenbanken II12 select value(p) from people p where age > 25 Die Zeilen-Objekte werden ausgegeben (nameless top level column). Value(p) ist nicht zu verwechseln mit VALUES im insert-Befehl. Value(p)(ssno,pname(lname,fname,mi), age) person_t( ,name_t(´Delaney´,´Patrick´,´X´), 59) person_t( ,name_t(´Sanchez´,´Jose´,´F´), 30) Person_t ist der Objekt-Konstruktur, mit dem die Tabelle definiert wurde. Das Ergebnis ist ein anderes als das beim select *-Befehl. Durch den Objekt-Konstruktor gibt es eine (neue) Objekt-Sicht auf die Zeilen der Tabelle. Objekte und Tabellen ( select-statements )

KarczewskiDatenbanken II13 select value(p) from people p where p.pname = name_t(´Sanchez´,´Jose´,´F´) Der Objekt-Konstruktor name_t(´Sanchez´,´Jose´,´F´) kann auch innerhalb der where-Klausel verwendet werden. Value(p)(ssno,pname(lname,fname,mi), age) person_t( ,name_t(´Sanchez´,´Jose´,´F´), 30) Objekte und Tabellen ( select-statements )

KarczewskiDatenbanken II14 select p.pname, p.age from people p where p.pname.fname like Pat% and p.age > 50; Nested dot-Notation ist erlaubt. Der Vorname startet mit Pat und das Alter ist größer als 50. pname(lname,fname,mi)age name_t(´Delaney´,´Patrick´,´X´)59 Objekte und Tabellen ( select-statements )

KarczewskiDatenbanken II15 Wichtig: Man muss immer den vollqualifizierten Namen mit einem Alias verwenden, um auf strukturierte Attribute zuzugreifen. select pname.fname from people pname.fname ist kein Top Level-Attribut -> Der Befehl funktioniert so nicht. select people.pname.fname from people Auch hier muss ein Alias benutzt werden. Das Voranstellen des Tabellennamen nutzt nichts. -> Der Befehl funktioniert so nicht. select p.pname.fname from people p; Korrekte Alternative! Objekte und Tabellen ( select-statements )

KarczewskiDatenbanken II16 create table scientists of name_t (primary key (lname)); Generierung der Tabelle mit Namen scientists des zuvor definierten Objekt- Typs name_t. insert into scientists select p.pname from people p; Insert mit Einfügen mehrerer Zeilen durch Selektion aller pnames von people. In diesem Fall werden alle Namen aus people eingefügt. insert into scientists values (Einstein, Albert, E); Direktes Einfügen einer Zeile mit dem insert-Befehl. Objekte und Tabellen ( create und insert )

KarczewskiDatenbanken II17 update scientists s set s = name_t(Eisenstein, Andrew, F) where values(s) = name_t(Einstein, Albert, E); Update einer Zeile mit Hilfe des Objekt-Konstruktors name_t. insert into people values ( , name_t(Einstein, Albert, E), 100); Einfügen einer Zeile in scientists mit direkten Werten. Der Objekt- Konstruktor name_t ist nötig bei dem strukturierten Attribut. insert into people values ( , null, null); insert into people (ssno) values ( ); Zwei äquivalente Befehle, um unvollständige Zeilen mit NULL-Werten einzugeben. pname und age müssen optional sein. Objects and Tables ( insert )

KarczewskiDatenbanken II18 update people p set p.pname = name_t(Gould, Ben, null) where ssno = ; Update einer Zeile mit NULL-Werten. Der middle initial bleibt NULL. update people p set p.pname.mi = C where ssno = ; Update des middle initial der vorherigen Änderung. update people p set p = Person_t( , name_t(Gould, Glen, A), 55) where ssno = ; Update einer Person mit dem row object-Konstruktor. Auch der primary key ssno darf verändert werden. Objects and Tables ( update )

KarczewskiDatenbanken II19 Relational / Objekt-Relational Produkt:NummerBezeichnungFunktion Tee-ServiceGebrauch KanneGebrauch SchaleDeko

KarczewskiDatenbanken II20 Relational / Objekt-Relational Markt:BezeichnungStandortKategorie Internationaler Töpfermarkt KrefeldTöpfermarkt Töpfermarkt Sommerhausen SommerhausenTöpfermarkt Internationaler Töpfermarkt HanauTöpfermarkt

KarczewskiDatenbanken II21 Relational / Objekt-Relational WAA:NummerBezeichnungStandort Internationaler Töpfermarkt Krefeld Internationaler Töpfermarkt Krefeld Töpfermarkt Sommerhausen Sommerhausen Internationaler Töpfermarkt Hanau

KarczewskiDatenbanken II22 Beispiel ORDB Markt:BezeichnungStandortKategorieMarktteilnehmer NummerBezeichnungFunktion Internationaler Töpfermarkt KrefeldTöpfer- markt Tee-ServiceGebrauch KanneGebrauch Töpfermarkt Sommerhausen Sommer- hausen Töpfer- markt SchaleDeko Internationaler Töpfermarkt HanauTöpfer- markt SchaleDeko

KarczewskiDatenbanken II23 Beispiel ORDB Markt Bezeichnung Standort Kategorie Collection of Produkt_T

KarczewskiDatenbanken II24 Beispiel ORDB

KarczewskiDatenbanken II25 Beispiel ORDB

KarczewskiDatenbanken II26 Beispiel ORDB

KarczewskiDatenbanken II27 Beispiel ORDB

KarczewskiDatenbanken II28 Beispiel ORDB

KarczewskiDatenbanken II29 Beispiel ORDB

KarczewskiDatenbanken II30 Beispiel ORDB

KarczewskiDatenbanken II31 Beispiel ORDB

KarczewskiDatenbanken II32 Beispiel ORDB

KarczewskiDatenbanken II33 Beispiel ORDB

KarczewskiDatenbanken II34 User Defined Functions (UDF) können zur Bindung von Funktionen an Objekte genutzt werden (Methoden-Begriff). Die Definition von UDFs erfolgt in zwei Schritten: 1.Definition des Funktionskopfes (function header) 2.Definition des Funktionsrumpfes (function body) Der function header wird zusammen mit den Attributen des Objekttyps definiert. Der function body wird definiert mit einem speziellen Kommando mit einer Referenz zum header. User Defined Functions

KarczewskiDatenbanken II35 Beispiel (Personen und ihre Mitarbeiter (dependents)): create type name_t as object-- Create Object Type ( lnamevarchar(30),-- last name michar(1),-- middle initial fnamevarchar(30)-- first name ); / create type person_t as object ( ssnoint, pnamename_t,-- must be defined first ageint ); / create type depPerson_t as table of person_t; / User Defined Functions

KarczewskiDatenbanken II36 Example (Function Header): create type Employee_t as object (ENRint, Personperson_t, depPersondepPerson_t, member function NumberOfDep return integer, member function BigBoss return varchar ); / Die function header (auch mehrere möglich) werden hinter allen Attribut- Definitionen definiert. Die Schlüsselwörter member function und return mit entsprechendem Datentyp sind notwendig. User Defined Functions

KarczewskiDatenbanken II37 Beispiel (Funktionsrumpf): create type body Employee_t as member function NumberOfDep return integer is begin return self.depPerson.count; end NumberOfDep; member function BigBoss return varchar is begin if self.depPerson.count > 2 then return 'Big Boss'; else return 'Boss'; end if; end BigBoss; end; / User Defined Functions Der Rumpf der Funktionen erhält den selben Namen wie der zuvor definierte Objekt-Typ (Verbindung zwischen Kopf und Rumpf). Der Name und return-Typ muss hier wiederholt werden. Innerhalb begin und end wird die Funktion definiert. Mindestens ein return- Befehl ist nötig.

KarczewskiDatenbanken II38 Beispiel (Tabellen-Definition): create table Employee of Employee_t ( primary key (ENR) ) nested table depPerson store as dep_tab; User Defined Functions Diese Tabellendefinition realisiert die gewünschte Tabelle. Der Primärschlüssel kann erst hier definiert werden. Die nested table-Klausel erlaubt die Nutzung von Tabellen innerhalb der Tabelle. Möglich sind auch mehrere nested tables innerhalb einer Tabelle.

KarczewskiDatenbanken II39 Beispiel (Insertion): insert into Employee values (1, person_t(11, name_t('Josef', 'R', 'Ewing'), 59), depPerson_T(person_t(33, name_t('Franz', 'X', 'Nonsense'), 33), person_t(44, name_t('Uschi', 'K', 'Glas'), 48), person_t(55, name_t('Mika', 'L', 'Most'), 52)) ); insert into Employee values (2, person_t(22, name_t('Karla', 'M', 'Hut'), 34), depPerson_T(person_t(66, name_t('Hans', 'L', 'Moser'), 72), person_t(77, name_t('Paul', 'A', 'Popp'), 41)) ); User Defined Functions Das Einfügen geschieht wie bisher. Die UDFs ändern das bisherige Vorgehen nicht!

KarczewskiDatenbanken II40 Beispiel (Selection): select ENR, E.NumberOfDep() from Employee E; ENR E.NUMBEROFDEP() User Defined Functions Beispiel (Selection): select ENR, E.BigBoss() from Employee E; ENR E.BIGBOSS() Big Boss 2 Boss Der Resultat-Wert des Funktionsaufrufs wird als eigene Spalte ausgegeben. Die Klammern müssen angegeben werden. Der alias ist Pflicht!

KarczewskiDatenbanken II41 Beispiel ORDB (UDF)

KarczewskiDatenbanken II42 Beispiel ORDB (UDF)

KarczewskiDatenbanken II43 Beispiel ORDB (Ref) Produkt Nummer: int Bezeichnung: String Funktion: String Subprodukt: collection of Produkt anzsub: int … weitere Methoden zur Stückliste

KarczewskiDatenbanken II44 Beispiel ORDB (Ref)

KarczewskiDatenbanken II45 Beispiel ORDB (Ref)

KarczewskiDatenbanken II46 Beispiel ORDB (Ref)

KarczewskiDatenbanken II47 Beispiel ORDB (Ref)

KarczewskiDatenbanken II48 Beispiel ORDB (Ref)

KarczewskiDatenbanken II49 Beispiel ORDB (Ref)