Interoperable Informationssysteme - 1Klemens Böhm
Datenmodell 1: OEM
Interoperable Informationssysteme - 2Klemens Böhm
Semistrukturierte Daten (1)
Was sind semistrukturierte Daten? Daten, die nicht zu einem apriori definierten
Schema konform sein müssen(bzw. können Schemata so wenig restriktiv sein, dass sie unwichtig werden - Beispiel: HTML-DTD),
‘selbstbeschreibende’ Daten,
Einleitung/Motivation
OEM
Definitionen
Interoperable Informationssysteme - 3Klemens Böhm
Semistrukturierte Daten (2) Daten mit üblicherweise irregulärer Struktur:
Daten können fehlen, ähnliche Konzepte
werden durch unterschiedliche Typen repräsentiert,
– NAME flach oder FIRSTNAME, LASTNAME,– Vorgesetzter: Referenz oder Name– Zweitname: CHAR vs. String
Mengen können heterogen sein, Struktur ist nicht vollständig bekannt.
Beispiel: ‘Jörg’ – Teil des Vornamens oder Zweitname?
Einleitung/Motivation
OEM
Definitionen
Interoperable Informationssysteme - 4Klemens Böhm
Semistrukturierte Daten - Motivation Daten lassen sich
i.a. nicht problemlos in Tabellen abbilden,Strukturierung ist aber trotzdem wünschenswert.Beispiel: Wörterbuch-Einträge Optionale Bestandteile, Wiederholungen von Strukturelementen, Reihenfolge der Elemente vielleicht relevant.
Man möchte die Struktur von Daten nur teilweise explizit machen.Beispiel: Bestellungen haben strukturierten Anteil, aber auch frei definierbare Zusätze.
Einleitung/Motivation
OEM
Definitionen
Interoperable Informationssysteme - 5Klemens Böhm
Semistrukturierte Daten - Motivation (2)
Warum sind Daten nicht stets explizit strukturiert? nicht erforderlich, nicht eindeutig, nicht bekannt, Erstellung der Strukturierung
zu aufwendig. Man will Modell, mit dem explizite
Strukturierung möglich, aber nicht obligatorisch ist.
Einleitung/Motivation
OEM
Definitionen
Interoperable Informationssysteme - 6Klemens Böhm
Semistrukturierte Daten - Fallunterscheidung
Semistrukturierte Daten - unterschiedliche Verwendungen des Begriffs:
Schema existiert, ‘Semistrukturiertheit’ heisst nur ‘Irregularität’ oder ‘teilweise strukturiert, teilweise nicht’,Beispiel: SGML-/XML-DTDs
kein Schema, aber Struktur der Daten eindeutig erkennbar, z.B.valide Dokumente a la XML,
Struktur nicht einwandfrei identifizierbar,kann z.B. in HTML-Dokumenten vorkommen (pathologischer Fall).
Einleitung/Motivation
OEM
Definitionen
Interoperable Informationssysteme - 7Klemens Böhm
Object Exchange Model (OEM) Forschungsergebnis der Stanford University,
m.W. keine entsprechenden Produkte, ‘Objekt’ als elementares Bestandteil. Jedes Objekt hat OID und Wert:
Atomarer Wert, z.B. int, string, komplexer Wert:
Menge von Subobjekten, Verknüpfung mit Parent durch Label.
‘OEM-Objekt’ heisst: Objekt + Subobjekte.
Einleitung/Motivation
OEM
Definitionen
Interoperable Informationssysteme - 8Klemens Böhm
OEM - Beispiel
2
1
3 4
5 6 78 9 10 11
BarRestaurant
Name
Entree Telefon
InhaberManager Name Entree Entree
Chili Burger 555-1234Klein Darbar Lamm Rind
Restaurant
Plus
Mehrere Parents und Zykel sind erlaubt.
“AggregationHierarchies”
Einleitung/Motivation
OEM
Definitionen
Interoperable Informationssysteme - 9Klemens Böhm
Pfade im OEM-Kontext Label Path eines OEM Objekts o -
Folge von Labels, separiert durch Punkte, l1.l2…ln,so dass man von o aus den Pfad (e1, …, en) traversieren kann, und Kante ei hat Label li.
Data Path eines OEM Objekts o -Alternierende Folge von Labels und OIDs, separiert durch Punkte, l1.o1.l2.o2…ln.on, so dass man von o aus den Pfad (e1, …, en) durch Objekte (x1, …, xn) traversieren kann, Kante ei hat Label li, und Objekt xi hat OID oi.
Ein Data Path d ist Instanz eines Label Paths l, wenn die Folgen der Labels übereinstimmen. Alle Instanzen von Restaurant.Entrée?
Einleitung/Motivation
OEM
Definitionen
Interoperable Informationssysteme - 10Klemens Böhm
Target Set Das Target Set in einem OEM Objekt s
von einem label path l von s ist die Menge t ={o|l1.o1.l2.o2…ln.o ist Instanz von l} Target Set von Resaurant.Entrée?Label Paths des Target Sets {8}?
Label Paths eines Target Sets sowie Label Paths einer Menge von Label Paths –Beispiele: L({8}) = {Restaurant.Inhaber,
Restaurant.Manager}, L({Restaurant.Inhaber})
= {Restaurant.Inhaber, Restaurant.Manager},
Einleitung/Motivation
OEM
Definitionen
Interoperable Informationssysteme - 11Klemens Böhm
Schema Sehr vage Definition im folgenden;
der Vollständigkeit halber… Ein Schema ist eine endliche Menge von Namen. Eine Instanz eines Schemas besteht aus
einem endlichen gelabelten Graphen (VaVc,E)– Va enthält die atomic objects,– Vc enthält die complex objects,– Labels der Kanten sind Strings,
Abbildung der Namen zu Knoten, Abb. von atomic objects zu atomaren Werten.
Ausserdem gilt: keine ausgehenden Kanten von atomic objects, jd. Knoten ist von einem mit Namen erreichbar.
Was wäre ein Schema für das Restaurant-Beispiel?
Einleitung/Motivation
OEM
Definitionen
Interoperable Informationssysteme - 12Klemens Böhm
Queries 1: Deklarativer Zugriff
auf semistrukturierte Daten
Interoperable Informationssysteme - 13Klemens Böhm
OEM - Datenbank
19
12
35
17 13 14 66 18 23 25
restaurantrestaurant
category
name address category name addressaddress
gourmet Chef Chu MountainView
restaurant
44 15 16
streetcity zipcode
El Camino RealPalo Alto ‘92310’
77
55 79 80
name
Vietna-mese
Saigon MenloPark
cheap fast food
McDonald’s
pricecategoryprice
54
92310
zipcodenearby
nearby
nearby
Guide
Anforde-rungen
Query-sprache
Semantik
Interoperable Informationssysteme - 14Klemens Böhm
Unregelmässigkeiten in der Beispiel-Datenbank
und Zsh. zum deklarativen Zugriff Restaurants haben beliebig viele Adressen, Adressen sind manchmal Strings,
haben manchmal aber auch explizite Struktur, zipcode kann String oder Integer sein, zipcode ist manchmal
direkter Bestandteil von restaurant, manchmal Bestandteil von address.
Man kann bzw. möchte Struktur der Daten nicht immer genau spezifizieren,
manchmal haben die Daten aber Struktur, und sie ist dem Benutzer bekannt.
Anforde-rungen
Query-sprache
Semantik
Interoperable Informationssysteme - 15Klemens Böhm
Anforderungen
Anforderungen gemäss [ABS00]: Ausdrucksmächtigkeit, Semantik, Zusammensetzbarkeit, Schema, Einfache Erzeugung von Anfragen
aus Programmen.
Anforde-rungen
Query-sprache
Semantik
Interoperable Informationssysteme - 16Klemens Böhm
Ausdrucksmächtigkeit Mindestens das,
was Sprache für das relationale Modell kann. Sprache sollte ausdrucksmächtig sein,
aber nicht zu ausdrucksmächtig. Denn:
Optimierungen sind teilweise nicht möglich, keine Garantien für Ausführungszeiten.
Anforde-rungen
Query-sprache
Semantik
Interoperable Informationssysteme - 17Klemens Böhm
Semantik
Genaue Definition der Semantik ist erforderlich.
Einfache Erzeugung von Anfragen aus Programmen
“karg, aber einfach”
Anforde-rungen
Query-sprache
Semantik
Interoperable Informationssysteme - 18Klemens Böhm
Schema
“Structure-Consciousness” Keine Eigenschaft der Querysprache,
sondern der Implementierung.Anforde-rungen
Query-sprache
Semantik
Interoperable Informationssysteme - 19Klemens Böhm
Zusammensetzbarkeit
Query sollte auf anderes Queryergebnis anwendbar sein.
Konsequenz auf der semantischen Ebene: Queryergebnis sollte wieder Instanz des Ausgangsdatenmodells sein,
Beispiel: Querysprache LOREL erzeugt Relationen aus OEM-Instanz, d.h. LOREL genügt der Anforderung nicht.
Konsequenz auf der syntaktischen Ebene: “Referentielle Transparenz”Name, Variable für semistrukturierte Daten Ausdruck
Anforde-rungen
Query-sprache
Semantik
Interoperable Informationssysteme - 20Klemens Böhm
Beispiel Textuelle Beschreibung: “Finde die Adressen
aller Restaurants mit PLZ 92310.”(D.h. man sucht address-Objekt, das zipcode-Objekt enthält.Zipcode direkt unter Restaurant wäre – in diesem Beispiel – nicht OK.)
Query:select a: X.addressfrom Guide.restaurant Xwhere X.address.zipcode = 93210
Anmerkung: Vorgestellt wird eine spezielle Querysprache, andere Semantik wäre denkbar (Beispiel s.o.).
Anforde-rungen
Query-sprache
- Einstieg
- Pfadausdr.
- Coercion
- komplexe Ergebnisse
- Label-/ Path-Var.
Semantik
Interoperable Informationssysteme - 21Klemens Böhm
Erläuterungen zum Beispiel Identische Präfixe von Pfadausdrücken
sollen den gleichen Datenpfaden entsprechen, Query abstrahiert davon,
ob zipcode String oder Integer(wird im folgenden beschrieben),
address ohne zipcode verursacht keine Fehlermeldung, im Gegensatz zu anderen Querysprachen,
address, zipcode können mehrmals vorkommen.
Anforde-rungen
Query-sprache
- Einstieg
- Pfadausdr.
- Coercion
- komplexe Ergebnisse
- Label-/ Path-Var.
Semantik
Interoperable Informationssysteme - 22Klemens Böhm
Pfadausdrücke Graph-Struktur der Daten erfordert Pfadausdrücke, ‘Unstrukturiertheit’ der Daten erfordert Flexibilität
bei der Formulierung von Pfadausdrücken (vgl. mit Folie “Beispiel OEM …”),wird im folgenden illustriert.
Pfadausdrücke können Bestandteil aller Query-Bestandteile sein, d.h. select-, from-und where-Klausel.
Anforde-rungen
Query-sprache
- Einstieg
- Pfadausdr.
- Coercion
- komplexe Ergebnisse
- Label-/ Path-Var.
Semantik
Interoperable Informationssysteme - 23Klemens Böhm
Pfadausdrücke in der from-Klausel Pfadausdruck in der from-Klausel:
from Guide.restaurant.address.zipcode Z,Guide.restaurant.name N
Äquivalente from-Klausel:from Guide.restaurant R,
R.address A,A.zipcode Z,R.name N
D.h. zipcode Z und name N müssen zum gleichen Restaurant gehören.
Anforde-rungen
Query-sprache
- Einstieg
- Pfadausdr.
- Coercion
- komplexe Ergebnisse
- Label-/ Path-Var.
Semantik
Interoperable Informationssysteme - 24Klemens Böhm
Pfadausdrücke in der select-Klausel Query mit Pfadausdruck in der select-Klausel:
select z: R.address.zipcodefrom Guide.restaurant R
Sind die folgenden Queries äquivalent? select Guide.restaurant.address.zipcode
from Guide.restaurant.address select Guide.restaurant.address.zipcode
from Guide
Anforde-rungen
Query-sprache
- Einstieg
- Pfadausdr.
- Coercion
- komplexe Ergebnisse
- Label-/ Path-Var.
Semantik
Interoperable Informationssysteme - 25Klemens Böhm
Pfadausdrücke in der where-Klausel Beispielquery:
select n: R.namefrom Guide.restaurant Rwhere R.address.zipcode = 93210
or(R.address.street = “Palm”andR.address.city = “Palo Alto”)
Äquivalente Query:select n: R.namefrom Guide.restaurant Rwhere exists A in R.address:
((exists Z in A.zipcode:Z = 93210) or
((exists S in A.street:S = “Palm”) and
(exists C in A.city:C = “Palo Alto”)))
Existenzquantor für address enthält alle drei Bedingungen,im Gegensatz zu den anderen Quantoren.
Es handelt sichum die gleicheAdresse.
Anforde-rungen
Query-sprache
- Einstieg
- Pfadausdr.
- Coercion
- komplexe Ergebnisse
- Label-/ Path-Var.
Semantik
Interoperable Informationssysteme - 26Klemens Böhm
Beispiel 2 Beispiel greift Szenario von eben wieder auf. Textuelle Beschreibung: “Finde Namen
und Zipcodes aller billigen Restaurants.”(String ‘cheap’ als Wert eines Objekts enthält diese Information.)
Probleme - Anfrager kennt/weiss nicht: die genaue Position der zipcode-Objekte, welches Objekt den String “cheap” enthält.
Query:select Guide.restaurant.name,
Guide.restaurant(.address)?.zipcodewhere Guide.restaurant.% grep “cheap”
Erläuterungen: ‘?’ identifiziert optionalen Pfad-Bestandteil, ‘%’ ist Wildcard, ‘grep’ hat übliche Semantik.
Anforde-rungen
Query-sprache
- Einstieg
- Pfadausdr.
- Coercion
- komplexe Ergebnisse
- Label-/ Path-Var.
Semantik
Interoperable Informationssysteme - 27Klemens Böhm
Allgemeine Pfad-Ausdrücke - gpe-Komponenten
Charakterisierung: Bestandteile allgemeiner Pfad-Ausdrücke, Verallgemeinerung von Labels
in einfachen Pfad-Ausdrücken; Definition (rekursiv) -
wenn l ein Label ist, ist .l eine gpe-Komponente wenn s1, s2 gpe-Komponenten sind,
dann sind es die folgenden Ausdrücke auch: s1s2, s1|s2, (s1), (s1)?, (s1)+, (s1)*
wenn X ein String-Objekt ist, dann ist .unquote(X) eine gpe-Komponente.Wofür kann das gut sein?
Was sind Unterschiede zwischen OEM + Queryspracheund objektorientierten Modellen?
Anforde-rungen
Query-sprache
- Einstieg
- Pfadausdr.
- Coercion
- komplexe Ergebnisse
- Label-/ Path-Var.
Semantik
Interoperable Informationssysteme - 28Klemens Böhm
Vergleich von Objekten unterschiedlichen Typs Ziel: Man möchte Bedingungen akzeptieren
wie Z=1.0 oder Z> “0.9”, egal ob Z mit 1 oder “1” belegt ist.
Typumwandlung:
Beispiel: “4.3” < 5 - beide Werte konvertieren. Achtung: Gleichheit ist nicht mehr transitiv:
“05” = 5, “5” = 5, aber “05” “5”
arg2arg1
string real int
string - string real both realreal - int realint -
Anforde-rungen
Query-sprache
- Einstieg
- Pfadausdr.
- Coercion
- komplexe Ergebnisse
- Label-/ Path-Var.
Semantik
Interoperable Informationssysteme - 29Klemens Böhm
Vergleich komplexer Objekte unterschiedlichen Typs
Typumwandlung:
Beispiel: select X.addressfrom Guide.restaurant Xwhere X.name = “Chef Chu”
where-Klausel interpret. als ‘where exists Z in X: Z.name=“Chef Chu”’
arg2arg1
value atomicobject
set ofobjects
complexobject
value coerce de-reference
existentialwith =
false
atomicobject
object = existentialwith =
false
set ofobjects
setequality
false
complexobject
object =
Anforde-rungen
Query-sprache
- Einstieg
- Pfadausdr.
- Coercion
- komplexe Ergebnisse
- Label-/ Path-Var.
Semantik
Interoperable Informationssysteme - 30Klemens Böhm
Erzeugung eines Queryergebnisses mit beliebiger Struktur
Queries müssen Instanzen des zugrundeliegenden Datenmodells generieren (d.h. z.B. OEM-Instanzen).Anforde-
rungen
Query-sprache
- Einstieg
- Pfadausdr.
- Coercion
- komplexe Ergebnisse
- Label-/ Path-Var.
Semantik
Interoperable Informationssysteme - 31Klemens Böhm
Erzeugung eines Queryergebnisses mit ‘komplexer’ Struktur - Beispiele
Anforde-rungen
Query-sprache
- Einstieg
- Pfadausdr.
- Coercion
- komplexe Ergebnisse
- Label-/ Path-Var.
Semantik
select author: Xfrombiblio.book.author XErzeugt Baum der Tiefe 1; alle Kanten haben Label author.
select row:( select author: Yfrom X.author Y)
frombiblio.book XStrukturiertes Anfrageergebnis – ein Teilbaum für die Autoren jedes Buchs.
select ( select Yfrom X.author Y)
frombiblio.book X
Interoperable Informationssysteme - 32Klemens Böhm
Queryergebnis mit komplexer, unregelmässiger Struktur
Subqueries mit leerem Ergebnis führen nicht zu Fehler; vielmehr lässt sich unregelmässig strukturiertes Queryergebnis erzeugen.
Beispiel:select r:{ number: N,
(select title: T where {number: N,
title: T} in db1.report),(select postscript: P where {num: N, postscript: P}
in db2.myrep)}where N in db1.report.number union
db2.myrep.num
Anforde-rungen
Query-sprache
- Einstieg
- Pfadausdr.
- Coercion
- komplexe Ergebnisse
- Label-/ Path-Var.
Semantik
Interoperable Informationssysteme - 33Klemens Böhm
Label-Variablen Label-Variablen ermöglichen Übergang
zwischen ‘Schema-Information’ und Daten. Beispiele:
select publication: {type: L, title: T}from biblio.L X, X.title Twhere X.Year > 1989
select npers: ( select L: Yfrom X.L Ywhere not (L =
salary))from db.person X
‘Gruppierung’ mit Hilfe von Label-Variablen (‘umgekehrte’ Richtung wie oben) – Beispiel:select Y: ( select X
from biblio.paper Xwhere X.year = Y)
from biblio.paper.year Y
Anforde-rungen
Query-sprache
- Einstieg
- Pfadausdr.
- Coercion
- komplexe Ergebnisse
- Label-/ Path-Var.
Semantik
Interoperable Informationssysteme - 34Klemens Böhm
Path-Variablen Statt einzelner Labels können auch ganze Paths
zu ‘Daten’ werden. Beispiel:select @Pfromdb1 @P.Xwhere matches(".*ubiquit.*", X)
Problem: Was geschieht bei Zykeln im Data Graph?
Anforde-rungen
Query-sprache
- Einstieg
- Pfadausdr.
- Coercion
- komplexe Ergebnisse
- Label-/ Path-Var.
Semantik
Interoperable Informationssysteme - 35Klemens Böhm
Semantik der Querysprache
Semantik der Querysprache muss formal definiert sein.
Vorgehen: Beschreibung des Data Graphs
mit einfacher relationaler Struktur. Abbildung (eines Teils) der Querysprache
auf Logik-Ausdrücke über dieses relationale Modell.
Alternativ: Abbildung der Querysprache auf Datalog-Ausdrücke über dieses Modell.
Anforde-rungen
Query-sprache
Semantik
- Vorgehen
- Objekterz.
Interoperable Informationssysteme - 36Klemens Böhm
1. Schritt: Generische relationale Beschreibung des Data Graphs
Schema:ref(source: oid, label: dom,
destination: oid)val(obj: oid, value: dom)
Constraints: Oid ist entweder ‘atomar’ oder ‘komplex’. Jedes Objekt ist von einer Wurzel erreichbar. oid Attribut ist Schlüssel in der Relation val.
Anforde-rungen
Query-sprache
Semantik
- Vorgehen
- Objekterz.
Interoperable Informationssysteme - 37Klemens Böhm
2. Schritt: Abbildung Querysprache logischer Ausdruck
Beispiel: Anfrage in der Querysprache:select author: Xfrom biblio.book Y, Y.author Xwhere "Database" in Y.title
Entsprechender logischer Ausdruck:{X|Y, Z, V, W(ref(db, "biblio", W)
ref(W, "book", Y) ref(Y, "author", X) ref(Y, "title", V) val(V, "database"))}
Auf diese Art lässt sich kein neuer Data Graph konstruieren, der Queryergebnis repräsentiert.
Anforde-rungen
Query-sprache
Semantik
- Vorgehen
- Objekterz.
Interoperable Informationssysteme - 38Klemens Böhm
3. Schritt: Abbildung Querysprache Datalog
bibliodb book
&o1author
&o3 Smith&o9
book
&o2
paper
&o4
title&o8
date &o7
author&o6
author&o5
date&o10
title&o11
author &o12
1999
Data Production
Cassio
Database Systems
1976
Combalusier
Roux
title
ans
Anforde-rungen
Query-sprache
Semantik
- Vorgehen
- Objekterz.
Interoperable Informationssysteme - 39Klemens Böhm
3. Schritt: Abbildung Querysprache Datalog
Neue Tupel, aus denen die Antwort besteht, werden in die generische Kanten-Relation eingefügt.
Beispiel: Anfrage in der Querysprache (wiederholt):select author: Xfrom biblio.book Y, Y.author Xwhere "Database" in Y.title
Entsprechender Datalog-Ausdruck:ref(ans, "author", X)
(ref(db, "biblio", W), ref(W, "book", Y), ref(Y, "author", X), ref(Y, "title", V), val(V, "database")
Anforde-rungen
Query-sprache
Semantik
- Vorgehen
- Objekterz.
Interoperable Informationssysteme - 40Klemens Böhm
3. Schritt: Abbildung Querysprache Datalog (Forts.)
Abbildung von Pfadausdrücken erfordert i.d.R. Rekursion.
Beispiel: Anfrage in der Querysprache:select part: Xfrom product X, X.(subpart)* Y
Entsprechender Datalog-Ausdruck:ref(ans, “part", Y)
q(Y) q(Y) ref(db, “product", Y) q(Y) q(Z),
ref(Z, “subpart", Y)
Anforde-rungen
Query-sprache
Semantik
- Vorgehen
- Objekterz.
Interoperable Informationssysteme - 41Klemens Böhm
Erzeugung von Objekten
Erzeugung von Anfrageergebnissen erfordert i.a. die Erzeugung von Objekten.
Erzeugung der neuen Objekte erfordert auch Erzeugung von OIDs – Verwendung von Skolem-Funktion.
Skolem-Funktion benötigt als Parameter eine
Zeichenkette, erzeugt daraus eine einmalige,
reproduzierbare ID.
Anforde-rungen
Query-sprache
Semantik
- Vorgehen
- Objekterz.
Interoperable Informationssysteme - 42Klemens Böhm
Erzeugung von Objekten Beispiel für Verwendung von Skolem-Funktion:
Anfrage in der Querysprache:select row: {title: T, year: Y}from biblio.book X, X.title T, X.year Y
Entsprechender Datalog-Ausdruck:ref(ans, “row", f(X))
ref(db, “biblio", B), ref(B, “book", X) ref(f(X), “title", T)
ref(X, “title", T) ref(f(X), “year", Y)
ref(X, “year", Y) Nur erster Aufruf der Skolem-Funktion
mit bestimmten Parameternführt zur Erzeugung eines neuen Objekts.
Anforde-rungen
Query-sprache
Semantik
- Vorgehen
- Objekterz.
Interoperable Informationssysteme - 43Klemens Böhm
Erzeugung von Objekten Weiteres Beispiel – Anfragen über mehrere Datenbanken.
Anfragen in der Querysprache (ohne Object Fusion):select row: {num: N, title: Y}where {number: N, title: Y} in db1.report
select row: {num: N, postscript: P}where {num: N, postscript: P} in db2.myrep
Entsprechendes Datalog-Programm:ref(ans, “row", f(N))
ref(db1, “report", X), ref(X, “number", Y),val(Y, N)
ref(f(X), “title", T) val(Y, N),
ref(X, “number", Y) ref(X, “title", T)
… I.d.R. ein Objekt, das Einträge aus unterschiedlichen
Datenbanken zusammenfasst (Object Fusion).
Anforde-rungen
Query-sprache
Semantik
- Vorgehen
- Objekterz.
Interoperable Informationssysteme - 44Klemens Böhm
Erzeugung von ObjektenGleiche Anfrage in unserer Querysprache –
ist möglich, aber kompliziert: select report: {number: N,
( select title: T where {number: N, title T}
in db1.report),( select postscript: P where {num: N, postscript P}
in db2.myrp)}where N in db1.report.number union db2.myrp.num
Anforde-rungen
Query-sprache
Semantik
- Vorgehen
- Objekterz.