Klausur Datenbanksysteme

Werbung
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
Herunterladen