Datenbanksysteme Klausur, Studiengang Wirtschaftsinformatik Sommersemster 2016 Prof. Dr. Michael Friedrich Name: Matrikelnummer: Klausur Datenbanksysteme Sommersemster 2016 Datum: 21.07.2016 Bearbeitungszeit: 90min Maximal erreichbare Punktzahl: 90 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 7 Datenbanksysteme Klausur, Studiengang Wirtschaftsinformatik Sommersemster 2016 Prof. Dr. Michael Friedrich Name: Matrikelnummer: 1 Grundlagen (12 Punkte) ........................................................................ 2 2 Indexe (12 Punkte) .............................................................................. 2 3 Welche Arten von Schlüsseln kennen Sie? Erläutern Sie die einzelnen Schlüssel kurz. (8 Punkte) ........................................................................................ 3 4 Transaktionen (13 Punkte) .................................................................... 3 5 Normalisierung (8 Punkte) ..................................................................... 3 6 Warenlager (10 Punkte) ........................................................................ 4 7 Erstellen Sie die Relationen aus folgendem ER-Diagramm: (14 Punkte) ....... 6 8 Erstellen Sie ein ER-Modell (13 Punkte) ................................................... 7 1 Grundlagen (12 Punkte) 1.1 Was ist ein Kreuzprodukt? (2 Punkte) Die Verbindung aller Tupel aus einer Relation mit allen Tupeln aus der zweiten Relation. 1.2 Was ist ein Outer Join? (3 Punkte) Verbindung zweier Relationen bei denen es nicht unbedingt einen Join Partner geben muss. Es werden anstelle eines Join Partners dann NULL Werte eingefügt. 1.3 Erläutern Sie die Begriffe DB, DBS und DBMS. (3 Punkte) DB Strukturierte Daten DBMS Software zum Management von DBs DBS = DBMS + DB 1.4 Erläutern Sie die Begriffe DDL und DML (4 Punkte). 2 Indexe (12 Punkte) 2.1 Wie verändert ein Index das Ergebnis einer SQL Query? (2 Punkte) gar nicht. Es darf auch keine Änderung der Ergebnismenge statt finden. Laufzeit kann anders sein. 2.2 Ein Foreign Key referenziert meistens einen Primary Key einer anderen Relation. Warum ist das gut? Was muss man beachten, wenn die Zielspalte des FK kein PK ist? (4 Punkte) PK hat Index, daher kann der Constraint beiim Einfügen und Update schnell geprüft werden. Index auf der Zielspalte des FK anlegen. Seite 2 von 7 Datenbanksysteme Klausur, Studiengang Wirtschaftsinformatik Sommersemster 2016 Prof. Dr. Michael Friedrich Name: Matrikelnummer: 2.3 Ihre Datenbankanwendung ist langsam. Wie wählen Sie optimale Kandidaten für Indexe aus und warum legen Sie nicht auf jede Spalte der Tabellen einen Index? (6 Punkte) Index nur auf Spalten, die 1. Bei Anfragen oder Joins verwendet werden und 2. sich bzgl. Inhalt eigenen (Selektivität, möglichst nahe an unique). 3 4 Indexe benötigen Speicherplatz und müssen bei Insert update delete gepflegt werden. Welche Arten von Schlüsseln kennen Sie? Erläutern Sie die einzelnen Schlüssel kurz. (8 Punkte) Superschlüssel Schlüsselkandidat Primärschlüssel Alternativschlüssel Fremschlüssel Transaktionen (13 Punkte) 4.1 Erläutern Sie den Begriff ACID (8 Punkte) Atomicity Consistency Isolation Durability 4.2 Was machen die Befehle commit und rollback? (2 Punkte) 4.3 Was ist ein Deadlock? (3 Punkte) Zwei Transaktion warten auf Ressourcen der jeweils anderen Transaktion. Die angeforderte Ressource wird aber auch von der jeweils anderen bereits gesperrt. 5 Normalisierung (8 Punkte) Gegeben sei folgende Tabelle. Lösen Sie die problematischen Konstrukte auf. Das neue Schema reicht aus. Sie müssen nicht die Inhalte übertragen. Denken Sie an die Fremdschlüssel! Artikel Name Vorname Straße Hausnummer PLZ Pan Peter Traumgasse 3 Pan Peter Traumgasse Pan Peter Panther Rosa Rot Bestellung Artikel Menge Preis 99999 Nirgendwo 1 1234 1 1.99 3 99999 Nirgendwo 1 2345 1 1.99 Traumgasse 3 99999 Nirgendwo 1 3456 1 1.99 Elisenstraße 33 11111 Blaustein 2 1234 2 1.99 Seite 3 von 7 Ort Datenbanksysteme Klausur, Studiengang Wirtschaftsinformatik Sommersemster 2016 Prof. Dr. Michael Friedrich Name: Matrikelnummer: Bestellungen KNR Bestellung Artikel Menge 1 1 1234 1 1 1 2345 1 1 1 3456 1 2 2 1234 2 Kunden KNR Name Vorname Straße Hausnummer PLZ 1 Pan Peter Traumgasse 3 99999 Nirgendwo 2 Panther Rosa Rot Elisenstraße 33 11111 Blaustein Artikel Artikel Preis 1234 1.99 2345 1.99 3456 1.99 Jede Tabelle 2 Punkte) FK: (2 Punkte) Bestellungen(KNR) -> Kunden(KNR) Bestellungen(Artikel) -> Artikel(Artikel) Eventuell auch noch PLZ und Ort normalisieren (+2 Punkte) 6 Warenlager (10 Punkte) Gegeben seien folgende Statements um Tabellen an zu legen. Seite 4 von 7 Ort Datenbanksysteme Klausur, Studiengang Wirtschaftsinformatik Sommersemster 2016 Prof. Dr. Michael Friedrich Name: Matrikelnummer: CREATE TABLE STORAGE(id NUMBER PRIMARY KEY, description NVARCHAR2(100)); CREATE TABLE stock(id NUMBER, place NUMBER REFERENCES STORAGE (id), amount NUMBER, PRIMARY KEY (id,place)); INSERT INTO STORAGE VALUES (1,'Lager 1'); INSERT INTO STORAGE VALUES (2,'Lager 2'); INSERT INTO stock VALUES (123,1,25); INSERT INTO stock VALUES (123,2,10); INSERT INTO stock VALUES (234,2,10); INSERT INTO stock VALUES (345,1,5); COMMIT; 6.1 Schreiben Sie eine SQL Abfrage, die die Beschreibung des Lagerplatzes (storage) und die dort gelagerte Gesamtanzahl an Artikeln aus gibt. (4 Punkte) SELECT description, SUM(amount) FROM STORAGE INNER JOIN stock ON (stock.place = storage.id) GROUP BY storage.id, description; 6.2 Welche Indexe sind bei obigen Tabellen vorhanden und warum? (4 Punkte) PK Indexe sonst keine Zur effizienten Prüfung auf Unique, ansonsten müsste bei jedem Insert / Update ein full table scan gemacht werden. 6.3 Beschreiben sie den Typ der folgenden Unterabfrage (2 Punkte): SELECT * FROM STOCK WHERE amount = (SELECT MAX(amount) FROM STOCK); skalare, unkorrelierte Unteranfrage Seite 5 von 7 Datenbanksysteme Klausur, Studiengang Wirtschaftsinformatik Sommersemster 2016 Prof. Dr. Michael Friedrich Name: Matrikelnummer: 7 Erstellen Sie die Relationen aus folgendem ER-Diagramm: (14 Punkte) Datentypen können weggelassen werden. Denken Sie an die Foreign Keys. Lösen Sie eventuell unnötige Relationen auf. Name ID MatrikelNR M Prof Student Note Name Semester N 1 schreibt prüft M N Projektarbeit ID Prof = {ID, Name) Projektarbeit = {ID, Titel, Prof, Note); Student = {Matrikelnummer, Name, Semester } schreibt = {Matrikelnummer, PAID} FK Projektarbeit(Prof) -> Prof(ID) FK schreibt(PAID) -> Projektarbeit(ID) FK schreibt(Matrikelnummer) -> Student(Matrikelnummer) Seite 6 von 7 Titel Datenbanksysteme Klausur, Studiengang Wirtschaftsinformatik Sommersemster 2016 Prof. Dr. Michael Friedrich Name: Matrikelnummer: 8 Erstellen Sie ein ER-Modell (13 Punkte) Erstellen Sie ein ER-Diagramm mit Kardinalitäten aus folgenden Informationen. Es handelt sich um die Grundlagen einer Terminverwaltung: Termine haben eine Uhrzeit, eine Beschreibung und eine Dauer. Jeder Termin ist mindestens einer Person zugeordnet. Jede Person kann mehrere Termine haben. Personen werden durch ihre Personalnummer identifiziert und haben auch Namen und Raumnummer. Terminen können auch weitere Ressourcen (z.B. Raum oder Beamer) zugeordnet sein. Ressourcen können gleichzeitig immer nur einem Termin zugeordnet sein. Ressourcen haben eine ID und eine Beschreibung. Entitytyp 3 Punkte, Beziehungstyp 2 Punkte Personal nr Uhrzeit Person Raumnr M N hat N Name benötigt Ressource Beschrei bung Termin M ID Seite 7 von 7 Dauer Beschrei bung ID