VL 2.2 Deklarativer Zugriff auf semistrukturierte Daten Flashcards
Wo bin ich im relationalen Datenmodell beschränkt und was kann ich zum Beispiel im semistrukturierten Modell machen?
Bsp Folie 2
Restaurants haben beliebig viele Adressen,
Adressen sind manchmal Blätter des Baums, haben manchmal aber auch explizite Struktur,
zipcode ist manchmal direkter Bestandteil von restaurant, manchmal Bestandteil von address.
ALSO: das geht alles nicht (oder nicht gut)
–> im rDM muss ich mich beim Schemaentwurf entscheiden
#mehrere Adressen einem Restaurant zugeordnet #Adressen unterschiedlich strukturiert #Manchmal Struktur explizit #Unterschiedliche Darstellung von unterschiedlichen Adressen
Fazit: Wir sind flexiebler im sDM aber Informationsbedürfnisse sind schwieriger zu befriedigen! Stichwort Anfragen!!
Man muss aufpassen wie man seine Anfrage formuliert
Welche Anforderungen hat man an Anfragesprachen?
#Ausdrucksmächtigkeit, #Semantik, #Zusammensetzbarkeit (Referentielle Transparenz), #Schema, #Einfache Erzeugbarkeit von Anfragen aus Programmen.
Erkläre Anforderung an Anfragesprachen Ausdrucksmächtigkeit!
Mindestens das, was Sprache für das relationale Modell kann. –> rDM (Selektion, Projektion, Join, Union etc. insgesamt 6 o. 7)
!=Sprache sollte ausdrucksmächtig sein, aber nicht zu ausdrucksmächtig. –> Grund: Sonst kann nicht sichergestellt werden, dass eine effiziente Ausführung möglich ist
Denn haben wir viele Operatoren, dann haben wir auch viele Optimierungsmöglichkeiten
Folge: Optimierungen sind teilweise nicht möglich. Illustration auf folgender Folie. Keine Garantien für Ausführungszeiten.
Problem bei vielen Operatoren 14 oder 30:
Schwierig alle Optimierunge, die sinnvoll sind zu erkennen und zu implementieren!
–> Daher wollen wir nicht zu viel Ausdrucksmächtigkeit
Trade off : Ausdrucksm. Möglichkeit der Implementierung und Effizienz
Bsp. Folie 8 Upgrade!
Erkläre Anforderung an Anfragesprachen Semantik!
Genaue Definition der Semantik ist erforderlich
–> Festlegen was genau Ausdrücke in der Anfragesprache bedeuten
Erkläre Anforderung an Anfragesprachen “Einfache Erzeugbarkeit von Anfragen aus Programmen”!
Beispiel –> in Programmiersprache string erzeugen mit “SELECT * …” und den String in Datenbank geben.
** Anmerkung: Ist keine Eigenschaft der Anfragesprache, sonder der Umgebung, also hier Programmiersprache
Erkläre Anforderung an Anfragesprachen Schema!
Das zur Verfügung stehende Schema möglichst gut ausgenutzt werden soll um die Anfrage schnell auszuführen.
** Anmerkung: Keine Eigenschaft der Anfragesprache, sondern der Implementierung
–> Bsp: Folie 12 Unbenannt1
Anfrage:
select X.title
from biblio.* X
where X.*.zip=”12345”
Angenommen, Schema sagt uns: Nur book-Elemente direkt unter der Wurzel enthalten zip-Element, zip stets direkt unter address-Element unter book-Element. Illustration
ALSO: Die * können also dann gefahrlos durch Konkrete Werte ersetzt werden –> Anfrage wird somit effizienter, das weniger Pfade abgelaufen werden müssen!
—> Abstraktere Anfragen können durch Konkrete mit Hilfe des Schemas ersetzt werden!
Sache der Implementierung deshalb, weil beide Anfragen, sie vage als auch die konkrete richtig sind, aber die Implementierung anders
Erkläre Anforderung an Anfragesprachen Zusammensetzbarkeit(Referenzielle Transparenz)!
Anfrage in SQL liefert eine Relation zurück, diese kann weiterverarbeitet werden!
Anfragen auf Sichten nichts anderes als geschachtelte SQL Anfrage:
create view highIncomeMA
as select Mitarbeiter, Gehalt
from MGA
where Gehalt > 20
View dann verwendbar wie ‚normale‘ Relation, z. B.: select *
from highIncomeMA
where Gehalt < 50
Äquivalent zu:
select *
from (select Mitarbeiter, Gehalt from MGA where Gehalt > 20)
where Gehalt < 50
Kein Unterschied ob Anfrage auf physische Relation oder Sicht = Referenzielle Transparenz
Wie sieht es mit Pfaden im OEM-Kontext aus?
In OEM –> Kanten sind beschriftet
In XML –> Elemente sind beschriftet
Was ist die Unterscheidung zwischen absoluten und relative Pfadausdrücken?
Relativer Pfadausdruck
– Auswertung beginnt an aktueller Position im Dokument; Ergebnis also kontextabhängig.
Absoluter Pfadausdruck
– Auswertung beginnt an absoluter Position im Dokument. Ergebnis also stets dasselbe, unabhängig vom Kontext.
XPath Beispiele!
da
Wie werden Namensräumen in XPath Rechnung gertragen? Gibt es noch einer lokale Möglichkeit?
Möglichkeit mit Prefix abzufragen!
mein_namensraum:* Alle Elemente in “mein_namensraum”
Anders herum gibt es auch die Möglichkeit ausschließlich sog. “Local Names” zu betrachten
Beispiel-Dokument: blablubb
D. h. Elementname T aus unterschiedlichen Namespaces. Pfadausdruck, der alle Elemente mit Namen T zurückgibt:
//.[local-name(.) = “T”]
Wie sind die Location Paths in XPath aufgebaut?
Location Path besteht aus Location Steps,
Location Step besteht aus
Achse,
‘Node Test’,
Prädikaten.
** Node Test –> Ausgabe einer Liste keiner Menge –> Reihenfolge dieser Elemente in der Liste, ist die wenn wir in der Tiefensuche durch Dokument gehen wie sie anzutreffen sind
–> wir lassen uns das 42 angetroffene figure Element ausgeben
Beispiel: /descendant::figure[position() = 42]
selektiert das 42. Bild im Dokument
Folie 29
Warum sind Ergebnisse von XPath dupplikatfrei?
Naja, Die Elemente, auch wenn sie in als Ergebnisses eines Pfadausdruckes Duplikate generieren würden. Werden in der Reihenfolge ausgegeben in der sie im Baum vorkommen –> und im Baum sind sie Duplikatfrei
Bsp einfüge F30
Kann man aus einem XML Dokument mit Hilfe von XPath eine andere Struktur ausgeben lassen?
Nein, eine Neuanordnung nur mit XPath ist nicht möglich! Aber in Verbindung mit XQuery!
Das zeigt die Beschränktheit von XPath!
XPath entspricht nicht der Anforderung “Abgeschlossenheit” an eine Abfragesprache
D.h. Eine Anfragesprache soll so sein, dass die Resultate selbst wieder Instanzen des Datenmodells sind –> hier nicht gegeben, da wir nur eine Liste an Elementen ausgeben, statt Dokument mit expliziter Struktur
Warum sind polymorphe Konsistenzbedingungen in XML Schema umfangreicher als im rDM am Beispiel Eindeutigkeit?
Und (2) wie ist das Vorgehen
im rDM –> sind es Tupel, die eindeutig zu sein sind!
im sDM –> Elemente auf welcher Ebene die eindeutig zu sein sind?
Die spezifikation eines Uniqueness Constraints ist im XML-Fall komplexer, da sich die Ebenen des Elementes unterscheiden können
(2)
Ziel: Bestimmte Werte (bzw. Kombinationen von Werten) sollen eindeutig sein (Uniqueness Constraint).
Schritte:
(a) Identifizierung der Elemente, die eindeutig sein sollen,
(b) Identifizierung des oder der Attributwert(e) dieser Elemente, die eindeutig sein sollen,
(c) Festlegung, innerhalb welchen Kontexts die Elemente eindeutig sein sollen.