Datenbanksysteme Klausur, Studiengang Wirtschaftsinformatik Sommersemester 2014 Prof. Dr. Michael Friedrich Name: Matrikelnummer: Klausur Datenbanksysteme Sommersemester 2014 Datum: 22.07.2014 Bearbeitungszeit: 90min Maximal erreichbare Punktzahl: ?? Tragen Sie auf jedem von Ihnen bearbeiteten Aufgabenblatt ihren Namen und ihre Matrikelnummer ein! Nur Blätter mit Ihren Namen und Ihrer Matrikelnummer werden bewertet! Verwenden Sie einen blauen oder schwarzen Stift — keinen Bleistift und keinen Rotstift! Bitte notieren Sie Ihre Antworten ausschließlich auf dem Aufgabenblatt! Bei Bedarf benutzen Sie die Rückseite! Bei Bedarf stehen zusätzliche Blätter bei der Aufsicht bereit. Für Skizzen und Entwürfe steht ebenfalls die Rückseite zur Verfügung. Entwürfe, die nicht gewertet werden sollen, sind durchzustreichen. Bei jeder Aufgabe steht jeweils die Anzahl der Punkte, die für diese Aufgabe vergeben werden. Die Aufgaben sind zufällig angeordnet und demnach nicht thematisch nach Vorlesungsinhalten gruppiert. Viel Glück und viel Erfolg Seite 1 von 8 Datenbanksysteme Klausur, Studiengang Wirtschaftsinformatik Sommersemester 2014 Prof. Dr. Michael Friedrich Name: Matrikelnummer: 1 Grundlagen (11 Punkte) 1.1 Was ist der Unterschied zwischen den Begriffen Datenbank, Datenbankmanagementsystem und Datenbanksystem? (3 Punkte) DB = strukturierte Daten DBMS = Software zur Verwaltung strukturierter Daten DBS = DBMS + DB 1.2 Was ist ein Primärschlüssel und wie hängt er mit dem Begriff Superschlüssel zusammen? (4 Punkte) Fragenkatalog ein Primärschlüssel ist ein minimaler (bzgl. der Attribute) Schlüssel aus der Menge Superschlüssel. 2 D.h. in Superschlüssel sind alle Kombinationen die eine Zeile einer Relation /Tabelle eindeutig beschrieben. 2 Aus dieser Menge werden die minimalen Schlüssel als Schlüsselkandidaten bestimmt. Aus diesen Schlüsselkandidaten wird ein Primärschlüssel gewählt. 1.3 Was ist der Unterschied zwischen DDL und DML? (4 Punkte) Fragenkatalog DDL = Data Definition Language = Beschreibung der Schemagenerierung und Änderung (Datenstruktur) 2 DML = Data Manipulation Language = Änderung der DB (Dateninhalte) Entity-Relationship-Modell (35 Punkte) 2.1 Zeichnen Sie ein Entity-Relationship-Modell (20 Punkte) Sie sollen ein ER-Modell für eine Bibliotheksverwaltung für einen Bibliotheksverbund erstellen. Geben Sie auch die Kardinalität an. Orientieren Sie sich bei dem Entwurf an folgenden Informationen: Es gibt mehrere Bibliotheken in dem Verbund, die über ihren Namen identifiziert werden. Eine Bibliothek hat viele Ausleihmedien. Ein Ausleihmedium kann nur von einem Nutzer gleichzeitig ausgeliehen sein. Ein Ausleihmedium hat eine im Verbund eindeutige ID und einen Namen. Ausleihmedien sind Medien mit ISBN Nummern, Name und Typ. Es kann mehrere Ausleihmedien eines Mediums mit einer ISBN Nummer geben. Nutzer können mehrere Ausleihmedien ausleihen und sind durch ihre Kundennummer eindeutig identifizierbar. Außerdem hat ein Nutzer auch einen Namen. Ein Nutzer kann Kunde mehrerer Bibliotheken aus dem Verbund sein. Eine Bibliothek hat mehrere Nutzer. Seite 2 von 8 Datenbanksysteme Klausur, Studiengang Wirtschaftsinformatik Sommersemester 2014 Prof. Dr. Michael Friedrich Name: Matrikelnummer: erd ist Name ID hat Bibliothek Ausleihmedium N 1 N N N Name ist ausgeliehen ist Kunde 1 M ISBN 1 Medium Nutzer NAME Name Kundennummer Typ 2.2 Sie haben folgendes ER Modell entwickeln Sie daraus eine Tabellenstruktur für DBMS (keine SQL bzw. DDL Befehle). Als Schreibweise nutzen sie die Relationenschreibweise oder beschreiben Sie die Tabellenköpfe. Denken Sie an die Namen, Datentypen, Schlüssel und Fremdschlüssel. (15 Punkte) erd Stammbaum ID von Land bis Strasse Adresse wohnt M Hausnummer PLZ Geburtsdatum Ort N ist Vater von ID Person ist Mutter von Seite 3 von 8 Datenbanksysteme Klausur, Studiengang Wirtschaftsinformatik Sommersemester 2014 Prof. Dr. Michael Friedrich Name: Matrikelnummer: 3 DB-Schema (6 Punkte) 3.1 Was passiert, wenn ein bestimmtes Attribut in einer Tabelle Unique ist? Was muss die DB beim Einfügen überprüfen? ( 3 Punkte) Fragenkatalog Werte in dieser Spalte dürfen nicht doppelt vorkommen Beim Einfügen prüft die DB, ob es bereits Zeilen in der Tabelle gibt, für die der Wert des Attributs gleich dem einzufügenden ist. Dazu wird automatisch ein Index angelegt, da die Suche nach Werten in der Spalte deutlich schneller läuft. 3.2 Warum muss man beim Löschen von Tabellen Constraints beachten? Welches Problem könnte auftreten? (3 Punkte) Fragenkatalog Constraints können verletzt werden, wenn eine Tabelle gelöscht wird, die von einem FK Constraint referenziert wird. Mit drop Table Cascade Constraints wird sowohl die Tabelle, als auch alle abhängigen Constraints gelöscht. Seite 4 von 8 Datenbanksysteme Klausur, Studiengang Wirtschaftsinformatik Sommersemester 2014 Prof. Dr. Michael Friedrich Name: Matrikelnummer: 4 SQL (19 Punkte) 4.1 Welche Mengenoperationen stellt SQL zur Verfügung? Erläutern Sie auch deren Semantik. (6 Punkte) Fragenkatalog Union Intersect except 4.2 Was ist der Unterschied zwischen WHERE und HAVING? (2 Punkte) Fragenkatalog Where ist eine Einschränkung der Ergebnismenge, Gruppierungsfunktionen können hier nicht verwendet werden. Having ist die Einschränkung für Gruppierungsfunktionen 4.3 Beim Ausführen des INSERT INTO Befehls soll sich die ID (Primary Key) automatisch um 1 erhöhen. Wie heißt das Konstrukt, mit welchen sich dies automatisch realisieren lässt und was sind seine Eigenschaften? (3 Punkte) Fragenkatalog Sequence Gibt transaktionssicher beim Aufruf von NEXTVAL eine neue Nummer aus. Lücken können auftreten aber keine doppelten Werte. 4.4 Was ist der Unterschied zwischen INNER JOIN und OUTER JOIN? (4 Punkte) Fragenkatalog inner joins benötigen zu jeder Zeile in einer Tabelle mindestens einen Join Partner (Zeile) aus der anderen Tabelle outer joins füllen die Ergebnismenge entsprechend mit NULL Werten, falls sie keinen Join Partner finden. 4.5 Ergebnisse bestimmen (4 Punkte) Was können Sie zu den Ergebnissen der letzten beiden Statements sagen? Statement Ergebnis select count(*) from Table1; 35 select count(*) from Table2; 42 select count(*) from Table1 t1 inner join Table2 t2 on (t1.x = t2.y); select count(*) Seite 5 von 8 Datenbanksysteme Klausur, Studiengang Wirtschaftsinformatik Sommersemester 2014 Prof. Dr. Michael Friedrich Name: Matrikelnummer: from Table1 t1 left outer join Table2 t2 on (t1.x = t2.y); 5 Abfragen ( 8 Punkte) CREATE TABLE ARTIKEL ( artikelnummer NUMBER PRIMARY KEY, name VARCHAR2(255)NOT NULL, ek NUMBER NOT NULL , vk NUMBER NOT NULL, bestand NUMBER DEFAULT 0 NOT NULL ); CREATE TABLE KUNDE ( kundennummer NUMBER PRIMARY KEY, name VARCHAR(255) NOT NULL ); CREATE TABLE BESTELLUNG ( bestellnummer NUMBER PRIMARY KEY, datum TIMESTAMP DEFAULT CURRENT_TIMESTAMP, kundennummer NUMBER REFERENCES KUNDE ); CREATE TABLE POSITION ( bestellnummer NUMBER REFERENCES BESTELLUNG, artikelnummer NUMBER REFERENCES ARTIKEL, menge NUMBER NOT NULL, PRIMARY KEY (bestellnummer, artikelnummer) ); 5.1 Was macht folgendes lauffähiges Statement? (5 Punkte) SELECT NAME, kundensumme / TOTAL * 100 FROM Seite 6 von 8 Datenbanksysteme Klausur, Studiengang Wirtschaftsinformatik Sommersemester 2014 Prof. Dr. Michael Friedrich Name: Matrikelnummer: (SELECT KUNDE.NAME, SUM(MENGE * VK) AS kundensumme, s.TOTAL FROM ARTIKEL, POSITION, BESTELLUNG, KUNDE, (SELECT SUM(menge * vk) AS TOTAL FROM POSITION INNER JOIN ARTIKEL ON (ARTIKEL.ARTIKELNUMMER = POSITION.ARTIKELNUMMER) ) s WHERE POSITION.ARTIKELNUMMER = ARTIKEL.ARTIKELNUMMER AND KUNDE.KUNDENNUMMER = BESTELLUNG.KUNDENNUMMER AND POSITION.BESTELLNUMMER = BESTELLUNG.BESTELLNUMMER GROUP BY KUNDE.KUNDENNUMMER, KUNDE.NAME, s.TOTAL ); Berechnung des % Anteils eines jeden Kunden am Gesamtverkauf 5.2 Welche Bedeutung hat das Ergebnis folgender Abfrage? (3 Punkte) SELECT COUNT(*), ARTIKEL.ARTIKELNUMMER FROM POSITION, ARTIKEL WHERE POSITION.ARTIKELNUMMER = ARTIKEL.ARTIKELNUMMER GROUP BY ARTIKEL.ARTIKELNUMMER, ARTIKEL.BESTAND HAVING count(*) > ARTIKEL.BESTAND; Alle Artikelnummern mit Summe der bestellten Artikel bei denen die Bestellungen den Bestand übersteigen. 6 Indexe (10 Punkte) 6.1 Was sind die Vor- und Nachteile von Indexen. (4 Punkte) Vorteile a) Schnellerer Zugriff bei SELECT b) Einfacherer JOIN Nachteile a) Speicherplatzverbrauch b) Langsamer bei Insert, Update und Delete 6.2 Wie kann ich erkennen, ob ein Index in einer SQL-Anfrage (SELECT) wirklich vom DBS verwendet wird? (2 Punkte) Im Explain Plan wird angezeigt, welche Datenbankobjekte verwendet werden. 6.3 Auf welchen Spalten sollte man einen Index setzen? (4 Punkte) Fragenkatalog Möglichst gut verteilte Daten Einschränkungen über der Spalte (where) Seite 7 von 8 Datenbanksysteme Klausur, Studiengang Wirtschaftsinformatik Sommersemester 2014 Prof. Dr. Michael Friedrich Name: Matrikelnummer: 7 Joins über diese Spalte Transaktionen (11 Punkte) 7.1 Nennen Sie die 4 Isolation Level und erklären Sie kurz ihre Bedeutung (8 Punkte): Dirty Read: Alles kann gelesen werden Read Committed: Nur Daten von anderen Transaktionen, die bereits mit comit fest geschrieben wurden können gelesen werden. Repeatable Read: Wenn in einer Transaktion einmal ein Wert gelesen wurde, dann kann er immer wieder gelesen werden und gibt das gleiche Ergebnis zurück Serializable: Die Ergebnismenge einer Abfrage (Sum Count) ändert sich innerhalb einer Transaktion nicht 7.2 Was ist ein Deadlock und wie wird er aufgelöst? (3 Punkte) Verklemmung = mind. 2 Transaktionen warten gegenseitig auf Ressourcen DBMS erkennt Deadlocks und benachrichtigt nach einem Timeout eine der beteiligten Transaktionen. 1. Erklären Sie den Unterschied einer korrelierten Unteranfrage zu einer nicht korrelierten. 2. Was ist der Unterschied zwischen einer skalaren und einer nicht-skalaren Unterabfrage? 3. Wozu dient die Klausel "default" beim "Create Table" Befehl? 4. Was passiert, wenn man die Variable Semester mit dem Wert 5 in eine Tabelle schreiben möchte und diese folgende Check-Klausel beinhaltet "check(Semester>5) ? 5. Was ist der Unterschied zwischen USER_TABLES, ALL_TABLES und DBA_TABLES? 6. Was ist eine Aggregationsfunktion? Nennen sie 3 Beispiele 7. Was versteht man unter einem Kreuzprodukt zwischen 2 Tabellen? 8. Was versteht man unter Meta-Daten eines DBS? Seite 8 von 8