Klausur Informationssysteme

Werbung
Klausur
Informationssysteme
Name/Matrikel-Nr.: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ich möchte mein Prüfungsergebnis per Email erhalten.
Termin:
Prüfungsdauer:
Erlaubte Hilfsmittel:
22. Februar 2006 / 10–12 Uhr
120 Min.
keine
Aufgabe max. Punkte Punkte
A
10
B
24
C
13
D
15
E
14
F
10
14
XG
Punkte (max. 100)
Beurteilung: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Prüfer: Prof. Marc H. Scholl
Name/Matrikel-Nr.: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A
Datendefinition in SQL
(2 + 5 + 3 Punkte)
Ein Betreiber eines Internet-Shops möchte die Bestellungen in einer relationalen
Datenbank verwalten. Wie im folgendem ER-Diagramm abgebiltet, werden die Bestellungen von einzelnen Kunden gemacht. Eine Bestellung besteht aus einem oder
mehreren Artikeln und für jeden Artikel muss die Anzahl (Stück) eingegeben werden.
1 Vervollständigen Sie das ER-Diagramm um die Kardinalitäten der Beziehungen
in [min, max] -Notation.
Solution:
2 Überführen Sie das obige Modell in relationale Tabellen (verwenden Sie die
Notation TABELLENNAME (attr1, attr2, ...)). Spezifizieren Sie dabei sämtliche Primär- und Fremdschlüsselbeziehungen (durch das Untersteichen des
Informationssysteme
2 / 15
22. Februar 2006
Name/Matrikel-Nr.: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Primärschlüssels und einen Pfeil zu dem(den) referenzierten Attribut(-en) bei
einem Fremdschlüssel).
Solution:
KUNDEN (KundenNr, Vorname, Name)
ARTIKEL (ArtikelNr, Bezeichnung, Foto, Netto_Preis, MwSt)
BESTELLUNG (BestellNr, KundenNr*, Datum)
BESTELLTE_ARTIKEL (BestellNr*, ArtikelNr*, Stueck)
Geben Sie die SQL-Anweisung zum Anlegen der Tabelle an, welche die “enthält”Beziehung zwischen Bestellungen und Artikel abbildet. Spezifizieren Sie dabei sämtliche Constraints (Integritätsbedingungen).
CREATE TABLE BESTELLTE_ARTIKEL (
BestellNr INTEGER NOT NULL REFERENCES BESTELLUNG(BestellNr),
ArtikelNr INTEGER NOT NULL REFERENCES ARTIKEL(ArtikelNr),
Stueck INTEGER,
PRIMARY KEY(BestellNr, ArtikelNr));
3 Definieren Sie in SQL eine Sicht Rechnungen(BestellNr, Rechnungssumme),
die den Gesamtwert jeder Bestellung berechnet. Dieser Wert ergibt sich aus der
Summe der Bruttopresie für jeden bestellten Artikel (der Bruttopreis pro Artikel
ist (1 + 0, 01 ∗ MwS t) ∗ Netto Preis ∗ S tueck).
CREATE VIEW Rechnungen (BestelNr, Rechnungssumme) AS
SELECT BestelNr, SUM((1+0.01*MwSt)*Netto_Preis*Stueck)
FROM BESTELLTE_ARTIKEL AS b, ARTIKEL AS a
WHERE b.ArtikelNr = a.ArtikelNr GROUP BY BestelNr;
Nun möchten Sie der Benutzergruppe ‘Verkaeufer’ das Recht einräumen, auf die
Sicht Rechnungen lesend zuzugreifen. Geben Sie die notwendige Anweisung in
SQL-Syntax an.
GRANT SELECT ON Rechnungen TO GROUP Verkaeufer;
Informationssysteme
3 / 15
22. Februar 2006
Name/Matrikel-Nr.: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B
Anfragesprachen
(4 + 6 + 6 + 4 + 4 Punkte)
An einer Universität werden die Prüfungsleistungen der Studierenden in einer relationalen Datenbank mit dem folgenden Schema verwaltet:
Student (MatrNr, Name, Geburtsdatum, Studiengang, Fachsemester)
Betreuer (PersonalNr, Name, Akadem Titel, Fachbereich)
Veranstaltung (VeranstID, Veranst Titel, Typ, SWS, PersonalNr*)
Ergebnis (VeranstID*, MatrNr*, Datum, Note)
Die mit * markierten Attribute sind Fremdschlüssel, die auf die gleichbenannten
Primärschlüssel verweisen.
Achtung: Verwenden Sie bei allen SQL Anfragen DISTINCT genau dann, wenn Duplikate im Ergebnis nicht ausgeschlossen wären!
Formulieren Sie die folgende Anfrage in Tupel-Relationen-Kalkül und SQL.
1 Finden Sie alle Prüfungsfälle, in denen ein Studierender im 1. Fachsemester eine
1.0 bekommen hat (Ausgabe: MatrNr, Name, Veranst Titel ).
{t | ∃s, ∃v, ∃e : S tudent(s) ∧ Veranstaltung(v) ∧ Ergebnis(e) ∧
s[Fachsemester] = 1 ∧ e[Note] = 1.0 ∧ v[VeranstID] = e[VeranstID] ∧
s[MatrNr] = e[MatrNr] ∧ t[MatrNr] = s[MatrNr] ∧
t[Name] = s[Name] ∧ t[Veranst T itel] = v[Veranst T itel]}
SELECT DISTINCT s.MatrNr, s.Name, v.Veranst_Titel
FROM Student AS s, Veranstaltung AS v, Ergebnis AS e
WHERE s.Fachsemester=1 AND e.Note=1.0 AND v.VeranstID=e.VeranstID AND
s.MatrNr=e.MatrNr;
Formulieren Sie die folgenden Anfragen in Relationen-Algebra und SQL.
2 Welche Studierenden des Studiengangs Geschichte/Bachelor haben an keiner
Prüfung teilgenommen? Geben Sie MatrNr, Name und Fachsemester aus.
π{MatrlNr,Name,Fachsemester} ((π{MatrNr} (σS tudiengang=′ Geschichte/Bachelor′ S tudent)−
π{MatrNr} Ergebnis) 1 S tudent)
SELECT MatrNr, Name, Fachsemester FROM Student
WHERE Studiengang=’Geschichte/Bachelor’ AND MatrNr NOT IN
(SELECT MatrNr FROM Ergebnis);
Informationssysteme
4 / 15
22. Februar 2006
Name/Matrikel-Nr.: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Geben Sie alle Studenten und Mitarbeiter aus, deren Name mit Meier oder Maier
endet (Ausgabe: Name, in SQL bitte alphabetisch sortiert). Verwenden Sie dabei
in der Relationenalgebra den gleichen Operator für Stringvergleiche wie in SQL.
σName LIKE ′ %Meier′ ∨Name LIKE ′ %Maier′ (π{Name} S tudent ∪ π{Name} Betreuer)
SELECT Name FROM Student
WHERE Name LIKE ’%Meier’ OR Name LIKE ’%Maier’
UNION
SELECT Name FROM Betreuer
WHERE Name LIKE ’%Meier’ OR Name LIKE ’%Maier’
ORDER BY Name;
Formulieren Sie die folgenden zwei Anfragen nur in SQL:
4 Bei welchen Betreuern liegt die durschnittlich vergebene Note oberhalb von (d.h.
ist kleiner als) 2.3? Geben Sie Name und Fachbereich aus.
SELECT Name, Fachbereich FROM Betreuer
WHERE PersonalNr IN (SELECT PersonalNr
FROM Ergebnis AS e NATURAL JOIN Veranstaltung AS v
GROUP BY v.PersonalNr HAVING AVG(Note) <= 2.3);
5 Welcher Studiengang hat die größte Zahl von Studenten (Ausgabe: Studiengang, Zahl ), die bei keiner Prüfung durchgefallen sind? Achten Sie darauf, jede
Person nur einmal zu zählen!
SELECT Studiengang, COUNT(DISTINCT e.MatrNr) AS Anzahl
FROM Ergebnis e NATURAL JOIN Student s
WHERE e.MatrNr NOT IN
(SELECT MatrNr FROM Ergebnis WHERE Note = 5.0)
GROUP BY Studiengang ORDER BY Anzahl DESC LIMIT 1;
Informationssysteme
5 / 15
22. Februar 2006
Name/Matrikel-Nr.: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C
Rekursive Anfragen
(2 + 4 + 7 Punkte)
Ein Autohersteller verwaltet die Komponenten eines Automodells mit Hilfe zweier
Relationen:
Komponente (Id, Bezeichnung, Code)
Bestandteil von (ChildId*, ParentId*, Anzahl)
Bestandeil von beschreibt die hierarchischen Beziehungen zwischen einzelnen
Komponenten eines Autos (ParentId enthält ChildId Anzahl mal). Leider wird rekursives SQL von diesem Datenbanksystem nicht unterstützt.
1 Formulieren Sie eine SQL-Anfrage, die alle unmittelbaren Bestandteile (Ausgabe: Bezeichung, Code ) der Komponente Motor findet.
SELECT Child.Bezeichnung, Child.Code
FROM Komponente AS child, Bestandteil_von b, Komponente AS parent
WHERE child.Id = b.Child.Id AND parent.id = b.ParentId
AND parent.Bezeichnung = ’Motor’;
Um rekursive Anfragen zu ermöglichen, hat ein Praktikant die hierarchische Struktur
in Bestandteil von mit einem Preorder/Size -Verfahren kodiert. Dabei ist die folgende neue Tabelle Bestandteile enstanden, die die ursprüngliche Tabelle Bestandteil von ersetzt:
pre
ChildId
Anzahl
size
level
0
1
2
...
1
2
17
...
NULL
1
4
...
5620
391
24
...
1
2
3
...
Preorder/Size-Kodierung hat eine wertvolle Eigenschaft: Teil x ist ein Bestandteil
(unmittelbar oder rekursiv!) von Teil y wenn prex > prey und prex <= prey + sizey .
Damit können Sie rekursive Anfragen wie die folgende in SQL formulieren:
2 Finden Sie rekursiv alle Bestandteile (Id, Bezeichung ) der Komponente Motor.
SELECT k.Id, k.Bezeichnung
FROM Komponente k JOIN Bestandteile b ON (k.Id=b.ChildId),
(SELECT pre, size FROM Bestandteile b WHERE ChildId IN
(SELECT Id FROM Komponenten WHERE Bezeichnung = ’Motor’)) as top
WHERE b.pre > top.pre AND b.pre <= top.pre+top.size;
Informationssysteme
6 / 15
22. Februar 2006
Name/Matrikel-Nr.: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Der Autohersteller will auf ein Logik-basiertes System umsteigen.
(a) Skizzieren Sie mit ein paar Beispiel-Einträgen, wie sich das urprüngliche
Szenario des Automobilherstellers als Prolog-Fakten modellieren lässt.
komponente(34, ’Karosserie’, ’9XD45W’).
komponente(35, ’Tr’, ’1AAJ5’).
komponente(63, ’Rad’, ’8IH03Y’).
komponente(64, ’Reifen’, ’8IH03Y’).
bestandteil_von (35, 34, 4).
bestandteil_von (64, 63, 1).
(b) Basiert auf Ihrer in (a) skizzierten Faktendarstellung, definieren Sie eine
Prolog-Regel enthalten_in(Unterteil, Oberteil), so dass Unterteil
ein unmittelbarer oder rekursiv enhaltener Bestandteil von Oberteil ist.
enthalten_in(Unterteil, Oberteil) :- bestandteil_von(Unterteil,
Oberteil).
enthalten_in(Unterteil, Oberteil) :- bestandteil_von(Unterteil,
X), enthalten_in(X, Oberteil).
(c) Formulieren Sie nun ein Prolog-Prädikat motor_teil(Id) , das die Id aller
Bestandteile der Komponente Motor zurückgibt.
motor_teil(Id) :- komponente(Oberteil, ’Motor’,_), enthalten_in(Id,
Oberteil).
Informationssysteme
7 / 15
22. Februar 2006
Name/Matrikel-Nr.: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
D
Datenbank-Architektur
(2 + 3 + 4 + 6 Punkte)
1 Erklären Sie kurz Aufgabe und Funktionsweise des “Buffer Managers”. Welche
Rolle hat seine “Ersetzungsstrategie”?
Buffer Manager abstrahiert Plattenzugriff und sorgt fuer Caching. VerdrängungsStrategie entscheidet, welche Seiten zuerst verdraengt werden, wenn der Buffer
voll ist. Beispiel ist “Least Recently Used” (LRU). Beim Nested-Loop-Join kann
die Strategie jedoch zu Cache Thrashing führen, wobei immer genau die Seite
verdrängt wird, die als naechste benötigt wird. Ein anderes Beispiel ist “Most
Recently Used” (MRU).
Ein DBMS verwendet einen Buffer-Manager aus 8 Frames mit LRU (“Least Recently
Used”) als die Ersetzungsstrategie. Ein Nested-Loop-Join zweier Relationen R und
S wird ausgeführt. R besteht aus 20 Seiten (r1, r2 , ...,r20 ) und S aus 6 Seiten ( s1, s2 ,
..., s6 ).
2 Für R 1 S (d.h. mit S in der inneren Schleife), zeigen Sie in der bereitgestellten
Skizze den Zustand des Buffers nachdem dieser zum ersten Mal voll wurde.
Markieren Sie die Seite, die von LRU als das erste “Opfer” bestimmt wurde.
frame #
page #
0
r
1
1
2
3
4
5
6
7
s1
s2
s3
s4
s5
s6
r2
Wie viele “cash hits” und “cash misses” entstehen durch die Ausführung der
gesamten Join-Operation?
Insgesamt |R| + |R|x|S | Zugriffe, davon 20+6 (|R| + |S | einmal laden) cache misses
und 114 cash hits.
3 Wiederholen Sie die vorige Aufgabe für S 1 R (d.h. mit R in der inneren Schleife).
frame #
page #
0
s1
1
r1
2
3
4
5
6
7
r2
r3
r4
r5
r6
r7
Insgesamt |S | + |S |x|R| Zugriffe, davon alle 126 cache misses.
Schlagen Sie eine für diesen Fall eine bessere Ersetzungsstrategie vor. Begründen Sie den Vorschlag durch die Abschätzung der “cash hits” und “cash
misses”.
Informationssysteme
8 / 15
22. Februar 2006
Name/Matrikel-Nr.: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mit “Most Recently Used” kann man Cache-Thrashing vermeiden: 7 Seiten von
|R| bleiben im Buffer.
Daher 6+20 + (6-1)*13 = 91 cache misses und 5*7 = 35 cache hits.
+
4 Bei einem B - oder ISAM-Index werden pro Indexseite n Attributwerte und n + 1
Pointer auf die unterliegenden Indexseiten gespeichert. Ein Datenbanksystem
arbeitet mit einer Seitengröße von 4 KB (4096 Bytes). Das zu indexierende Attribut ist ein Integer (8 Byte) und für den Pointer werden 4 Byte benötigt.
(a) Wie groß ist der maximale Fanout des Indexes? Begründen Sie Ihre Aussage
(z. B. mit einer Skizze).
Fanout = maximale Anzahl der Kinderknoten, also n + 1. Löse die Gleichung:
8 ∗ n + 4 ∗ (n + 1) = 4096, n = 341.3, also max. Fanout = 342.
(b) Bei einem ISAM-Index, bestimmen Sie die Höhe des entstandenen Baums
nachdem Laden von 35.000.000 Einträge.
Die unterste Ebene ist dicht besetzt und hat 35000000/341 = 102640 Knoten,
dafür werden 102640/342 = 301 Eltern gebraucht und 1 Wurzelknoten. Höhe
des Baumes = 3.
(c) Eine Tabelle wird mit einem B+ -Baum indexiert.Nach dem Laden von 35.000.000
Tupeln sind die Seiten des Baums zu etwa 2/3 gefüllt. Bestimmen und begründen Sie die Höhe des entstandenen Baums.
Generell, braucht man logF N Baumebenen, also 3. Da der Baum nur zu 2/3
gefüllt ist, entspricht es der Kapazität N = (1 + 12 ) ∗ 35000000 = 52500000.
log342 52500000 = 4
Informationssysteme
9 / 15
22. Februar 2006
Name/Matrikel-Nr.: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
E
Transaktionen
(2 + 6 + 3 + 3 Punkte)
1 Zeigen Sie an einem Beispiel-Schedule das “Dirty Read” Problem. Wie wirken
sich “Dirty-Reads” auf die Wiederherstellbarkeit (Recoverability) eines Schedules aus?
2 hr1 [x], w1 [x], r2 [x], . . . , a1 i
Dirty-Read führt zu einem cascading rollback, z.B. muss in obigen Beispiel T 2
auch abgebrochen werden. Fortgepflanztes Zurücksetzen ist im allgemeinen
nicht tolerabel weil Recoverability solcher Schedules nicht gewährleistet werden
kann.
3 Untersuchen Sie die folgenden Schedules auf Serialisierbarkeit. Listen Sie dabei alle Konflike auf und zeichnen Sie den sich daraus ergebenen Abhängigkeitsgraphen. Geben Sie, falls möglich, eine äquivalente serielle Reihenfolge der
Transaktionen an.
(a) hr2 [z], r2 [x], r3 [y], w2 [x], c2 , w1 [z], w1 [y], w3 [x], c3 , r1 [x], w1 [x], c1 i
Schedule ist serialisierbar: T2, T3, T1
Abhaengigkeiten:
e21
e23
e21
e31
e21
e21
e23
e31
e31
: r2 [z] < w1 [z]
: r2 [x] < w3 [x]
: r2 [x] < w1 [x]
: r3 [y] < w1 [y]
: w2 [x] < r1 [x]
: w2 [x] < w1 [x]
: w2 [x] < w3 [x]
: w3 [x] < r1 [x]
: w3 [x] < w1 [x]
(b) hr3 [x], r1 [x], w1 [x], r2 [z], r4[z], w1 [y], c1 , r2 [y], w3 [z], c3 , r4 [y], c4 , w2 [x], c2 i
Schedule nicht serialisierbar: mehrere Zyklen
Abhaengigkeiten:
e31
e32
e12
e12
e23
: r3 [x] < w1 [x]
: r3 [x] < w2 [x]
: r1 [x] < w2 [x]
: w1 [x] < w2 [x]
: r2 [z] < w3 [z]
Informationssysteme
10 / 15
22. Februar 2006
Name/Matrikel-Nr.: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
e43 : r4 [z] < w3 [z]
e12 : w1 [y] < r2 [y]
e14 : w1 [y] < r4 [y]
4 Wozu dient das “2-Phasen-Sperrprotokoll”?
Betrachten Sie die unten abgebildeten Sperr- und Freigabe-Strategien des 2Phasen-Sperrprotokolls.
Welche der Varianten (a)-(d) erfüllen jeweils das folgende Kriterium (mit kurzer
Begründung):
(a) Es besteht keine “Dead-lock”-Gefahr.
(b) (d)
(b) Es werden stets serialisierbare Schedules erzeugt.
alle
(c) Er werden zu jedem Zeitpunkt nicht mehr Objekte gesperrt, als notwendig.
(a)
(d) “Fortgepflanztes” Zurücksetzen kommt nicht vor.
(c) (d)
(e) Maximale Parallelität der ausgeführten Transaktionen.
(a)
5 Demonstrieren Sie die Funktionsweise des “sukzessiven” 2-Phasen-Sperrprotokolls
(Variante (a) in der Abbildung), indem Sie den Schedule aus 3 (b) um das Anfordern der Lese- und Schreibsperren (jeweils rli [x] und wli [x] für Transaktion T i
und Objekt x) und ihre Freigabe (uli [x]) erweitern.
Was für ein Problem tritt dabei auf? Abbruch welcher der blockierten Transaktionen würde die meisten Sperren freigeben?
hrl3 [x], r3 [x], rl1 [x], r1 [x], rl2 [z], r2 [z], rl4[z], r4 [z], rl2 [y], r2 [y], rl4 [y], ul4 [z], r4 [y], ul4 [y], c4 , . . .
Deadlock: T 1 wartet auf T 3 und T 2 , T 3 wartet auf T 2 , T 2 wartet auf T 3 .
Abort von T 2 würde 2 Sperren freigeben, Abort von T 1 oder T 3 jeweils nur eine.
Informationssysteme
11 / 15
22. Februar 2006
Name/Matrikel-Nr.: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
F
Data Warehousing
(6 + 3 + 1 Punkte)
1 Ein Internet-Provider will mit Hilfe der OLAP-Technologie den Datenverkehr auf
dem Webserver untersuchen. Die “rohen” Daten sollen aus der Log-Datei des
Servers gewonnen werden:
IP-Adresse
Zeitstempel
Methode
Ressource
Protokoll
Code
Bytes
134.34.57.13
13.05.2005 13:40:01
GET
/img/logo.jpg
HTTP/1
200
17883
192.11.24.15
13.05.2005 13:40:03
POST
/app/navi.php
HTTP/1
200
3242
...
...
...
...
...
...
...
Das numerische Attribut Bytes soll entlang der Dimensionen Host, Zeit, Protokoll, Ressource und Code analysiert werden.
Skizzieren Sie den Star-Schema-Entwurf des Data-Warehouses und beachten
Sie dabei folgende Anforderungen:
(a) Dimension Host besteht aus IP-Adresse, bei der zusätzlich die Zugehörigkeit zu einem Netzwerk und einem Land spezifiziert wird.
(b) Dimension Zeit speichert alle Zeiteinheiten (Sekunde, Minute usw.) als getrennte Attribute.
(c) Protokoll besteht aus den Attributen Protokoll und Methode der Logdatei.
(d) Ressource wird in Pfad, Dateiname und Dateityp aufgeteilt.
(e) Bei Code wird die zu jedem Code die dazugehörige Erläuterung mitgespeichert.
Zeigen Sie alle Primär- und Fremdschlüssel an.
Host
Code
IP_Adresse
Netzwerk
Land
Code
Kommentar
Ressource
File_Id
Pfad
Dateiname
Dateityp
Logfakten
Zeit
Id
Jahr
Monat
Tag
Stunde
Minute
Sekunde
Informationssysteme
IP_Adresse
Zeit_Id
Protokoll_Id
File_Id
Code
Bytes
Protokoll
Id
Protokoll
Methode
12 / 15
22. Februar 2006
Name/Matrikel-Nr.: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Demonstrieren Sie die Funktionsweise des OLAP-Operators CUBE, indem Sie
einen 3-dimensionalen Würfel in SQL definieren, wobei Bytes über Dateityp, Methode und Code aggregiert werden.
SELECT r.Dateityp, p.Methode, l.Code, SUM(Bytes)
FROM Logfakten l, Ressource r, Protokoll p
WHERE l.File_Id=r.File_Id AND l.Protokoll_Id=p.Id
GROUP BY CUBE (r.Dateityp, p.Methode, l.Code);
3 Aus welchen Gründen wird in Data-Warehouse-Systemen das “Star-Schema”
mit redundanten Informationen dem normalisierten “Snowflake-Schema” meist
bevorzugt?
Aus Performanzgründen: Bei einer in mehrere Tabellen zerlegte Dimension, wie
im Snowflake-Schema, müssen diese Tabellen für jede Anfrage neu gejoint werden. Im Star-Schema, dagegen, sind die Daten einer Dimension in einer Tabelle
pre-joint”. Anzahl der Joins zur Laufzeit wird dadurch minimiert. Man geht davon aus, dass die Dimensionsdaten nicht hufig modifiziert werden und dass die
pre-jointen”Daten daher länger gültig bleiben.
Informationssysteme
13 / 15
22. Februar 2006
Name/Matrikel-Nr.: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
G
Information Retrieval
(5 + 4 + 2 +3 Punkte)
1 Aus welchen zwei Parametern wird die Gewichtung eines Terms im Vektormodell
berechnet? Wie werden diese ermittelt und was drücken sie aus?
wi, j = tf i, j ∗ idf i
freqi, j
tf i, j = maxl freq
l, j
idf i = log nNi
tf - term frequency: Vorkommen des Terms i im Dokument j
freqi, j : Absolute Anzahl Vorkommnisse im Dokument j
maxl freql, j : Normalisierung, um Dokument-Größe gerecht zu werden
idf - inverted document frequency: Signifikanz eines Terms i (je seltener desto
wertvoller!) im gesamten Dokumentenraum
N: Gesamtzahl der Dokumente
ni : Zahl der Dokumente, in denen Term i vorkommt.
Division/Logarithmus: Terme, die nur in wenigen Dokumenten vorkommen, haben hoehere Relevanz.
2 Bei der Indexierung der Suchterme werden die zu indexierenden Begriffe und
ihre Menge durch Stopword-removal und Stemming transformiert. Erläutern Sie
die beiden Techniken und Ihre Auswirkung auf die Effizienz der Suche und auf
die Qualität des Ergebnisses.
(a) Stopword-removal: Viele Worte sind für die Indizierung völlig uninteressant (z.B. Artikel, Konjunktionen, Präpositionen). Diese werden Stopworte
genannt und werden bei der Generierung von Indextermen nicht berücksichtigt.
Effizienz : Durch Entfernen der Stopworte wird der Index kompakter und
schneller abfragbar. Angewandt auf die Anfrage, führt Stopword-removal
zur Reduktionen der zu suchenden Begriffe, was die Effizienz der Anfrage weiter verbessert. Qualität : Suche nach einem Stopwort-Begriff ist nicht
möglich.
(b) Stemming: Alle Ausprägungen eines Befriffe werden auf den Stamm reduziert. Effizienz : Dies führt zu einer wesentlichen Verringerung der Indexterme und beschleunigt die Suche. Qualität : Die Suche wird robuster - alle Ausprägungen des Suchterms werden gefunden. Die Menge der Treffer
wird größer.
Informationssysteme
14 / 15
22. Februar 2006
Name/Matrikel-Nr.: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Welches der zwei IR-Modelle - das Boole’sche oder das Vektormodell - liefert bei
der Exakt-Suche (“exact string matching“) eine genauere Menge der potenziellen
Treffer? Begründen Sie Ihre Aussage.
Das Boole’sche Modell liefert eine kleinere Menge der Kandidaten - nur solche
Dokumente gehören zum Ergebniss, die alle Suchterme enthalten. Das Vektormodell findet alle Dokumente mit Änlichkeit zur Anfrgae ¿ 0, also auch mit einem der Suchterme. Sortierung nach Relevanz hilft auch nicht, da bei der ExaktSuche nur das Vorhandensein eines Termes wichtig ist, nicht die Häufigkeit.
4 Die Qualität einer Suchstrategie kann über Precision und Recall bewertet werden. Definieren Sie die beiden Kenngrößen. Welche davon kann über das vom
Benutzer erhaltene Relevanz-Feedback zum Suchergebnis ermittelt werden?
Wie?
Recall ist der Anteil der relevanten Dokumente, die zu einer Anfrage von der
Retrievalmethode als relevant gefunden wurden.
Precision ist der Anteil der relevanten Dokumente an der Gesamtheit der gefundenen Dokumente.
Precision kann über das Relevanz-Feedback gewonnen werden, da die diese genau dem Nenner (relevante gefundene) in der Formel entspricht und der Zähler
(alle gefundenen) bekannt ist.
Informationssysteme
15 / 15
22. Februar 2006
Herunterladen