ORACLE9i: Objekt-Relationale Datenbanken
|
|
- Nele Kuntz
- vor 7 Jahren
- Abrufe
Transkript
1 ORACLE9i: Objekt-Relationale Datenbanken Günter Preuner und Werner Obermair, 1999 Thomas Thalhammer, Institut für Wirtschaftsinformatik Seite 1
2 Objektrelationale Datenbanken mit Oracle9i Seite 2 Inhalt (1) Motivation (2) Objekttypen (3) Objekttabellen und Referenzen (4) Methoden (5) Programmbereich vs. Datenbereich (6) Kollektionen (7) Inverse Referenzen (8) Packages (9) Vererbung
3 Objektrelationale Datenbanken mit Oracle9i Seite 3 relationales Datenmodell: Motivation relational / objektorientiert / objektrelational alle Informationen über Entitäten und Beziehungen in Tabellen einfache Datentypen (1. Normalform) Definition von Struktur in Tabellen, Definition von Verhalten in separaten Prozeduren, Packages objektorientiertes Datenmodell: alle Information in Objekten komplexe Datenstrukturen gemeinsame Definition von Struktur und Verhalten Vererbung, Polymorphismus, Dynamische Bindung objektrelationales Datenmodell: Speicherung von Information in Tabellen mit komplexen Datentypen Definition von Struktur und Verhalten in Typen mit Vererbung Rückwärtskompatibilität mit Relationenmodell
4 Objektrelationale Datenbanken mit Oracle9i Seite 4 Motivation Beispiel: Relationale Umsetzung UML Diagramm konventionelle relationale Umsetzung Thema themaid bezeichnung /anzaussagen umfasst {idabhängig} Aussage nr text wert * CREATE TABLE Themen ( themaid CHAR(5) PRIMARY KEY, bezeichnung VARCHAR(30) NOT NULL); CREATE TABLE Aussagen ( themaid CHAR(5) NOT NULL REFERENCES Themen(themaId) ON DELETE CASCADE, nr NUMBER(2) NOT NULL, text VARCHAR(256) NOT NULL, wert CHAR(1) NOT NULL CHECK (wert IN ( w, f )), PRIMARY KEY (themaid, nr)); {wert IN ('w','f')}
5 Objektrelationale Datenbanken mit Oracle9i Seite 5 Motivation Beispiel: Objektorientierte Umsetzung UML Diagramm oo Umsetzung (unidirektional) oo Umsetzung (bidirektional) Thema themaid bezeichnung /anzaussagen umfasst * {idabhängig} Aussage nr text wert {wert IN ('w','f')} CLASS Thema ( themaid String, bezeichnung String); CLASS Aussage ( thema Thema, nr Integer, text String, wert Char); natürlich kann die Beziehung auch in die andere Richtung gespeichert werden! CLASS Thema ( themaid String, bezeichnung String, aussagen {Aussage}); CLASS Aussage ( thema Thema, nr Integer, text String, wert Char);
6 Objektrelationale Datenbanken mit Oracle9i Seite 6 Objektrelationales Datenmodell Übersicht Objekttypen: Definition von Typen mit Struktur (Attribute) und Verhalten (Methoden) Subtyp/Supertyp-Beziehungen Objekttabellen: Tabellen, mit Instanzen von Objekttypen (Objekten) als Zeilen; im Gegensatz zu relationalen Tabellen mit Tupeln als Zeilen Verschachtelte Kollektionen: Verschachtelte Tabellen (nested tables): Definition von Tabellen-Typen benötigt für Tabellen in Tabellen (nicht 1. NF) variable Arrays: Definition von eindimensionalen Feldern; werden benötigt für begrenzte Tabellen innerhalb von Tabellen
7 Objektrelationale Datenbanken mit Oracle9i Seite 7 Objekttypen Definition Definition von Struktur und Verhalten: mindestens ein Attribut Methoden (Prozeduren und Funktionen) sind optional Vererbung, Polymorphismus, Dynamische Bindung Definition mittels Type Specification und Type Body: Type Specification: Attribute und Schnittstelle von Methoden Type Body: Implementierung aller Methoden derzeit sind alle Attribute und Methoden öffentlich (es gibt keine privaten Attribute und Methoden)
8 Objektrelationale Datenbanken mit Oracle9i Seite 8 Objekttypen Definition von Attributen Definition von Attributen: manche Datentypen sind nicht zulässig: BOOLEAN, RECORD, %TYPE, %ROWTYPE etc. keine Definition von Typen innerhalb von Typen keine Constraints und Default Werte Beispiel: CREATE OR REPLACE TYPE TY_Thema AS OBJECT ( themaid CHAR(5), bezeichnung VARCHAR(30));
9 Objektrelationale Datenbanken mit Oracle9i Seite 9 Objekttypen Verwendung von Objekttypen in PL/SQL-Variablen: DECLARE t TY_Thema; /* kein Anlegen eines Themas: t IS NULL */ in anderen Objekttypen: Objekttyp als Bestandteil eines anderen Typs in relationalen Tabellen: Objekt ist in Tupel eingebettet, gehört exklusiv zu diesem Tupel in Objekttabellen: Objekttyp beschreibt eigenständiges Objekt, das von außen referenziert werden kann
10 Objektrelationale Datenbanken mit Oracle9i Seite 10 Objekttypen Verwendung in anderen Objekttypen ein Objekttyp kann als Typ von Attributen bei der Definition eines anderen Objekttypen verwendet werden Beispiel: CREATE OR REPLACE TYPE TY_Aussage AS OBJECT ( nr NUMBER, text VARCHAR(256), wert CHAR(1), thema TY_Thema); mögliche Instanz von Typ TY_Aussage nr: 1 text: In UML kann... wert: w thema.themaid: Konz bezeichnung: Konzept. Entwurf
11 Objektrelationale Datenbanken mit Oracle9i Seite 11 Objekttypen Verwendung in relationalen Tabellen ein Objekttyp kann als Spaltentyp bei der Definition einer relationalen Tabelle verwendet werden Beispiel: CREATE TABLE Aussagen( nr NUMBER, text VARCHAR(256), wert CHAR(1), thema TY_Thema); nr text wert thema.themaid thema.bezeichnung 1 In UML kann... w Konz Konzept. Entwurf 3 Jede Klasse... f Log Logischer Entwurf 5 Ein Cluster... f Phys Phys. Entwurf
12 Objektrelationale Datenbanken mit Oracle9i Seite 12 Objekttypen Verwendung in Objekttabellen Eine Objekttable ist eine Tabelle mit Instanzen von Objekttypen als Zeilen. Jede Zeile wird durch einen Object Identifier (OID) eindeutig identifiziert. Beispiel: CREATE TABLE Themen OF TY_Thema; OID themaid bezeichnung 0EB9883 Konz Konzeptueller Entwurf 0CT2382 Log Logischer Entwurf 1ER0431 Phys Physischer Entwurf unsichtbare Spalte
13 Objektrelationale Datenbanken mit Oracle9i Seite 13 Objekttabellen und Referenzen Übersicht bisher: Objekte wurden - als eine Spalte eines anderen Typs oder einer Tabelle definiert - eingebettet, also exklusiv einem übergeordneten Objekt zugeteilt - Beispiel (von vorhin): CREATE TABLE Aussagen( nr NUMBER, text VARCHAR(256), wert CHAR(1), thema TY_Thema); Anforderungen: Object sharing: kein exklusives Einbetten, sondern Verweise auf Objekte Object sharing ist sinnvoll, wenn referenziertes Objekt unabhängig existieren kann oder mehrere Objekte auf ein bestimmtes Objekt verweisen: - mehrere Aussagen können zu einem Thema gehören - ein Thema existiert auch, wenn es dazu keine Aussage gibt
14 Objektrelationale Datenbanken mit Oracle9i Seite 14 Objekttabellen und Referenzen Beispiel (1) UML Diagramm Umsetzung mit Objekttabellen und Referenzen Thema themaid bezeichnung /anzaussagen umfasst {idabhängig} Aussage nr text wert * {wert IN ('w','f')} CREATE OR REPLACE TYPE TY_Thema AS OBJECT( themaid CHAR(5), bezeichnung VARCHAR(30)); CREATE OR REPLACE TYPE TY_Aussage AS OBJECT( nr NUMBER(2), text VARCHAR(256), wert CHAR(1), thema REF TY_Thema); CREATE TABLE Themen OF TY_Thema; CREATE TABLE Aussagen OF TY_Aussage;
15 Objektrelationale Datenbanken mit Oracle9i Seite 15 Objekttabellen und Referenzen Beispiel (2) UML Diagramm Umsetzung mit Objekttabellen und Referenzen Thema themaid bezeichnung /anzaussagen OID themaid bezeichnung 0EB9883 Konz Konzeptueller Entwurf 0CT2382 Log Logischer Entwurf 1ER0431 Phys Physischer Entwurf umfasst {idabhängig} Aussage nr text wert * {wert IN ('w','f')} OID nr text wert thema 3GH In UML kann... w 0EB9883 2HI Die Vererbung... f 0EB9883 4RT Jede Relation... w 0CT2382 2BM Der B*-Baum... f 1ER0431 5PX Jeder Index... f 1ER0431
16 Objektrelationale Datenbanken mit Oracle9i Seite 16 Objekttabellen und Referenzen Integritätsbedingungen Integritätsbedingungen können nicht zu Objekttypen, sondern nur zu Tabellen definiert werden wichtige Integritätsbedingungen Primary Key: Jedes Objekt wird durch seinen OID eindeutig identifiziert. Dieser OID hat jedoch nur interne Bedeutung. Dient nicht der externen Identifikation eines Objektes durch einen Benutzer. Wertebereichseinschränkungen: UNIQUE, NOT NULL, CHECK Referentielle Integrität: Dangling References (Objekt verweist auf ein Objekt, das nicht mehr existiert) werden dadurch vermieden.
17 Objektrelationale Datenbanken mit Oracle9i Seite 17 Objekttabellen und Referenzen Integritätsbedingungen, Beispiel UML Diagramm Umsetzung mit Objekttabellen, Referenzen und Integritätsbedingungen Thema themaid bezeichnung /anzaussagen umfasst {idabhängig} Aussage nr text wert * {wert IN ('w','f')} CREATE OR REPLACE TYPE TY_Thema AS OBJECT (...); CREATE TABLE Themen OF TY_Thema ( themaid PRIMARY KEY, bezeichnung UNIQUE NOT NULL); CREATE OR REPLACE TYPE TY_Aussage AS OBJECT (...); CREATE TABLE Aussagen OF TY_Aussage ( nr NOT NULL, text NOT NULL, wert NOT NULL CHECK (wert IN ( w, f )), thema NOT NULL REFERENCES Themen);
18 Objektrelationale Datenbanken mit Oracle9i Seite 18 Objekttabellen und Referenzen Zugriff über Referenzen Query: Selektion aller Aussagen zum Themenbereich Entwurf : SELECT a.nr, a.text, a.wert FROM Aussagen a WHERE a.thema.bezeichnung LIKE %Entwurf% Vergabe eines Aliases für die Tabelle ist erforderlich! Navigation entlang einer Referenz durch Punktnotation! Kein Join notwendig! Vergleich: Query im klassischen relationalen Modell: SELECT a.nr, a.text, a.wert FROM Aussagen a, Themen t WHERE a.themaid = t.themaid AND t.bezeichnung LIKE %Entwurf% Join über Fremdschlüsselattribut notwendig!
19 Objektrelationale Datenbanken mit Oracle9i Seite 19 Objekttabellen und Referenzen Einfügen von Referenzen INSERT: Hinzufügen einer Aussage zum existierenden Thema Konz : INSERT INTO Aussagen VALUES ( TY_Aussage(1, In UML kann..., w, (SELECT REF(t) FROM Themen t WHERE t.themaid = Konz ))); Vergleich: Hinzufügen im klassischen relationalen Modell: INSERT INTO Aussagen VALUES ( 1, In UML kann..., w, Konz );
20 Objektrelationale Datenbanken mit Oracle9i Seite 20 Methoden Konstruktormethode existiert automatisch (kein explizites Definieren nötig) trägt denselben Namen wie Typ erwartet einen Parameter pro definiertem Attribut (kann NULL sein) kann vom Programmierer nicht um applikationsspezifischen Code erweitert werden muss immer explizit aufgerufen werden: in PL/SQL: DECLARE t TY_Thema:= TY_Thema( Konz, Konzept. Entwurf ) in interactive SQL: INSERT INTO Themen VALUES (TY_Thema( Konz, Konzept. Entwurf ));
21 Objektrelationale Datenbanken mit Oracle9i Seite 21 Konstruktormethode Benutzerspezifizierte Konstruktoren kann zusätzlich zum Default-Konstruktor definiert werden (mit anderer Parameterliste) Beispiel: CREATE OR REPLACE TYPE TY_Aussage AS OBJECT (... CONSTRUCTOR FUNCTION TY_Aussage(text VARCHAR, wert CHAR) RETURN SELF AS RESULT... CREATE OR REPLACE TYPE BODY TY_Aussage... CONSTRUCTOR FUNCTION TY_Aussage(text VARCHAR, wert CHAR) RETURN SELF AS RESULT AS BEGIN SELF.nr := generatenewid(); -- generiert eine neue Nummer SELF.text := text; SELF.wert := wert; END;
22 Objektrelationale Datenbanken mit Oracle9i Seite 22 Methoden Definition Definition von Methoden: Schlüsselwort MEMBER Namen dürfen nicht gleich sein mit Namen von Attributen Parameter IN, OUT, oder IN OUT (Default: IN) impliziter Parameter SELF, referenziert das Objekt, über das die Methode aufgerufen wird, Verwendung optional Overloading möglich (gleicher Methodenname, verschiedene Parameterlisten) Konstruktor-Methode existiert immer, Name gleich wie Objekttyp MAP und ORDER-Methoden für Vergleiche
23 Objektrelationale Datenbanken mit Oracle9i Seite 23 Methoden Beispiel CREATE OR REPLACE TYPE TY_Thema AS OBJECT ( themaid CHAR(5), bezeichnung VARCHAR(30), MEMBER FUNCTION anzaussagen RETURN NUMBER, PRAGMA RESTRICT_REFERENCES(anzAussagen, WNDS, RNPS, WNPS)); CREATE OR REPLACE TYPE BODY TY_Thema AS /* Definition der Methoden */ MEMBER FUNCTION anzaussagen RETURN NUMBER IS anzahl NUMBER; BEGIN SELECT COUNT(*) INTO anzahl FROM Aussagen a WHERE a.thema.themaid = SELF.themaId; RETURN anzahl; END; END;
24 Objektrelationale Datenbanken mit Oracle9i Seite 24 Methoden Reinheitsgrade Ein Reinheitsgrad gibt an, welche Datenstrukturen eine Methode liest oder ändert. Reinheitsgrad WNDS RNDS WNPS RNPS Bedeutung Writes No Database State Reads No Database State Writes No Package State Reads No Package State Beschreibung Die Methode führt keine Änderungen an Datenbanktabellen durch (mittels INSERT-, UPDATE- oder DELETE-Anweisungen). Die Methode liest keine Datenbanktabellen (mittels SELECT- Anweisungen). Die Methode führt keine Änderungen an Paketvariablen durch (d.h., Paketvariablen kommen weder auf der linken Seite einer Zuweisung noch in einer FETCH-Anweisung vor). Die Methode liest keine Werte aus Paketvariablen aus (d.h., Paketvariablen kommen weder auf der rechten Seite einer Zuweisung noch als Bestandteil eines prozeduralen oder SQL-Ausdrucks vor). Paket: Modul von zusammengehörigen Prozeduren, Funktionen, Cursors, Typen und Variablen Ein Reinheitsgrad wird mit der Compiler-Anweisung PRAGMA RESTRICT_REFERENCES in der Typ- oder Paketspezifikation festgelegt.
25 Objektrelationale Datenbanken mit Oracle9i Seite 25 Methoden Aufruf in SELECT-Statements Eine Methode kann in einem SELECT-Statement aufgerufen werden, wenn sie bestimmte Eigenschaften erfüllt: Die Methode besitzt den Reinheitsgrad WNDS (um parallel ausgeführt werden zu können, muß sie auch die Reinheitsgrade RNPS und WNPS besitzen). Die Methode darf nur über IN, nicht aber über IN OUT oder OUT Parameter verfügen. Als Parametertypen und als Typ des Rückgabewertes dürfen nur Datenbanktypen verwendet werden (nicht PL/SQL-Typen wie BOOLEAN oder RECORD). Beispiel: SELECT t.themaid, t.anzaussagen() FROM Themen t;
26 Objektrelationale Datenbanken mit Oracle9i Seite 26 Methoden MAP- und ORDER-Methoden Motivation: Objekte haben keine implizite Ordnung, eine Reihenfolge ist aber manchmal erwünscht (z.b. ORDER BY-Klausel in SQL-Abfrage) MAP-Methode: parameterlose Funktion, die einen Wert zurückliefert, Sortierung von Objekten erfolgt auf Grund der von diesen Objekten zurückgelieferten Werte; zulässige Datentypen: DATE, NUMBER, VARCHAR2, CHAR,... ORDER-Methode: vergleicht Objekt, über das die Methode aufgerufen wird, mit einem anderen Objekt o desselben Typs, das als Parameter übergeben wird; Funktion liefert -1 (SELF ist kleiner als o), 0 (SELF ist gleich o), 1 (SELF ist größer als o) ORDER MEMBER FUNCTION vergleich(t TY_Thema) RETURN INTEGER IS BEGIN IF (t.anzaussagen() = self.anzaussagen()) THEN RETURN 0; ELSIF (t.anzaussagen() > self.anzaussagen()) THEN RETURN -1 ELSE RETURN 1; END IF; END;
27 Objektrelationale Datenbanken mit Oracle9i Seite 27 Programmbereich/Datenbereich Motivation Die Ausführung von PL/SQL (und damit auch von Objektmethoden) erfolgt im Programmbereich (nicht im Datenbereich) von Oracle. Im Programmbereich existieren nur Kopien (mit Ausnahme der REFs) der Objekte des Datenbereiches. -> Explizite Synchronisation mit dem Datenbereich erforderlich. Alternative Lösungsmöglichkeiten Verwendung von SQL-Statements (INSERT, UPDATE, DELETE) Verwendung der Prozeduren des Pakets UTL_REF
28 Objektrelationale Datenbanken mit Oracle9i Seite 28 Programmbereich/Datenbereich Beispiel - Verwendung von SQL-Statements CREATE OR REPLACE TYPE BODY TY_Thema AS MEMBER PROCEDURE aktualisiere (themaidneu CHAR, bezneu VARCHAR) IS BEGIN UPDATE Themen SET themaid = themaidneu, bezeichnung = bezneu WHERE themaid = SELF.themaId; SELF.themaId := themaidneu; SELF.bezeichnung := bezneu; END; /* PROCEDURE */ END; /* TYPE BODY */ -> Artfremd aus Sicht der objekt-orientierten Programmierung
29 Objektrelationale Datenbanken mit Oracle9i Seite 29 Programmbereich/Datenbereich Verwendung von UTL_REF Das Paket UTL_REF bietet u.a. folgende Prozeduren für die Schnittstelle Programmbereich/Datenbereich: SELECT_OBJECT ( reference IN REF <typename>, object IN OUT <typename> ) entspricht dem SQL-Statement: SELECT VALUE(t) INTO object FROM object_table t WHERE REF(t) = reference; UPDATE_OBJECT ( reference IN REF <typename>, object IN <typename> ) entspricht dem SQL-Statement UPDATE object_table t SET VALUE(t) = object WHERE REF(t) = reference DELETE_OBJECT ( reference IN REF <typename> ) entspricht dem SQL-Statement DELETE FROM object_table t WHERE REF(t) = reference;
30 Objektrelationale Datenbanken mit Oracle9i Seite 30 Programmbereich/Datenbereich Beispiel - Verwendung von UTL_REF MEMBER PROCEDURE aktualisiere (themaidneu CHAR, bezneu VARCHAR) IS BEGIN SELF.themaId := themaidneu; SELF.bezeichnung := bezneu; END; /* PROCEDURE */ Der Aufrufer der Methode aktualisiere hat dafür zu sorgen, daß das Thema- Objekt in den Datenbereich übertragen wird. DECLARE themar REF TY_Thema; thema TY_Thema; BEGIN SELECT REF(t) INTO themar FROM Themen t WHERE t.themaid = WA ; UTL_REF.SELECT_OBJECT(themaR, thema); thema.aktualisiere( RC, Recovery ); UTL_REF.UPDATE_OBJECT(themaR, thema); END;
31 Objektrelationale Datenbanken mit Oracle9i Seite 31 Programmbereich/Datenbereich Einschränkungen von PL/SQL Die Funktionen REF(), DEREF(), und VALUE() können in PL/SQL nicht verwendet werden. Navigation über REF-Attribute ist in PL/SQL nicht möglich! Abhilfe: Verwendung der Prozedur UTL_REF.SELECT_OBJECT Beispiel (Navigation Aussage -> REF Thema, in Methode von TY_Aussage): DECLARE meinthema TY_Thema; BEGIN... UTL_REF.SELECT_OBJECT(SELF.thema, meinthema); meinthema.aktualisiere(...);... END;
32 Objektrelationale Datenbanken mit Oracle9i Seite 32 Kollektionen Arten und Eigenschaften generelle Eigenschaften: Menge von Objekten desselben Typs keine mehrfach geschachtelten Strukturen zulässig verschachtelte Tabellen ( nested tables ): Tabellen innerhalb von anderen Tabellen physische Speicherung nicht eingebettet in andere Tabelle sondern in separater Tabelle keine maximale Größe variable Arrays: Felder mit begrenzter Zahl von Elementen geordnete Menge: Zugriff über numerischen Index physisch eingebettet in übergeordnete Tabelle
33 Objektrelationale Datenbanken mit Oracle9i Seite 33 Kollektionen Typdefinition verschachtelte Tabelle: CREATE TYPE type_name AS TABLE OF element_type; variable Arrays: CREATE TYPE type_name AS VARRAY (size_limit) OF element_type; Beispiele: CREATE OR REPLACE TYPE TY_Aussagen AS TABLE OF REF TY_Aussage; CREATE OR REPLACE TYPE TY_Aussagen AS VARRAY (10) OF REF TY_Aussage;
34 Objektrelationale Datenbanken mit Oracle9i Seite 34 Verschachtelte Tabellen Beispiel (1) UML Diagramm Thema themaid bezeichnung /anzaussagen umfasst {idabhängig} Aussage nr text wert * {wert IN ('w','f')} Umsetzung mit verschachtelter Tabelle (Thema referenziert Aussagen) CREATE OR REPLACE TYPE TY_Aussage AS OBJECT( nr NUMBER(2), text VARCHAR(256), wert CHAR(1)); CREATE OR REPLACE TYPE TY_Aussagen AS TABLE OF REF TY_Aussage; CREATE OR REPLACE TYPE TY_Thema AS OBJECT ( themaid CHAR(5), bezeichnung VARCHAR(30), aussagen TY_Aussagen); CREATE TABLE Aussagen OF TY_Aussage; CREATE TABLE Themen OF TY_Thema NESTED TABLE aussagen STORE AS ThemaAussagen;
35 Objektrelationale Datenbanken mit Oracle9i Seite 35 Verschachtelte Tabellen Beispiel (2) OID themaid bezeichnung 0EB9883 Konz Konzeptueller Entwurf 0CT2382 Log Logischer Entwurf 1ER0431 Phys Physischer Entwurf Themen ThemaAussagen REF 3GH9345 2HI2856 4RT0902 2BM9822 5PX7704 Aussagen OID nr text wert 3GH In UML kann... w 2HI Die Vererbung... f 4RT Jede Relation... w 2BM Der B*-Baum... f 5PX Jeder Index... f
36 Objektrelationale Datenbanken mit Oracle9i Seite 36 Verschachtelte Tabellen Constraints Constraints für verschachtelte Tabellen durch separates ALTER TABLE-Statement Constraints können sein: UNIQUE, SCOPE etc. (FOREIGN KEY nicht möglich) Beispiel: CREATE TABLE Themen OF TY_Thema NESTED TABLE aussagen STORE AS ThemaAussagen; ALTER TABLE ThemaAussagen ADD (SCOPE FOR (column_value) IS Aussagen); Hinweise: COLUMN_VALUE ist implizierter Attributname der (einzigen) Spalte von ThemaAussagen SCOPE schränkt Werte für COLUMN_VALUE auf OIDs von Aussagen ein, prüft allerdings bei Lösch-/Update-Operationen nicht die referenzielle Integrität
37 Objektrelationale Datenbanken mit Oracle9i Seite 37 Verschachtelte Tabellen Einfügen, Beispiel INSERT INTO Themen VALUES (TY_Thema( Konz, Konzeptueller Entwurf,TY_Aussagen())); INSERT INTO Aussagen VALUES(TY_Aussage(1, In UML kann..., w )); INSERT INTO Aussagen VALUES(TY_Aussage(2, Die Vererbung..., f ));... Hinzufügen von bestehenden Aussagen zu einem bestehenden Thema durch unnesting der Verschachtelten Tabelle mittels Operator TABLE: INSERT INTO TABLE(SELECT t.aussagen FROM Themen t WHERE t.themaid = Konz ) (SELECT REF(a) FROM Aussagen a);
38 Objektrelationale Datenbanken mit Oracle9i Seite 38 Verschachtelte Tabellen Abfragen, Beispiel Auch bei Abfragen über eine verschachtelte Tabelle muß ein unnesting erfolgen. Dazu wird der TABLE-Operator in der FROM-Klausel einer Abfrage verwendet: Problem: Direkte Abfrage von Attributen einer verschachtelten Tabelle funktioniert nur, wenn versch. Tabelle direkt eingebettete Objekte enthält (keine REFs)! SELECT a.nr FROM Themen t, TABLE(t.aussagen) a WHERE t.themaid= Konz ; CREATE OR REPLACE TYPE TY_Aussagen AS TABLE OF TY_Aussage; Mögliche Abhilfe bei verschachtelten REF-Tabellen: Auswahl ganzer verschachtelter Objekte und spätere Weiterverarbeitung (Navigation über Nested Table REFS funktioniert nicht)! SELECT DEREF(VALUE(a)) FROM Themen t, TABLE(t.aussagen) a WHERE t.themaid= Konz ; Ergebnis CREATE OR REPLACE TYPE TY_Aussagen AS TABLE OF REF TY_Aussage; DEREF(VALUE(A))(NR, TEXT, WERT) VALUE: Liefert den Wert eines Tabellen-Alias DEREF: Dereferenziert eine Referenz TY_AUSSAGE(1, In UML kann..., w )
39 Objektrelationale Datenbanken mit Oracle9i Seite 39 Kollektionen Unterschiede verschachtelte Tabellen - variable Arrays Größe: beliebig bei verschachtelten Tabellen, begrenzt bei variablen Arrays Löschen einzelner Elemente: erlaubt bei verschachtelten Tabellen, nicht möglich bei variablen Arrays (nur NULL-Setzen zulässig) Positionen, an denen Element gelöscht wurde, werden als gelöscht markiert Dichte Speicherung: zu Beginn sind sowohl verschachtelte Tabellen als auch variable Arrays dicht (d.h., es gibt keine Lücken ); nach Löschoperationen können in verschachtelten Tabellen Lücken entstehen
40 Objektrelationale Datenbanken mit Oracle9i Seite 40 Kollektionen Standard-Methoden Aufruf in PL/SQL durch collection_variable.method_name[(parameters)] Name Erklärung EXISTS(n) Existiert n-tes Element in der Kollektion? COUNT Anzahl der Elemente in der Kollektion LIMIT Obergrenze von Elementen in variablen Arrays FIRST/LAST Index des ersten bzw. letzten Elementes PRIOR(n)/NEXT(n) Index vor/nach dem Element mit Index n (NULL, falls nicht vorhanden) EXTEND[(n)] Anfügen von n NULL-Elementen an Kollektion (bei variablen Arrays darf LIMIT nicht überschritten werden (n ist optional - Default für n ist 1)) TRIM[(n)] Entfernen von n Elementen vom Ende der Kollektion DELETE[(n)] DELETE(n,m) Löschen des Elements n (bzw. der Elemente n bis m); nur in verschachtelten Tabellen möglich, Element wird als gelöscht markiert
41 Objektrelationale Datenbanken mit Oracle9i Seite 41 Kollektionen Standard-Methoden, Beispiel CREATE OR REPLACE TYPE TY_Thema AS OBJECT ( themaid CHAR(5), bezeichnung VARCHAR(30), aussagen TY_Aussagen, MEMBER FUNCTION anzaussagen RETURN NUMBER, PRAGMA RESTRICT_REFERENCES(anzAussagen, RNDS, WNDS, RNPS, WNPS)); CREATE OR REPLACE TYPE BODY TY_Thema AS /* Definition der Methoden */ MEMBER FUNCTION anzaussagen RETURN NUMBER IS BEGIN RETURN aussagen.count(); END; END;
42 Objektrelationale Datenbanken mit Oracle9i Seite 42 Inverse Referenzen Beispiel (1) UML Diagramm Umsetzung mit inversen Referenzen CREATE OR REPLACE TYPE TY_Aussage; Vorwärtsdeklaration Thema themaid bezeichnung /anzaussagen umfasst {idabhängig} Aussage nr text wert * {wert IN ('w','f')} CREATE OR REPLACE TYPE TY_Aussagen AS TABLE OF REF TY_Aussage; CREATE OR REPLACE TYPE TY_Thema AS OBJECT ( themaid CHAR(5), bezeichnung VARCHAR(30), aussagen TY_Aussagen); CREATE OR REPLACE TYPE TY_Aussage AS OBJECT ( nr NUMBER(2), text VARCHAR(256), wert CHAR(1), thema REF TY_Thema); CREATE TABLE Aussagen OF TY_Aussage; CREATE TABLE Themen OF TY_Thema NESTED TABLE aussagen STORE AS ThemaAussagen;
43 Objektrelationale Datenbanken mit Oracle9i Seite 43 Inverse Referenzen Beispiel (2) Hinzufügen von zwei Aussagen zum bestehenden Thema mit der themaid Konz : INSERT INTO Aussagen VALUES (TY_Aussage(1, In UML kann..., w, (SELECT REF(t) FROM Themen t WHERE t.themaid= Konz ))); INSERT INTO Aussagen VALUES (TY_Aussage(2, Die Vererbung..., f, (SELECT REF(t) FROM Themen t WHERE t.themaid= Konz ))); INSERT INTO TABLE (SELECT t.aussagen FROM Themen t WHERE t.themaid = Konz ) (SELECT REF(a) FROM Aussagen a WHERE a.thema.themaid= Konz );
44 Objektrelationale Datenbanken mit Oracle9i Seite 44 Inverse Referenzen Inkonsistenzen Problem: Werden Referenzen in beide Richtungen verwaltet, so sind beim Hinzufügen eines neuen Datensatzes zwei Schritte erforderlich. Wird nur ein Schritt ausgeführt, so befindet sich die Datenbank in einem inkonsistenten Zustand. Ziel: Generelle Vermeidung inkonsistenter Zustände. Vorschlag: Für DML-Operationen werden eigene Prozeduren/Funktionen eingeführt, die verhindern, daß es zu Inkonsistenzen kommt. Außerhalb der Datenbank werden keine INSERT-, UPDATE-, oder DELETE-Operationen verwendet, sondern nurmehr die Prozeduren/Funktionen, die diese Operationen kapseln. (Denkbar wären auch Methoden, solche können aber über JDBC nicht aufgerufen werden!) Konsequenz: Von außerhalb der Datenbank, z.b. von einer JDBC-Applikation, werden nur mehr SELECT-Statements und die vordefinierte Prozeduren oder Funktionen ausgeführt.
45 Objektrelationale Datenbanken mit Oracle9i Seite 45 Packages Verwendung, Beispiel (1) Ein Package erlaubt, zusammengehörige Variablen, Funktionen, Prozeduren, Typen, Cursors und Exceptions in einem Modul zusammenzufassen. CREATE OR REPLACE PACKAGE Test AS PROCEDURE fuegethemaein(parthemaid IN CHAR, parbezeichnung IN VARCHAR); e_themabereitsvorhanden EXCEPTION; PROCEDURE loeschethema(parthemaid IN CHAR); e_themanichtvorhanden EXCEPTION; PROCEDURE fuegeaussageein(parthemaid IN CHAR, parnr IN NUMBER, partext IN VARCHAR, parwert IN CHAR); e_aussagebereitsvorhanden EXCEPTION; PROCEDURE loescheaussage(parthemaid IN CHAR, parnr IN NUMBER); e_aussagenichtvorhanden EXCEPTION; END Test;
46 Objektrelationale Datenbanken mit Oracle9i Seite 46 Packages Verwendung, Beispiel (2) CREATE OR REPLACE PACKAGE BODY Test AS... PROCEDURE fuegeaussageein(parthemaid IN CHAR, parnr IN NUMBER, partext IN VARCHAR, parwert IN CHAR) IS neueaussage TY_Aussage; neueaussageref REF TY_Aussage; themaref REF TY_Thema; BEGIN SELECT REF(t) INTO themaref FROM Themen t WHERE t.themaid=parthemaid; neueaussage := TY_Aussage(parNr,parText,parWert,themaRef); INSERT INTO Aussagen a VALUES(neueAussage) RETURNING REF(a) INTO neueaussageref; INSERT INTO TABLE(SELECT t.aussagen FROM Themen t WHERE t.themaid=parthemaid) VALUES(neueAussageRef); END fuegeaussageein;... END Test; mögliche Verwendung: CALL Test.fuegeAussageEin( Konz,1, In UML kann..., w );
47 Objektrelationale Datenbanken mit Oracle9i Seite 47 Objektrelationales Schema vollständiges Beispiel CREATE OR REPLACE TYPE TY_Aussage; / CREATE OR REPLACE TYPE TY_Aussagen AS TABLE OF REF TY_Aussage; / CREATE OR REPLACE TYPE TY_Thema AS OBJECT ( themaid CHAR(5), bezeichnung VARCHAR(30), aussagen TY_Aussagen, MEMBER FUNCTION anzaussagen RETURN NUMBER, PRAGMA RESTRICT_REFERENCES (anzaussagen, RNDS, WNDS, RNPS, WNPS)); / CREATE OR REPLACE TYPE TY_Aussage AS OBJECT ( nr NUMBER(2), text VARCHAR(256), wert CHAR(1), thema REF TY_Thema); / CREATE TABLE Themen OF TY_Thema ( themaid PRIMARY KEY, bezeichnung NOT NULL) NESTED TABLE aussagen STORE AS ThemaAussagen; CREATE TABLE Aussagen OF TY_Aussage ( nr NOT NULL, text NOT NULL, CHECK(wert IN ( w, f )), thema REFERENCES Themen ON DELETE CASCADE); CREATE OR REPLACE TYPE BODY TY_Thema AS MEMBER FUNCTION anzaussagen RETURN NUMBER IS BEGIN RETURN aussagen.count(); END; END;
48 Objektrelationale Datenbanken mit Oracle9i Seite 48 Vererbung Motivation Bisher (relational/obj-rel ohne Vererbung): Vererbung wurde simuliert indem die Subtyp/Supertyp-Beziehung durch explizite Verweise realisiert wurde. Polymorphismus, Überschreiben von Methoden und Dynamische Bindung konnten nicht angewendet werden. Jetzt: Vermeidung von Redundanzen durch Herausfaktorisieren gemeinsamer Struktur- und Verhaltensinformationen (Generalisierung) bzw. durch Einführen von spezieller Erweiterungen (Spezialisierung) Polymorphismus, Überschreiben von Methoden und Dynamische Bindung können angewendet werden UNDER-Klausel bei Typdeklaration OVERRIDING-Klausel bei Methodensignatur
49 Objektrelationale Datenbanken mit Oracle9i Seite 49 Vererbung Modifiers FINAL / NOT FINAL: Vererbung kann gezielt verboten bzw. erlaubt werden bei Typ- und Methodendeklaration spezifizieren Defaults: FINAL Typen, NOT FINAL Methoden INSTANTIABLE / NOT INSTANTIABLE: Zur Definition von abstrakten Typen und Methoden bei Typ- und Methodendeklaration spezifizieren Defaults: INSTANTIABLE Typen und Methoden
50 Objektrelationale Datenbanken mit Oracle9i Seite 50 Vererbung Beispiel UML Diagramm Person name adresse geb_dat Umsetzung mit Vererbung CREATE OR REPLACE TYPE TY_Person AS OBJECT ( name VARCHAR(40), adresse VARCHAR(100), geb_dat DATE, MEMBER PROCEDURE druckeadresse ) NOT FINAL; Student matrikelnr stud_adresse CREATE OR REPLACE TYPE TY_Student UNDER TY_Person ( matrikelnr CHAR(7), stud_adresse VARCHAR(100), OVERRIDING MEMBER PROCEDURE druckeadresse ); CREATE TABLE Personen OF TY_Person (...); /* kann Instanzen von Person und Student aufnehmen */
51 Objektrelationale Datenbanken mit Oracle9i Seite 51 Vererbung Konstruktoren Der Konstruktor eines Subtyps erweitert den Konstruktor des Suptertyps. Die Attribute des Supertyps werden zuerst angeführt. UML Diagramm Person name adresse geb_dat INSERT INTO Personen VALUES ( TY_Person( Huber Franz, Hauptstraße 20, 4040 Linz, 15-May-1970 )); Student matrikelnr stud_adresse INSERT INTO Personen VALUES ( TY_Student( Meier Kurt, Wiesenweg 4, 6020 Innsbruck, 03-Nov-1980, , Blumengasse 4, 4040 Linz ));
52 Objektrelationale Datenbanken mit Oracle9i Seite 52 Vererbung Polymorphismus und Queries Um in einer Objekttabelle auf Attribute von Subtypen zugreifen zu können, stellt Oracle die Funktion TREAT (... AS type) zur Verfügung (nur im SELECT- Teil einer SQL-Query erlaubt): Beispiel: SELECT TREAT(VALUE(p) AS TY_Student).matrnr FROM personen p; liefert die Matrikelnummer vom Meier Kurt und NULL für Huber Franz Um in einer SQL-Query den Typ eines Objektes zu ermitteln stellt Oracle das Prädikat IS OF (type) zur Verfügung. Beispiel: SELECT TREAT(VALUE(p) AS TY_Student).matrnr FROM personen p WHERE VALUE(p) IS OF (TY_Student); Dieses Query wird nur für Objekte des Typs TY_Student ausgewertet
53 Objektrelationale Datenbanken mit Oracle9i Seite 53 Vererbung Spezifika/Einschränkungen Oberster Typ einer Hierarchie muss zumindest ein Attribut definieren Leere Typen (keine Attribute, keine Methoden) sind nicht erlaubt PL/SQL stellt nur das Schlüsselwort SELF, nicht aber SUPER zur Verfügung Spezialisierung von Methoden nur durch vollständiges überschreiben möglich Keine SUPER-Aufrufe (d.h. Ausführen der Implementierung einer Methode beim Basistyp) möglich
Objekt-relationales Datenbanksystem Oracle
Objekt-relationales Datenbanksystem Oracle 1 Benutzerdefinierte Datentypen 1.1 Unvollständige Typen create-incomplete-type OR 1.2 Kollektionstypen REPLACE TYPE type-name create-varray-type OR TYPE type-name
MehrObjektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern
Thema Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern Referent: Frank Sanders Seite 1 Inhalt Der Vortrag hat einen sehr kurzen Einleitungsteil der sich mit Objektorientierung
MehrObjektorientierung in Oracle
Seminarunterlage Version: 11.10 Version 11.10 vom 12. September 2013 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen
MehrObjektorientierung unter Oracle richtet sich einerseits nach objekt-orientierten Programmiersprachen wie Java,
Tipps & Tricks: Objektorientierung Bereich: PLSQL Erstellung: 032001 HA Versionsinfo: 9.2, 10.2, 11.1 Letzte Überarbeitung: 062009 HA Objektorientierung unter Oracle Objektorientierung unter Oracle richtet
MehrStrukturierte Objekttypen
Strukturierte Objekttypen Der Typ t approxmatch row des letzten Beispiels ist ein sogenannter Objekttyp. Definition: Ein Objekttyp ist ein Datentyp, bei dem (u.u. verschiedene) bekannte Datentypen zu einem
Mehr4. Objektrelationales Typsystem Kollektionstypen. Nested Table
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
MehrObjektrelationale Datenbanken. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München
Kapitel 6 Objektrelationale Datenbanken Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München 2008 Thomas Bernecker, Tobias Emrich unter Verwendung der Folien des Datenbankpraktikums aus dem
MehrModerne Datenbankkonzepte
Verteilte Datenbanken Moderne Datenbankkonzepte Wünschenswert, aber extrem aufwändig ( Zweiphasen Commit) Objektrelationale Datenbanken Kompromiss zwischen relational und rein objektorientiert seit 1999
MehrKapitel 5. Objektrelationale Datenmodell- und Spracherweiterungen kommerzieller Datenbanksysteme. Objektrelationale Erweiterungen in Oracle9i
Objekttypen Kapitel 5 Objektrelationale Datenmodell- und Spracherweiterungen kommerzieller Datenbanksysteme Oracle 9i, Release 9.0.1 DB2 Universal Database, Version 7 Informix Dynamic Server.2000, Version
MehrObjektrelationale, erweiterbare Datenbanken WS 04/05
Eidgenössische Technische Hochschule Zürich Swiss Federal Institute of Technology Zurich Institut für Informationssysteme Dr.C.Türker Objektrelationale, erweiterbare Datenbanken WS 0405 Übung 8 Aufgabe
MehrWiederholung VU Datenmodellierung
Wiederholung VU Datenmodellierung VU Datenbanksysteme Reinhard Pichler Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester
MehrISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de
08 Datenbanken Übung SQL Einführung Eckbert Jankowski www.iit.tu-cottbus.de Datenmodell (Wiederholung, Zusammenfassung) Objekte und deren Eigenschaften definieren Beziehungen zwischen den Objekten erkennen/definieren
MehrFunktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion
Überblick über Stored Functions Funktionen Eine Funktion ist ein benannter PL/SQL- Block, der einen Wert zurückgibt. Eine Funktion kann in der Datenbank als Objekt zur wiederholbaren Ausführung gespeichert
MehrWiederholung VU Datenmodellierung
Wiederholung VU Datenmodellierung VL Datenbanksysteme Reinhard Pichler Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester
MehrLogischer Entwurf und Dokumentation objektrelationaler Oracle Datenbanken
Fachhochschule Frankfurt/Main Logischer Entwurf und Dokumentation objektrelationaler Oracle Datenbanken 1 2 Agenda 1. Einleitung und Motivation 2. Fallbeispiel 3. Probleme mit UML Diagrammen 4. Beispielhafte
MehrVersehen Sie jedes Aufgabenblatt/-blätter mit Ihrem Namen und geben es mit ab! Seite 1
Versehen Sie jedes Aufgabenblatt/-blätter mit Ihrem Namen und geben es mit ab! Seite 1 Aufgabe 1: Wissensaufgabe Punkte: 20 Aufgabe 2: Objektrelationale Strukturen Punkte: 20 Aufgabe 3: Methode Punkte:
MehrZusammengesetzte Datentypen
Zusammengesetzte Datentypen.1 Records... -4.1.1 Implizite Typdeklaration mit %ROWTYPE... -6.1.2 Referenzierung eines Records... -6.2 PL/SQL Tables... -8.2.1 Deklaration einer PL/SQL Table... -8.3 Referenzierung
MehrSchnellübersichten. SQL Grundlagen und Datenbankdesign
Schnellübersichten SQL Grundlagen und Datenbankdesign 5 Datenbanken 2 6 Tabellen erstellen und verwalten 3 7 Daten einfügen, aktualisieren, löschen 4 8 Einfache Datenabfragen 5 9 Schlüsselfelder und Indizes
MehrWS 2010/11 Datenbanksysteme Fr 15:15 16:45 R 1.008. Vorlesung #5. SQL (Teil 3)
Vorlesung #5 SQL (Teil 3) Fahrplan Besprechung der Übungsaufgaben Rekursion Rekursion in SQL-92 Rekursion in DBMS- Dialekten (Oracle und DB2) Views (Sichten) - gespeicherte Abfragen Gewährleistung der
MehrDatenbanken. Zusammenfassung. Datenbanksysteme
Zusammenfassung Datenbanksysteme Christian Moser Seite 1 vom 7 12.09.2002 Wichtige Begriffe Attribut Assoziation API Atomares Attribut Datenbasis DBMS Datenunabhängigkeit Datenbankmodell DDL DML DCL ER-Diagramm
MehrÜbung Datenbanksysteme Updates, Integritätsbedingungen, funktionale Abhängigkeiten
Übung Datenbanksysteme Updates, Integritätsbedingungen, funktionale Abhängigkeiten 12.1.2004 Änderungsoperationen bei SQL (Daten) Einfügen neuer Tupel (schon bekannt) INSERT INTO Table (Spalte1, Spalte2)
MehrSeminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.
Seminar 2 SQL - DML(Data Manipulation Language) und DDL(Data Definition Language) Befehle. DML Befehle Aggregatfunktionen - werden auf eine Menge von Tupeln angewendet - Verdichtung einzelner Tupeln yu
MehrDieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.
Thomas Studer Relationale Datenbanken: Von den theoretischen Grundlagen zu Anwendungen mit PostgreSQL Springer, 2016 ISBN 978-3-662-46570-7 Dieser Foliensatz darf frei verwendet werden unter der Bedingung,
MehrKapitel 6 Objektrelationale Datenbanken
Kapitel 6 Objektrelatinale Datenbanken Flien zum Datenbankpraktikum Wintersemester 2012/13 LMU München 2008 Thmas Bernecker, Tbias Emrich 2010 Tbias Emrich, Erich Schubert unter Verwendung der Flien des
MehrOracle 10g Einführung
Kurs Oracle 10g Einführung Teil 5 Einführung Timo Meyer Administration von Oracle-Datenbanken Timo Meyer Sommersemester 2006 Seite 1 von 16 Seite 1 von 16 Agenda 1 Tabellen und Views erstellen 2 Indizes
MehrObjektorientierte PL/SQL- Programmierung
Objektorientierte PL/SQL- Programmierung Autoren: Andriy Terletskyy und Michael Meyer DOAGNews Q3_2004 Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere die der Übersetzung,
MehrDipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009
Hochschule Darmstadt DATENBANKEN Fachbereich Informatik Praktikum 3 Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009 PL/SQL Programmierung Anwendung des Cursor Konzepts und Stored Procedures Und Trigger
MehrDatenintegrität. Kapitel 5 1
Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung statische Integritätsbedingungen Bedingungen an den Zustand der Datenbasis dynamische
MehrArbeit mit zusammengesetzten Datentypen
Arbeit mit zusammengesetzten Datentypen Zusammengesetzte Datentypen Typen: PL/SQL RECORDS PL/SQL TABELLEN Enthalten interne Komponenten Sind wiederverwendbar Copyright Oracle Corporation, 1998. All rights
MehrPhilipp Cimiano AG Semantische Datenbanken und Wissensverarbeitung
Einführung in Datenbanken - Objekt-Orientierte Datenbanken - Philipp Cimiano AG Semantische Datenbanken und Wissensverarbeitung 1 Probleme mit dem relationalen Modell Das Typsystem des relationalen Modells
MehrDatenzugriffskomponente mit JPA 2.1
Datenzugriffskomponente mit JPA 2.1 (Grundlagen der Java Persistence Architecture) Vladislav Faerman Gliederung Einführung Konfiguration Objekt-Relationales Mapping (ORM) mit JPA Das zentrale Konzept der
MehrInhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung
Inhalt Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle Daten und Tabellen Normalisierung, Beziehungen, Datenmodell SQL - Structured Query Language Anlegen von Tabellen Datentypen (Spalten,
MehrObjektrelationale Datenbanken
Vorlesung Datenbanksysteme vom 26.11.2008 Objektrelationale Datenbanken Konzepte objektrelationaler DBs SQL:1999 OO vs. OR Konzepte objektrelationaler Datenbanken Große Objekte (LOBs: Large Objects) Mengenwertige
MehrIntegritätsbedingungen für komplexe Objekte in objektrelationalen Datenbanksystemen
10. GI-Fachtagung Datenbanksysteme in Büro, Technik und Wissenschaft Integritätsbedingungen für komplexe Objekte in objektrelationalen Datenbanksystemen Friedrich-Schiller-Universität Jena Institut für
MehrRelationales Datenbanksystem Oracle
Relationales Datenbanksystem Oracle 1 Relationales Modell Im relationalen Modell wird ein relationales Datenbankschema wie folgt beschrieben: RS = R 1 X 1 SC 1... R n X n SC n SC a a : i=1...n X i B Information
MehrObjektrelational: Einbettung der schwachen Entitätsmenge als tablewertiger Typ (NF2)
Aufgabe 1: (20 Punkte) a) Skizzieren Sie den Unterschied der Abbildung schwacher Entitätsmengen im klassischen und im objektrelationalen Datenmodell (mit Feinheiten!) (5 P) Klassisch: eigene Relation mit
MehrNachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)
Nachtrag: Farben Farbblindheit (Light und Bartlein 2004) 1 Vorgeschlagene Farbskalen (Light and Bartlein 2004) Farbkodierung metrisch skalierter Daten Unterscheide: 1. Sequential Data (ohne Betonung der
Mehr[ SQL] Wissen, das sich auszahlt
[www.teia.de SQL] Wissen, das sich auszahlt INHALT SEITE 12 [I] 1] Einführung in SQL und relationale Datenbanken 12 14 16 18 11 1.1 1.2 Einführung Die Structured Query Language (SQL) Tabellen Mehrere Tabellen
MehrProzedurale Datenbank- Anwendungsprogrammierung
Idee: Erweiterung von SQL um Komponenten von prozeduralen Sprachen (Sequenz, bedingte Ausführung, Schleife) Bezeichnung: Prozedurale SQL-Erweiterung. In Oracle: PL/SQL, in Microsoft SQL Server: T-SQL.
MehrÜbersicht der wichtigsten MySQL-Befehle
Übersicht der wichtigsten MySQL-Befehle 1. Arbeiten mit Datenbanken 1.1 Datenbank anlegen Eine Datenbank kann man wie folgt erstellen. CREATE DATABASE db_namen; 1.2 Existierende Datenbanken anzeigen Mit
MehrOracle native json Support. Erste Schritte
Oracle native json Support Erste Schritte 1 Ausgangslage Als erster Schritt erstellen wir eine Tabelle, die wir für den weiteren Verlauf brauchen werden. Die Felder Id, Created und Username sind normale
MehrDatenintegrität. Kapitel 5 1
Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung statische Integritätsbedingungen Bedingungen an den Zustand der Datenbasis dynamische
MehrGrundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich
Grundlagen von SQL Informatik 2, FS18 Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich Markus Dahinden 13.05.18 1 Grundlagen von SQL (Structured Query Language)
MehrSQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)
SQL DDL (Data Definition Language) Befehle und DML(Data Manipulation Language) DML(Data Manipulation Language) SQL Abfragen Studenten MatrNr Name Vorname Email Age Gruppe 1234 Schmidt Hans schmidt@cs.ro
Mehr5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp
5/14/18 Grundlagen von SQL (Structured Query Language) Datenbanksprache Befehle Datenbanken und Tabellen erstellen/verändern Daten manipulieren (eingeben, ändern, löschen) Datenbank durchsuchen (Queries
MehrDatenbanksysteme 2013
Datenbanksysteme 2013 Kapitel 8: Datenintegrität Vorlesung vom 14.05.2013 Oliver Vornberger Institut für Informatik Universität Osnabrück Datenintegrität Statische Bedingung (jeder Zustand) Dynamische
MehrKlausur PI Datenbanken II vom Name: Praktische Informatik (Krägeloh)
Versehen Sie jedes Aufgabenblatt/-blätter mit Ihrem Namen und geben es mit ab! Seite 1 Aufgabe 1: ( 30 Punkte) 1) Ein Entity-Set E1 wird in die Subklassen S1 und S2 spezialisiert. Was bedeutet die Aussage:
MehrOracle: Abstrakte Datentypen:
Oracle: Abstrakte Datentypen: Oracle bietet zwei mögliche Arten um abstrakte Datentypen zu implementieren: Varying Array Nested Table Varying Array (kunde) kdnr kdname gekaufteart 1 Mustermann 1 4 5 8
Mehrd.h. zu Definitions-Stelle eindeutiger Funktionswert x X! y Y : (x,y) f umgekehrt: (x 1,y), (x 2,y) f ist o.k. X Y f(x) = y
Kapitel 7 Normalformen und DB-Entwurf Kap. 7.1 Normalformen Theorie Funktionale Abhängigkeit: f X Y f als Relation, d.h. Menge von Paaren {(x,y)} x: Definitions-Stelle, y: Funktionswert f ist Funktion
MehrDatenintegrität. Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung
Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung Statische vs. dynamische Integritätsbedingungen Statische Integritätsbedingungen Bedingungen
MehrRelationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL
Relationales Modell: SQLDDL SQL als Definitionssprache SQLDDL umfaßt alle Klauseln von SQL, die mit Definition von Typen Wertebereichen Relationenschemata Integritätsbedingungen zu tun haben Externe Ebene
MehrACCESS SQL ACCESS SQL
ACCESS SQL Datenbankabfragen mit der Query-Language ACCESS SQL Datenbankpraxis mit Access 34 Was ist SQL Structured Query Language Bestehend aus Datendefinitionssprache (DDL) Datenmanipulationssprache
MehrSQL structured query language
Umfangreiche Datenmengen werden üblicherweise in relationalen Datenbank-Systemen (RDBMS) gespeichert Logische Struktur der Datenbank wird mittels Entity/Realtionship-Diagrammen dargestellt structured query
MehrSQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software
SQL Tutorial SQL - Tutorial SS 06 Hubert Baumgartner INSO - Industrial Software Institut für Rechnergestützte Automation Fakultät für Informatik Technische Universität Wien Inhalt des Tutorials 1 2 3 4
MehrLogging und Debugging. Gerd Volberg OPITZ CONSULTING Deutschland GmbH
Logging und Debugging Gerd Volberg OPITZ CONSULTING Deutschland GmbH Bochum, 20. Februar 2014 OPITZ CONSULTING GmbH Seite 1 Agenda 1. Logging Datenmodell Tabellen Views 2. Debugging Debug-Package Funktionen
MehrDatenbanken im WI-Unterricht mit
Datenbanken im WI-Unterricht mit Inhaltsverzeichnis 1 ER-Modell - Entity Relationship Modell 1 1.1 Entitäten................................................. 2 1.2 Relationen................................................
MehrWS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1)
Vorlesung #3 SQL (Teil 1) Fahrplan Wiederholung/Zusammenfassung Relationales Modell Relationale Algebra Relationenkalkül Geschichte der Sprache SQL SQL DDL (CREATE TABLE...) SQL DML (INSERT, UPDATE, DELETE)
MehrErgänzungen zur Vorlesung Informationssysteme WS 2000/01
Ergänzungen zur Vorlesung Informationssysteme WS 200001 Joachim Biskup Fachbereich Informatik Universität Dortmund 1 24 Joachim Biskup 15 November 2001 Lehrstuhl VI - Informationssysteme und Sicherheit
MehrDatenbank und Tabelle mit SQL erstellen
Datenbank und Tabelle mit SQL erstellen 1) Übung stat Mit dem folgenden Befehlen legt man die Datenbank stat an und in dieser die Tabelle data1 : CREATE DATABASE stat; USE stat; CREATE TABLE data1 ( `id`
MehrEinführung in PL/SQL
Einführung in PL/SQL Procedural Language/Structured Query Language Prozedurale Erweiterung der Sprache SQL für Elemente wie Variablen, Schleifen, Bedingungen, Ausnahmebehandlung Dr. Christian Senger Einführung
MehrVorlesung Datenbanken II SS 2006
Vorlesung Datenbanken II SS 2006 1 Vorlesung Datenbanken II SS 2006 Sven Wachsmuth, Technische Fakultät, AG Angewandte Informatik Vorlesung Datenbanken II SS 2006 2 Objektorientierte Modelle: Paradigma
MehrAnwendungsentwicklung Datenbanken SQL. Stefan Goebel
Anwendungsentwicklung Datenbanken SQL Stefan Goebel SQL Structured Query Language strukturierte Abfragesprache von ANSI und ISO standardisiert deklarativ bedeutet was statt wie SQL beschreibt, welche Daten
MehrKapitel 6 Objektrelationale Datenbanken. Folien zum Datenbankpraktikum Wintersemester 2010/11 LMU München
Kapitel 6 Objektrelatinale Datenbanken Flien zum Datenbankpraktikum Wintersemester 2010/11 LMU München 2008 Thmas Bernecker, Tbias Emrich unter Verwendung der Flien des Datenbankpraktikums aus dem Wintersemester
MehrDATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER
DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.
MehrAufbau eines dynamischen ETL Frameworks auf Basis eines PL/SQL Codegenerators
Aufbau eines dynamischen ETL Frameworks auf Basis eines PL/SQL Codegenerators München, 21. Nowember 2007 Nicola Marangoni & Jörg Westermayer Nicola.Marangoni@SHS-VIVEON.com Joerg.Westermayer@SHS-VIVEON.com
MehrKapitel 8: Datenintegrität
Kapitel 8: Datenintegrität Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines Schlüssels 1:N - Beziehung Angabe einer Domäne Jetzt:
MehrPowerful PL/SQL: Collections indizieren mit VARCHAR2-Indizes
Powerful PL/SQL: Collections indizieren mit VARCHAR2-Indizes Autor: Klaus Friemelt, MT AG DOAGNews Q1_2005 Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere die der
MehrBei Kaum noch wartbar -> shortcut badview. Bei Ausführungspläne kippen -> shortcut badviewplan
1 2 Bei Kaum noch wartbar -> shortcut badview Bei Ausführungspläne kippen -> shortcut badviewplan 3 4 Straight forward shortcuts: 0010 einfaches Object 0020 Verwendung 0030 mehr Attribute 0040 Verwendung
MehrObjektrelationale und erweiterbare Datenbanksysteme
Objektrelationale und erweiterbare Datenbanksysteme Erweiterbarkeit SQL:1999 (Objekt-relationale Modellierung) In der Vorlesung werden nur die Folien 1-12 behandelt. Kapitel 14 1 Konzepte objekt-relationaler
MehrGruppe A Bitte tragen Sie SOFORT und LESERLICH Namen und Matrikelnr. ein, und legen Sie Ihren Studentenausweis bereit.
Gruppe A Bitte tragen Sie SOFORT und LESERLICH Namen und Matrikelnr. ein, und legen Sie Ihren Studentenausweis bereit. PRÜFUNG AUS 21.06.2018 DATENMODELLIERUNG 2 (184.790) DATENBANKSYSTEME (184.686) GRUPPE
MehrDaten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL
Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell Jetzt: -> Formulierung in DDL Daten-Definitionssprache (DDL) DDL ist Teil von SQL (Structured
Mehr4. Datenbanksprache SQL
4. Datenbanksprache SQL Standard-Sprache für das Arbeiten mit relationalen Datenbanken: Structured Query Language Datendefinition: Anlegen, Ändern und Löschen von Datenbankstrukturen Datenmanipulation:
MehrGrundlagen der Informatik
Grundlagen der Informatik Vorlesungsprüfung vom 13.06.2008 Gruppe B Lösung Name: Matrikelnummer: Zuerst bitte Name und Matrikelnummer auf das Titelblatt schreiben. Es sind keine Unterlagen und keine Teamarbeit
MehrGeschäftslogik in die Datenbank Umstellung eines Kernbanksystems
Geschäftslogik in die Datenbank Umstellung eines Kernbanksystems Michael Meyer Berenberg Bank Hamburg Schlüsselworte: PL/SQL, Objektorientierung, Oracle Types, XML, Zentralisierung der Geschäftslogik,
MehrEinstieg in die Informatik mit Java
1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung
MehrTyp- und Tabellenhierarchie
Typ- und Tabellenhierarchie Ziel: Modellierung von Hierarchien von Objektmengen Ohne Typhierarchien keine Tabellenhierarchien! - Strukturierter Typ kann andere strukturierte Typen als Subtypen haben -
MehrBibliografische Informationen digitalisiert durch http://d-nb.info/995021198
Auf einen Blick 1 Einleitung 15 2 Datenbankentwurf 23 3 Datenbankdefinition 43 4 Datensätze einfügen (INSERT INTO) 95 5 Daten abfragen (SELECT) 99 6 Daten aus mehreren Tabellen abfragen (JOIN) 143 7 Unterabfragen
MehrObjektorientierte PL/SQL-Programmierung für RDBMS
Willkommen Objektorientierte PL/SQL-Programmierung für RDBMS Andriy Terletskyy Berenberg Bank Neuer Jungfernstieg 20 20354 Hamburg Berenberg stellt sich vor MDV/EDV- Erfahrung Zeitraum Hardware Datenbank
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte
MehrGruppe A Bitte tragen Sie sofort und leserlich Namen, Studienkennzahl und Matrikelnummer ein und legen Sie Ihren Studentenausweis
Gruppe A Bitte tragen Sie sofort und leserlich Namen, Studienkennzahl und Matrikelnummer ein und legen Sie Ihren Studentenausweis bereit. PRÜFUNG AUS DATENBANKSYSTEME VU 184.686 11. 3. 2014 Kennnr. Matrikelnr.
Mehr5.8 Bibliotheken für PostgreSQL
5.8 Bibliotheken für PostgreSQL Haskell/WASH: Modul Dbconnect PHP: pqsql-funktionen Java/JSP: JDBC Perl: DBI database interface modul Vorläufige Version 80 c 2004 Peter Thiemann, Matthias Neubauer 5.9
MehrKapitel 7: Referentielle Integrität
Kapitel 7: Referentielle Integrität Im Allgemeinen sind nur solche Instanzen einer Datenbank erlaubt, deren Relationen die der Datenbank bekannten Integritätsbedingungen (IB) erfüllen. Integritätsbedingungen
MehrAufbau Datenbanksysteme
Aufbau Datenbanksysteme Lehrveranstaltung Datenbanktechnologien Prof. Dr. Ingo Claßen Prof. Dr. Martin Kempa Hochschule für Technik und Wirtschaft Berlin Speichersystem c Ingo Claßen, Martin Kempa Softwarearchitektur
MehrTheorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
Mehr4.14 Integrität und Trigger
4.14 Integrität und Trigger Im Allgemeinen sind nur solche Instanzen einer Datenbank erlaubt, deren Relationen die der Datenbank bekannten Integritätsbedingungen (IB) erfüllen. Integritätsbedingungen können
MehrAbfragen (Queries, Subqueries)
Abfragen (Queries, Subqueries) Grundstruktur einer SQL-Abfrage (reine Projektion) SELECT [DISTINCT] {* Spaltenname [[AS] Aliasname ] Ausdruck} * ; Beispiele 1. Auswahl aller Spalten SELECT * ; 2. Auswahl
MehrPrakt. Datenbankprogrammierung. Sommersemester Was sind Constraints? I,11: Verwendung von Constraints. Festlegung von Constraints
Prakt. Datenbankprogrammierung Sommersemester 2005 I,11: Verwendung von Constraints Was sind Constraints? Constraints stellen Regeln auf Tabellenebene sicher. Constraints verhindern das Löschen aus einer
MehrSQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99
SQL Früherer Name: SEQUEL SQL: Structured Query Language Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99 SQL ist eine deklarative Anfragesprache Teile von SQL Vier große Teile:
MehrInhaltsverzeichnis Vorwort zur vierten Auflage Vorwort zur dritten Auflage Vorwort zur zweiten Auflage Vorwort zur ersten Auflage Hinweise zur CD
Vorwort zur vierten Auflage 11 Vorwort zur dritten Auflage 13 Vorwort zur zweiten Auflage 15 Vorwort zur ersten Auflage 17 Hinweise zur CD 19 1 Datenbanken und Datenbanksysteme 21 1.1 Zentralisierung der
MehrDatenintegrität. Referentielle Integrität. Referentielle Integrität in SQL. Bisherige Integritätsbedingungen
Datenintegrität eferentielle Integrität Integitätsbedingungen chlüssel Fremdschlüssel verweisen auf Tupel einer elation z.b. gelesenvon in Vorlesungen verweist auf Tupel in Professoren Beziehungskardinalitäten
MehrDatenbanken Entity-Relationship-Modell und Datenbankentwurf 1. Andreas Heß Hochschule Furtwangen
Datenbanken Entity-Relationship-Modell und Datenbankentwurf 1 Andreas Heß Hochschule Furtwangen Inhalte heute Einführung ins Entity-Relationship-Modell Einführung ins relationale Modell Umsetzung vom E/R-
MehrÜbung PL/SQL Trigger Lösungen
Übung PL/SQL Trigger Lösungen 1) Gebe das aktuelle Datum aus. Wofür steht dual? Ändere das Datum für Deine aktuelle Session auf das Format Jahr (4 Stellen) Monat (2 Stellen) Tag (2 Stellen)[Leerzeichen]Stunde
MehrUML/OCL für die Integritätssicherung in Datenbankanwendungen
UML/OCL für die Integritätssicherung in Datenbankanwendungen Zwischenbericht Diplom Inhalt des Vortrages Motivation der Arbeit Konzept für die Integritätssicherung Musterkatalog Å Probleme/Lösungen Tool-Gesamtkonzept
Mehr10. Programmieren in SQL
10. Programmieren in SQL Inhalt 10.1 Motivation 10.2 Prozedurale Erweiterungen von SQL 10.3 Gespeicherte Prozeduren 10.4 Benutzerdefinierte Funktionen 10.5 Verwendung anderer Programmiersprachen 2 10.1
MehrKapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
Mehr