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