Prüfungsfragen aus Protkollen [Ausstehend] Flashcards
Erzählen sie was für Probleme bei der Speicherung von E-Commerce Daten auftauchen können! Welche Möglichkeiten gibt es das Problem zu lösen?
Wie funktioniert die Transformation von horizontal nach vertikal? Was passiert, wenn man eine Zeile hat, die nur NULL-Werte enthält?
da
Hier sehen sie eine SELECT Query, die bestimmte Attribute aus der horizontalen Tabelle auswählt. Formen sie diese Query für die vertikale Datenspeicherung um!
Select A2=c und A3=a
Siehe Bild
Übrigens Projektion ist das Gleiche wie v2h mit entsprechenden Attributen
Was für Probleme gibt es bei der Erzeugung von der horizontalen Sicht aus einer vertikalen Sicht?
**Man muss viele Leftjoins durchführen, wenn man die ganze horizontale Tabelle haben will
(1)Beschreiben Sie bitte was ein R Baum ist! (2)Wie führt man eine NN Abfrage in dem R Baum durch? (3)Was für ein Problem gibt es in den hochdimensionalen Räumen? (4)Wie kann man das Problem lösen? (5)Wie funktioniert dann die NN Abfrage?
Es ist sind besserer Karten im Set enthalten!!
(1) **Ein Baum aus Minimum Bounding Rectangles eines Raumes
(2) **Priority Queue erzeugen, die die Bounding Rectangles nach dem Abstand sortieren und diese nach und nach aufmachen und Punkte dort betrachten. Die Punkte werden auch nach dem Abstand sortiert
(3) **Bei vielen Dimensionen überlappen sich über 50% der Rectangles und man muss somit viele oder sogar alle Rectangles betrachten.
Frage vom Prüfer: Warum überlappen die sich?
⇒**Bei vielen Dimensionen können die Abstände in den jeweiligen Dimensionen nie unterschiedlich sein. anscheinend statistisch unmöglich
(4) **Man partitioniert den Raum uns fasst alle Dimensionen zu einem Durchscnittsabstand zusammen un ordnet jeder Partition einen Punkt zu. Zusätzlich erstellt man eine Tabelle, wo man jeden Punkt einem Durchschnittsabstan zuordnet
(5) **I-Distance: Man legt einen Query Punkt in den Raum und erweitert iterativ seinen Radius.
⇒ Wenn der enstehende Kreis eine Partition schneidet, dann betrachtet man alle Punkte die in der Schaale des Schnitts zwischen der Partition und dem Kreis liegen. Dafür benutzt man die Tabelle, in der alle Durchschnittsabstände gespeichert sind und man somit schnell naschschauen kann, ob der Punkt in der Schaale liegt. Für alle Punkte die in der Schaale liegen, macht man dann die tatsächliche Abstandsberechnung in allen Dimensionen zu dem Querypunkt // Kommt glaub ich in der Datenbanksysteme VL dran oder so
- Wir hatten in der Vorlesung verschiedene Möglichkeiten Daten abzufragen, Relationale Algebra, Datalog. Was ist Datalog? Abgrenzung du RA?
- Warum kann es keine Schnittmenge (Mengendifferenz) in Datalog geben?
- Was ist das Problem mit Negation?
- Ist Negation in Datalog grundsätzlich nicht erlaubt? (5) Kann man das Prüfen?
- **Datalog erklärt und gegen Relationale Algebra abgegrenzt (keine Schnittmenge, dafür Rekursion)
- –> 1.0 –> Logik-basierte Anfragesprache, Syntax basiert auf Prolog.
- –> 1.0 –> Datalog kann andere Informationsbedürfnisse befriedigen. Z.B. Rekursion ist möglich, was mit RA nicht geht (umständlich). Dafür unterstützt Datalog keine Mengedifferenz (Schnittmengenberechnung) .
- **Auf Grund der Monotonie-Eigenschaft bzw im Fall von
- Negation ist nicht-monoton: Eine Vergrößerung der Eingabemenge verkleinert die Ausgabemenge und das nicht in Datalog erlaubt ist, da Datalog monoton ist!
- Aus anderm Protokol mit 1.0 ⇒ Dafür würde Negation benötigt. Negation ist im allgemeinen nicht monoton, deshalb in Datalog nicht ohne weiteres erlaubt.
- ** Es kann zu Oszillation kommen –> Beispiel aus VL malen Prüfer: ist das immer so? siehe
- ** Nein, wenn negierte Prädikate vollständig berechnet sind, bevor sie negiert vorkommen geht das (5)**Ja, mit Stratifikation bzw. dem Abhängikeitsgraph.
Was ist Oszillation, Warum taucht sie auf? Was ist ein Abhänigkeitgraph Wie kann man Ozillation beseitigen?
da
Was ist Relationale Algebra? Was ist Relationale Vollständigkeit?
- RA= Menge von Operationen, die neue Relation berechnen, ausgehend von einer oder mehreren Relationen.
- Jede andere Menge von Operationen, die mindestens genauso mächtig ist wie Omega
Wie unterscheidet sich Datalog von relationalen Kalkülen, relationaler Algebra, Prolog, SQL?
- Unterschied zu Kalkülen:
- Striktere Vorgaben bezüglich des Aufbaus von Anfragen,
- zieht diverse vorteilhafte Eigenschaften nach sich, formal nachweisbar.
- Andererseits: Erweiterungen problembehaftet.
- Datalog vs. SQL
in Datalog:Aggregation kann zu Nicht-Monotonizität führen – Illustration (1) Aggregation – nicht Teil von Datalog, deswegen Darstellung mit SQL.
- Datalog vs. Prolog
Datalog: Anordnung von Prädikaten und Fakten spielt keine Rolle.
Datalog erlaubt im Gegensatz zu Prolog keine komplexen Terme als Argumente in Prädikaten. Beispiel: P(1, 2) ist erlaubt, nicht aber P(f(1), 2).
- Datalog vs. relatinaler Algebra
Datalog hat wichtige Beschränktheit in der Ausdruckskraft der relationalen Algebra nicht (Berechnung transitive Hülle), trotzdem effizient.
Datalog ist monoton. (Keine Negation in Rümpfen von Regeln erlaubt.)
monoton := Vergrößerung des Inputs (einer Anfrage/eines Operators) verkleinert nicht den Output.
Rekursive Anfragen nicht in relationaler Algebra. Relationale Algebra hat dafür diff-Operator, der nicht in Datalog ausdrückbar ist.
Warum beschäftigen wir uns mit Datalog, gegeben dass wir relationale Anfragesprachen schon kennen?
Rekursion ist möglich!
[mP] Was bedeutet modelltheoretische/ beweistheoretische Semantik von Datalog Programmen? Unter welchen Umständen können diese Betrachtungsweisen sich im Ergebnis unterscheiden?
Zwei alternative Herangehensweisen:
- Modelltheoretisch: Berechnung der Menge aller Grundfakten, die logische Konsequenzen des Programms sind.
- Beweistheoretisch: Berechnung der Menge aller Grundfakten, die aus dem Programm (in endlich vielen Schritten) ableitbar sind.
Ansätze liefern – für Horn-Klauseln – das gleiche Ergebnis.
Was ist Stratifikation? Warum ist dieses Konzept im Kontext von Datalog bedeutsam?
Stratifikation bedeutet das auszuführende Programm in eine ausfühbare Reihenfolge zu bringen über Einteilung sog. Strata! Intressant für Datalogprogramme, die Negation enthalten.
Denn ein Programm das Negation auf noch nicht vollständig berechnete Realtionen enthält ist nicht ausführbar!
Man kann es aber mit Hilfe von Stratifikation (Abhängigkeitsgraph + Algorithmus) in eine ausführbare Reihenfolge bringen, sofern die Negation nicht teil eineses Zykels ist!!
Ist Negation grundsätzlich erlaubt in Datalog? Wie kann es zugelassen werden?
[Negation in rekursiven Regeln]
Es ist grundsätzlich nicht erlaubt, auf Grund der nicht-Monotonizität!
Datalog ist monoton. Negation kann aber mit Stratifikation zugelassenwerden.
Verwendung von Negation in Rümpfen muss kontrolliert erfolgen. Wird negatives Literal der Form negationP in Regel benutzt, muss P bis dahin vollständig berechnet sein.
Wozu kann Negation führen? Zeigen sie ein Beispiel!
Es kann zur Oszillation führen!
Anwendung des Algorithmus auf folgendes Beispiel führt zu „Oszillieren.“
Bei beweißtheoretischem Vorgehen!
- P(X) :- R(X), -Q(X) .
- Q(X) :- R(X), -P(X) .
Anmerkung beim Ausführen des Algo –> Ich beziehe mich im Schritt 1 auf den Ausganszustand: Also nur die 0 in R und Rest leer oder was anderes
Führt modelltheoretische Betrachtung zu gleichem Ergebnis wie beweistheoretische Betrachtung?
Für Illustration, Formeln hierfür umformen. (nur für modelltheoretisches Vorgehen)
Es reicht mit beweistheoretischem Vorgehen stumpf die Regeln aus dem Beispiel anzuwenden um Oszillieren zu zeigen. Also oszilieren zwischen dem Anfangszustand und den 1. Zustrand –> es gibt kein terminierten Zustand –> Regeln würden unentlich fortgesetzt!
Wie können wir denn nach Mustern in Graphen suchen? Also zum Beispiel diese Dreieck?
Funktioniert über sogenannte Motifs
Motif = (flexible) Spezifikation von Mustern in Graphen
Es gibt simple (elementare) Motifs und zusammengesetzte Motifs
einfache Motifs sind im Prinzip Graphen ohne jegliche Flexibilität
Motifs können graphisch oder textuell dargestellt werden (Textuell hat den Charm, dass es quasi schon Teil unserer Anfrage ist)
Wir haben die Möglichkeit den Mustern Namen zu geben
Zusammensetzungen bringen Übersichtlichkeit!
Bild bsp !
Es gibt nun unterschiedliche Möglichkeiten wie wir die Zusammensetzung machen können
Stellen sie mal einen Join mit Datalog dar! Mit Student(MatrNr, Name) und Prüfung(MatrNr, Note) –> Name und Note ausgeben
Einfach mit Komma getrennt !
Ergebnis(Name, Note) :- Student(MatrNr, Name), Prüfung(MatrNr, Note)
Stellen sie mal Selektion mit Datalog dar! –> x>100 in R(x,y) (Mit 2 Bedingung AND/OR y=’some string’ )
- x>100 in R(x,y)
S(x,y) :- R(x,y), x > 100,
- Selection x>100 AND y=’some string’
S(x,y) :- R(x,y), x > 100, y=’some string’
- Selection x>100 OR y=’some string’ Need two rules (Also Union mit oder!)
S(x,y) :- R(x,y), x > 100
S(x,y) :- R(x,y), y=’some string’
Stellen sie mal Union mit Datalog dar!
Für Union brauchen wir 2 Regeln // gegeben R1(X,Y,Z) und R2(X,Y,Z)
U(X,Y,Z) :- R1(X,Y,Z)
U(X,Y,Z) :- R2(X,Y,Z)
Stellen sie mal Projektion mit Datalog dar! R(A,B.C) und ich möchte das B wegprojezieren!
S(A,C) :- R(A,B,C) .
Warum ist ein external Interface bei Motifs nötig?
Es ist im allgemeinen erforderlich, dass ein Motif ein externes Interface hat, weil wir ansonsten nichts haben von diesem Motif was wir dann in ein größeres Motif einbauen können
Schreiben Sie mal das Muster für einen Pfad beliebiger Länge auf und mal einen Cycle! Und was beinhaltet diese Muster?
Das Muster beinhaltet Rekursion
Warum muss die Export Klausel dazu?
siehe tonspur
Nennen und schreiben Sie mal die Muster für alle Arten von Komplexen Motifs auf?
Benutze das Motif aus dem Bild und führe Vereinigung durch!
- Komplexe Motifs
- Concatenation (keine Flexibilität)
- by edges
- by unification
- Disjunction. (Flexibilität - common part’ – here shown in blue.)
- Repetition
Beispiele im Bild
Motifs ist keine vollständige Anfragesprache was fehlt noch? Schreibe Beispiele zu den fehlenden Bestandteilen auf!
- Ich möchte zum einen noch bestimmte Bedingungen an einzelne Elemente des Graphen stellen (z.b Knoten1.name=”A” oder Knoten2.year > 2000)
- Möglich mit Graph Patterns
- Zum anderen möchte ich die Struktur des ausgegebenen Graphen bestimmen. Es für eine Anfragesprache von Nöten, dass da Ergebnis wiederverwendbar ausgegeben wird.
- Möglich mit Templates
- Graph Patterns (kurz = eigenes Motif mit Where Klausel)
= Im Prinzip ein Motif, das durch Where Klausel erweitert wird, wo dann auf Knoten bezug genommen wird, die Teil unseres externen Interfaces sind. Über die Where Klausel können wir dann Bedingungen formulieren!
- Template
Bestandteile
- Body = Vorgabe wie der auszugebende Graph strukturell beschaffen ist
- Pattern = Pattern wird in neuer Ausgabe verarbeitet
Aus dem Template entsteht einer neuer Graph!
Was ist denn der Abhänigkeitsgraph und was sind die Knoten und die Kanten?
Male den Abhänigkeitsgraph für dieses Beispiel!
Zwei rekursive Definitionen, die voneinander abhängen (d. h. Definition von A hat B im Rumpf u. u.)
Erkennen mit Hilfe des Abhängigkeitsgraphen:
- Knoten – Relationen,
- Kante – direkte Abhängigkeit, [A->B, Prädikat A hängt von B ab]
- Zykel.







