Kapitel 14: Objekt-relationale und erweiterbare Datenbanken Flashcards

1
Q

Was sind die Konzepte einer objekt-relationalen Datenbank?

A
  • Große Objekte (LOBs)
    • Datentypen die es erlauben sehr große Attributwerte wie Multimedia-Daten zu speichern.
  • Mengenwertige Attribute
    • Einem Tupel (Objekt) wird in einem Attribut eine Menge von Werten zugeordnet (quasi Feld in DB)
    • z.b. Studenten mehrwertiges Attribut Sprachkenntnisse zuzuordnen
  • Geschachtelte Relationen
    • Geht einen Schritt weiter als Mengenwertige Attribute und erlaubt es Attributen selbst Relationen zu sein
    • Student hat Attribut absolviertePrüfungen, unter dem die Mengen von Prüfungentupeln gespeichert sind
  • Typdeklarationen
    • Erlaubt user defined types (UDTs)
    • z.b. NotenTyp
    • oft unterscheidet man zwischen Wertbasierten Typen (Attribut) und Objekt-Typen (row-typ)
  • Referenzen
    • Attribute können direkte Referenzen auf Tupel / Objekte als Wert haben
    • Somit lassen sich n:m Relationen ohne Beziehungsrelation darstellen
      • Beispiel: Student.hört ist eine Menge von Referenzen auf Vorlesungen.
  • Objektidentität
    • Referenzen setzten voraus, dass man Objekte (Tupel) anhand einer unveränderlichen Objektidentität eindeutig identifizieren kann
  • Pfadausdrücke
    • Pfadausdrücke müssen aufgrund der Referenzen realisierbar sein (s.hoert.gelesenVon.Name)
  • Vererbung
    • Typen können von Obertyp erben
    • Tupel von Unerrelationen erben von Oberrelationen
    • Unterrelationen sind implizit auch in Oberrelation enthalten
    • Hiermit wird Generalisierung / Spezialisierung realisiert
  • Operationen
    • Den Objekttypen zugeordnet
    • Einfache Operationen können direkt in SQL implementiert werden
    • Komplexere werden in “Wirtssprachen” wie Java realisiert
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Welche Arten von LOBs gibt es und wie werden diese realisiert?

A
  • CLOB
    • Character large objet (großer String). In DB wird ein Locator gespeichert, der auf den CLOB verweist.
  • BLOB
    • Binary Large Object: Große Binärdaten (z.b. Film) kann nur durchgereicht werden
  • NCLOB
    • Für die Speichervon von Sonderzeichen, da CLOBs auf 1-Byte Character beschränkt sind
create table Professoren
( PersNr integer primary key,
Name varchar(30) not null,
Rang character(2) check (Rang in ('C2', 'C3', 'C4')), Raum integer unique,
Passfoto BLOB(2M),
Lebenslauf CLOB(75K) );

LOB (Lebenslauf) store as
( tablespace Lebensläufe

storage (initial 50M next 50M) );

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was sind Benutzer-definierte Typen: Distinct types und worauf muss man achten?

A

CREATE DISTINCT TYPE NotenTyp AS DECIMAL (3,2) WITH COMPARISONS;

CREATE FUNCTION NotenDurchschnitt(NotenTyp) RETURNS NotenTyp Source avg(Decimal());

  • Vergleichen Geht nicht: Scheitert an dem unzulässigen Vergleich zweier unterschiedlicher Datentypen NotenTyp vs. decimal
  • Um unterschiedliche Datentypen miteinander zu vergleichen, muss man sie zunächst zu einem gleichen Datentyp transformieren (casting).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Was ist eine “echte” geschachtelte Relation und wie sieht diese aus?

A

Wird verwendet für:

  • Modellierung von Aggregationen
  • Also bei Assoziationen der Art
    • Exklusive Zuordnung (1:N)
    • Existenzabhängige Zuordnung
  • Schachtelung der schwachen Entities im übergeordneten Objekt

Beispiel:

CREATE OR REPLACE TYPE PruefungenTyp AS OBJECT ( Inhalt REF VorlesungenTyp,
Pruefer REF ProfessorenTyp,
Note DECIMAL(3,2),

Datum Date,

MEMBER FUNCTION verschieben(neuerTermin Date) RETURN DATE )

CREATE OR REPLACE TYPE PruefungsListenTyp AS TABLE OF PruefungenTyp

CREATE OR REPLACE TYPE StudentenTyp AS OBJECT ( MatrNr NUMBER,
Name VARCHAR(20),
Semester NUMBER,

hoert VorlRefListenTyp,
absolviertePruefungen PruefungsListenTyp,
MEMBER FUNCTION Notenschnitt RETURN NUMBER,
MEMBER FUNCTION SummeWochenstunden RETURN NUMBER

)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Wie könnte Beispielsweise eine Studenten Tabelle aufgebaut sein? (Geschachtelte Relation)

A

Studenten-TAbelle:

CREATE TABLE StudentenTab OF StudentenTyp (MatrNr PRIMARY KEY)

NESTED TABLE hoert STORE AS BelegungsTab
NESTED TABLE absolviertePruefungen STORE AS ExamensTab;

INSERT INTO StudentenTab VALUES(24002, ‘Xenokrates’, 18, VorlRefListenTyp(), PruefungsListenTyp());

INSERT INTO StudentenTab VALUES (29120, ‘Theophrastos’, 2, VorlRefListenTyp( ), PruefungsListenTyp());

INSERT INTO TABLE (SELECT s.hoert

from StudentenTab s

where s.Name = ‘Theophrastos’) /* grosser Fan von Sokrates */ select REF(v)

from VorlesungenTab v
where v.gelesenVon.Name = ‘Sokrates’;

Prüfungen einfügen:

INSERT INTO TABLE
(SELECT s.absolviertePruefungen

FROM StudentenTab s
WHERE s.Name = ‘Theophrastos’) //wo wird eingefügt
VALUES ((select REF(v) from VorlesungenTab v where v.Titel=’Maeeutik’),

(select REF(p) from ProfessorenTab p where p.Name=’Sokrates’), 1.3, SYSDATE); //was wird eingefügt

INSERT INTO TABLE
(SELECT s.absolviertePruefungen

FROM StudentenTab s
WHERE s.Name = ‘Theophrastos’)
VALUES ((select REF(v) from VorlesungenTab v where v.Titel=’Ethik’),

(select REF(p) from ProfessorenTab p where p.Name=’Sokrates’), 1.7, SYSDATE);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Wie sehen Anfragen auf geschachtelte Relationen aus?

A

SELECT s.Name, p.Note
FROM StudentenTab s, TABLE(s.absolviertePruefungen) p;

//NAME NOTE

//Theophrastos 1.3

//Theophrastos 1.7

SELECT s.Name, p.Pruefer.Name, p.Inhalt.Titel, p.Note FROM StudentenTab s, TABLE(s.absolviertePruefungen) p;

//NAME PRUEFER.NAME INHALT.TITEL NOTE

//Theophrastos Sokrates Maeeutik 1.3

//Theophrastos Sokrates Ethik 1.7

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wie funktioniert Vererbung von Objekttypen?

A

CREATE TYPE Angestellte_t AS (PersNr INT,

Name VARCHAR(20))
INSTANTIABLE
REF USING VARCHAR(13) FOR BIT DATA MODE DB2SQL;

CREATE TYPE Professoren_t UNDER Angestellte_t AS (Rang CHAR(2),

Raum INT) MODE DB2SQL;

CREATE TYPE Assistenten_t UNDER Angestellte_t AS (Fachgebiet VARCHAR(20),

Boss REF(Professoren_t)) MODE DB2SQL;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly