Seminar : Benutzerzentrierte Datenbankanfragen
Kapitel 1 : Prolog
Kapitel 2 : Preference SQL
Kapitel 3 : Chomicki Framework Kapitel 4 : Epilog
Was sind präferenzgestützte Datenbankanfragen?
Beispiel:
• Familie Vielflieger will in den Urlaub fliegen
• sie haben genaue Vorstellungen
(Abflugdatum, Reiseziel, Reisedauer)
Problem:
• Datenbankanfrage liefert kein Ergebnis zu spezielle Wünsche
Lösung:
• Einbindung von ungefähren Präferenzen / Kriterien liefert bestmögliches, annäherndes Ergebnis benutzerfreundlichere Suche
Preference SQL & Chomicki Framework gleiche math. Grundlage
• Ausdruck der Präferenzrelation P :
P(x,y) = x ≻P y „x ist besser als y“ oder „x dominiert y“
• strikt partielle Ordnung :
Diese Ordnung ist erfüllt, wenn ≻P
irreflexiv: ∀x. x ⊁ x
transitiv: ∀x, y, z. (x ≻y ∧ y ≻ z) ⇒ x ≻ z ist. Dadurch ist sie auch zwangsläufig
asymmetrisch : ∀x, y. x ≻ y ⇒ y ⊁ x
Der „besser als“-Graph :
Bsp.: Reiseziel
New York
London
Paris
Sonstige Level1
(max. Werte)
Level 3 Level 2
Level 4 (andere Werte)
Preference SQL = Standard SQL + Präferenzen
• Standard SQL
ermöglicht es nicht Präferenzen direkt zu spezifizieren
lediglich exakte (harte) Kriterien können eingebunden werden
Benutzer muss wie die Datenbank denken
• Preference SQL
ermöglicht erst tolerantere (weiche) Kriterien
normale Benutzer drücken sich lieber erklärend statt präzise aus
handelt nach dem „Best Matches Only“-Prinzip
Preference SQL = Standard SQL + Präferenzen
„hart“ „weich“
„hartes“ Kriterium „weiches“ Kriterium Notwendigkeit MÜSSENerfüllt sein SOLLTENerfüllt sein
Kriterien komplett erfüllt exaktes Ergebnis
(„exact-match“) exaktes Ergebnis +
Annäherndes Ergebnis
Kriterien nicht komplett
erfüllt kein Ergebnis
Schlüsselwort WHERE PREFERRING
Preference SQL = Standard SQL + Präferenzen
„hart“ „weich“
Beispiel : hartes Kriterium
SELECT * FROM reise
WHERE ziel = ‘New York‘;
Beispiel : weiches Kriterium
SELECT * FROM reise
PREFERRING ziel ...
Präferenz-Konstruktoren :
• Numerische Konstruktoren :
AROUND
BETWEEN
LOWEST
HIGHEST
• Nicht-numerische Konstruktoren :
POS
NEG
POS/POS
NEG/NEG
POS/NEG
EXPLICIT
Numerische Präferenz-Konstruktoren :
Beispiel : AROUND
SELECT * FROM reise
PREFERRING dauer AROUND 14;
ziel dauer
New York 14
Prag 7
London 7
Barcelona 16
London 12
Paris 10
Numerische Präferenz-Konstruktoren :
Beispiel : AROUND
SELECT * FROM reise
PREFERRING dauer AROUND 14;
Beispiel : BETWEEN
SELECT * FROM reise
PREFERRING dauer BETWEEN 12 AND 16;
ziel dauer
New York 14
Prag 7
London 7
Barcelona 16
London 12
Paris 10
Numerische Präferenz-Konstruktoren :
Beispiel : AROUND
SELECT * FROM reise
PREFERRING dauer AROUND 14;
Beispiel : BETWEEN
SELECT * FROM reise
PREFERRING dauer BETWEEN 12 AND 16;
Beispiel : LOWEST
SELECT * FROM reise
PREFERRING LOWEST(preis);
ziel preis
New York 700
Prag 300
Barcelona 350
London 450
Paris 450
Numerische Präferenz-Konstruktoren :
Beispiel : AROUND
SELECT * FROM reise
PREFERRING dauer AROUND 14;
Beispiel : BETWEEN
SELECT * FROM reise
PREFERRING dauer BETWEEN 12 AND 16;
Beispiel : LOWEST
SELECT * FROM reise
PREFERRING LOWEST(preis);
Beispiel : HIGHEST
SELECT * FROM reise
ziel preis
New York 700
Prag 300
Barcelona 350
London 450
Paris 450
Nicht-numerische Präferenz-Konstruktoren :
Beispiel : POS
SELECT * FROM reise
PREFERRING ziel = ‘New York‘;
Ziel dauer
New York 14
Prag 7
London 7
Barcelona 16
London 12
Paris 10
Nicht-numerische Präferenz-Konstruktoren :
Beispiel : POS
SELECT * FROM reise
PREFERRING ziel = ‘New York‘;
Beispiel : NEG
SELECT * FROM reise
PREFERRING ziel <> ‘Prag‘;
Ziel dauer
New York 14
Prag 7
London 7
Barcelona 16
London 12
Paris 10
Nicht-numerische Präferenz-Konstruktoren :
Beispiel : POS
SELECT * FROM reise
PREFERRING ziel = ‘New York‘;
Beispiel : NEG
SELECT * FROM reise
PREFERRING ziel <> ‘Prag‘;
Beispiel : POS/NEG
SELECT * FROM reise
PREFERRING ziel = ‘New York‘
ELSE ziel <> ‘Prag‘;
Ziel dauer
New York 14
Prag 7
London 7
Barcelona 16
London 12
Paris 10
Aufbau komplexer Präferenzen :
Gleiche Priorität : Pareto Akkumulation (AND)
• alle Präferenzen weisen die gleiche Priorität auf
• maximale Werte von Präferenzen heißen „Pareto-optimale Menge“
Beispiel :
SELECT * FROM reise
PREFERRING ziel = ‘New York‘
AND abflugort = ‘Hannover‘
AND dauer AROUND 14;
Ziel Dauer Abflugort New York 10 Hannover New York 14 Frankfurt Barcelona 16 Hannover
Rom 12 Berlin
New York 7 Hannover
Beispiel :
SELECT * FROM reise
PREFERRING ziel = ‘New York‘
AND abflugort = ‘Hannover‘
AND dauer AROUND 14;
Ergebnis :
Berlin / Frankfurt (Level 2) Hannover (Level 1) 0
1 2 3 4 5 6 7
Ziel Dauer Abflugort New York 10 Hannover New York 14 Frankfurt Barcelona 16 Hannover
Rom 12 Berlin
New York 7 Hannover
Aufbau komplexer Präferenzen :
Geordnete Priorität : hintereinandergeschaltete Präferenzen (CASCADE)
• jede Präferenz weist ein anderes Level an Priorität auf
• 1. Präferenz höchste Priorität
• n. Präferenz niedrigste Priorität Beispiel :
SELECT * FROM reise
PREFERRING ( ziel = ‘New York‘
AND abflugort = ‘Hannover‘
AND dauer AROUND 14) CASCADE preis AROUND 1000
CASCADE veranstalter IN (‘Tui‘,‘Neckermann‘);
„Ein Tupel in der Ergebnismenge spricht nicht nur für seine Qualität, sondern auch für die seiner Konkurrenten.“
Qualitätsfunktionen :
• TOP (Präferenz): Boolean-Aussage für das beste Ergebnis
• LEVEL (Präferenz): Level-Aussage für dieses Ergebnis gegenüber des besten Ergebnisses (nicht-numerisch)
• DISTANCE (Präferenz) : Abstand-Aussage für dieses Ergebnis gegenüber des besten Ergebnisses (numerisch)
Beispiel : LEVEL/DISTANCE
SELECT ziel, dauer,
LEVEL(ziel), DISTANCE(dauer)
FROM reise
PREFERRING ziel = ‘New York‘
ELSE ziel = ‘London‘
AND dauer AROUND 14;
Ergebnis : Pareto-optimale Menge
Ziel dauer
New York 14
Prag 7
London 7
Barcelona 16
London 12
Paris 10
ziel dauer level distanz
New York 14 1 0
London 12 2 2
Barcelona 16 3 2
Qualitätskontrolle:
• mit BUT ONLY kann man die Ergebnisse einschränken/kontrollieren
Beispiel :
SELECT * FROM reise
PREFERRING ziel = ‘New York‘
AND dauer AROUND 14
BUT ONLY DISTANCE(dauer) <= 2;
ziel dauer
New York 14 New York 7 Barcelona 15
Qualitätskontrolle:
• mit BUT ONLY kann man die Ergebnisse einschränken/kontrollieren
Beispiel : Ergebnis :
SELECT * FROM reise
PREFERRING ziel = ‘New York‘
AND dauer AROUND 14
BUT ONLY DISTANCE(dauer) <= 2;
ziel dauer
New York 14 New York 7 Barcelona 15
Rom 12
ziel dauer
New York 14 Barcelona 15
Rom 12
Implementierung :
• integriert zwischen Applikation und SQL Datenbank :
1. Preference ODBC/JDBC übersetzt Preference SQL in Standard SQL (SQL 92)
2. Preference SQL Optimizer optimiert die Anfrage nach BMO
3. Standard ODBC/JDBC optimiert die Anfrage ein 2. Mal und leitet sie an Datenbank weiter
• Anfragen ohne Preference SQL werden sofort an Datenbank weitergeleitet
Framework :
• logischer Aufbau für die Formulierung von Präferenzen als Präferenz Formeln
• Einbettung von Präferenzen in relationale Algebra
durch einen Winnow-Operator, der eine Präferenz als Parameter besitzt
Zur Erinnerung : Präferenz P P(x,y) = x ≻P y
Winnow-Operator :
ωP(r) = { x ∈ r | ¬∃y ∈ r. y ≻P x }
Indifferenz :
r : Instanz eines
relationalen Schemas R P : Präferenzrelation
Komplexe Präferenzen :
Zwei Wege der Zusammensetzung:
• Unidimensional Präferenz-Relationen über EINE Datenbank
• Multidimensional Präferenz-Relation über MEHRERE Datenbanken
Sorten :
• Boolesche : ≻P0 = ≻P1 ∩ ≻P2 x ≻P0 y ≡ (x ≻P1y) ∧ (x ≻P2 y)
≻P0 = ≻P1 ∪ ≻P2 x ≻P0 y ≡ (x ≻P1y) ∨ (x ≻P2y)
≻P0 = ≻P1 ‒ ≻P2 x≻P0 y ≡ (x ≻P1y) ‒ (x ≻P2 y)
• Priorisierte : ≻P1,2= ≻P1 ⊳ ≻P2
x ≻P1,2y ≡ (x ≻P1 y) ∨ [(x ∼P1y) ∧ (x ≻P2 y)]
Beispiel : Winnow-Operator
• relationales Schema R : Reise(Ziel, Dauer, Preis)
• Präferenz-Relation P1: (z, d, p) ≻P1 (z`, d`, p`) ≡ z = z` ∧ d = d` ∧ p < p`
Ziel Dauer Preis
New York 7 700
New York 7 500
Barcelona 14 800
Rom 12 700
New York 7 600
Beispiel : Winnow-Operator
• relationales Schema R : Reise(Ziel, Dauer, Preis)
• Präferenz-Relation P1: (z, d, p) ≻P1 (z`, d`, p`) ≡ z = z` ∧ d = d` ∧ p < p`
• Ergebnis der Anfrage : ωP1(Reise)
Ziel Dauer Preis
New York 7 700
New York 7 500
Barcelona 14 800
Rom 12 700
New York 7 600
Ziel Dauer Preis
New York 7 500
Barcelona 14 800
Rom 12 700
• Ergebnis der Anfrage : ωP12(Reise) • Ergebnis der Anfrage : ωP13(Reise)
liefert ZWEITbestes Ergebnis liefert DRITTbestes Ergebnis
Iteratives Ranking :
• durch iteratives verschachteln des Winnow-Operators, ist Ranking möglich ωP1(r) = ωP(r)
ωPn(r) = ωP(r ‒ ωP2(r ‒ ωP3(r ‒ … ) ) )
Beispiel : (siehe Beispiel Winnow-Operator)
Ziel Dauer Preis
New York 7 600
Ziel Dauer Preis
New York 7 700
Winnow-Auswertung :
Drei Algorithmen :
• Nested Loops (NL) :
1. schaltet zwei Schleifen mit je einer Relation ineinander
2. vergleicht so jedes Tupel der äußeren Relation R einmal mit jedem Tupel der inneren Relation S
3. die dominierenden / unvergleichbaren Tupel kommen in die Ergebnismenge
• Blocked Nested Loops (BNL) :
Abwandlung von NL
vergleicht hier die kompletten Blöcke (n-Tupel) der Relationen geringerer Zeitaufwand und Speicherplatz benötigt,
weil weniger Vergleiche
• Sort-Filter-Skyline (SFS) :
Abwandlung von BNL
Gemeinsamkeiten :
• mathematische Grundlage
• komplexe Präferenzen
• Auswertung der der Präferenzrelationen
Unterschiede :
• Aufbau des Systems :
Preference SQL : arbeitet eng mit SQL Standard zusammen
Chomicki : lediglich theoretisch nach logischen Gesetzen aufgebaut
•Ranking :
Preference SQL : nur über Umwege möglich
Chomicki : iterativ möglich
Preference SQL Chomicki Framework
Benutzerfreundlichkeit ++ ‒ ‒
Praxisnähe ++ ‒
Flexibilität + ++
Integrationsmöglichkeit o +
Familie Vielflieger will :
• nicht in technische Details involviert werden
• benutzerfreundliche Systeme
• eine Auswahl an guten Ergebnissen
• nach ihren Vorlieben Ergebnisse
Unternehmen :
• müssen sich nach den Kunden (wie den Vielfliegers) richten
Familie Vielflieger will :
• nicht in technische Details involviert werden
• benutzerfreundliche Systeme
• eine Auswahl an guten Ergebnissen
• Ergebnisse nach ihren Vorlieben
Unternehmen :
• müssen sich nach den Kunden (wie den Vielfliegers) richten