Eine Auswahl aus Klausuraufgaben früherer Klausuren

Werbung
Prof. Dr. Heide Faeskorn - Woyke
Fachbereich Informatik , Fachhochschule Köln, Abteilung Gummersbach
Lehr- und Forschungsgebiet : Wirtschaftsinformatik, mit den Schwerpunkten Datenbank - und Informationssysteme
Eine Auswahl aus Klausuraufgaben früherer Klausuren
19.5.2001
Aufgabe 1
Datenbank für Fahrzeugtypen
In einer Datenbank für Fahrzeugtypen sind folgende Informationen zu speichern :
•
•
•
•
Jeden PKW gibt es in verschiedenen Lackierungen und Stoffbezügen
Jede Lackierung und jeder Stoffbezug ist in der Regel für mehrere PKW - Typen verfügbar.
Für einen PKW - Typ sind nur bestimmte Lack - Stoff - Kombinationen erlaubt.
Legen Sie die Attribute der PKW - Typen, Lackierungen und Bezüge selbst fest.
a) Erstellen Sie ein ER - Diagramm ( in Krähenfußnotation) einschließlich der Attribute,
Primärschlüssel und Fremdschlüssel. Geben Sie auch die Kardinalität und Optionalität der
Beziehungen an !
b) Erzeugen Sie aus Ihren E - R - Modell ein relationales Datenbankschema !
Datenbankschema in der Form
Relation(Attribut1, Attribut2, ...) , Schlüsselattribute unterstreichen !
c) Führen Sie Ihr relationales Datenbankschema in SQL - Befehle zum Einspielen der Tabellen
über ! Primärschlüssel und Fremdschlüssel bitte durch CONSTRAINT’s darstellen !
Aufgabe 2 ( relationale Algebra)
Gegen sei die relationale Datenbank einer Bankfiliale, die Primärschlüssel sind
unterstrichen:
Bankfiliale(FilialNr, Name, Ort, Bankleitzahl)
Konto(KontoNr, FilialNr, Kontostand)
Kunde(Kundennr, Name, Adresse)
Gehoert_zu(KontoNr, KundenNr)
Ueberweisung(von_Blz, von_KontoNr, nach_BLZ, nach_KontoNr, Betrag)
Formulieren Sie die folgenden Fragen, falls möglich, in der relationalen Algebra ! Wenn eine
Abfrage nicht in der relationalen Algebra enthalten ist, geben Sie bitte eine Begründung an !
a) Geben Sie eine Liste aller Filialen mit ihren Bankleitzahlen aus ! Sortieren Sie die Liste nach
Bankleitzahlen und in zweiter Linie nach Namen !
b) Ermitteln Sie die Kontonummern und Namen aller Kunden, die ihr Konto überzogen haben !
c) Hat Fritz Müller ein Konto bei einer Bank in Gummersbach ? Falls ja, soll die Bankfiliale und
die KontoNr ausgegeben werden !
d) Geben Sie die Nummern, Namen und Gesamteinlagen (Summe über alle Kontostände) aller
Filialen in Gummersbach aus !
e) Ermitteln Sie die Nummer und Summe aller Abbuchungen aller Konten, von denen mehr als
10000 DM abgebucht wurden.
1
Prof. Dr. Heide Faeskorn - Woyke
Fachbereich Informatik , Fachhochschule Köln, Abteilung Gummersbach
Lehr- und Forschungsgebiet : Wirtschaftsinformatik, mit den Schwerpunkten Datenbank - und Informationssysteme
Aufgabe 3 ( Speicherstrukturen)
a) Erzeugen Sie einen B-Baum vom Typ 2, indem Sie nacheinander die Zahlen { 20, 19, 18, 17,
... 3,2,1 } in absteigender Reihenfolge einfügen !
b) Löschen Sie aus dem entstandenen Baum die Zahlen 12 und 20 !
Aufgabe 4 (Normalformen)
Gegeben sei eine wieder die relationale Datenbank aus Aufgabe 2 mit folgenden Relationen,
die Primärschlüssel sind unterstrichen:
Bankfiliale(FilialNr, Name, Ort, Bankleitzahl)
Konto(KontoNr, FilialNr, Kontostand)
Kunde(Kundennr, Name, Adresse)
Gehoert_zu(KontoNr, KundenNr)
Ueberweisung(von_Blz, von_KontoNr, nach_BLZ, nach_KontoNr, Betrag)
a)
b)
c)
d)
In welcher Normalform befindet sich die Datenbank ?
Welche Nachteile kann eine Überführung in die dritte Normalform haben ?
Verändern Sie das Datenbankschema so, dass es nicht mehr (3NF), aber noch (2NF) ist .
Verändern Sie das Datenbankschema so, dass es nicht mehr (2NF), aber noch (1NF) ist .
Aufgabe 5 (SQL)
Betrachten Sie die Tabellen Abteilungen und Mitarbeiter aus der Fahrrad- Datenbank, die
durch die folgenden SQL – Anweisungen erzeugt werden:
CREATE TABLE Abteilungen
(Abt_Nr
NUMBER(38) NOT NULL,
Leiter
NUMBER(38) NOT NULL,
Name
VARCHAR2(50) NOT NULL,
Ort
VARCHAR2(50));
CREATE TABLE Angestellte
(Ang_Nr
NUMBER(38) NOT NULL,
Abt_Nr
NUMBER(38) NOT NULL,
Aufgabenbeschreibung VARCHAR2(50) NOT NULL,
Beruf
VARCHAR2(50) NOT NULL,
Nachname
VARCHAR2(50) NOT NULL,
Vorname
VARCHAR2(50) NOT NULL,
Geschlecht
CHAR(1) NOT NULL,
Eintrittsdatum
DATE,
Gehalt
NUMBER(9,2) Default 0,
Abzuege
NUMBER(9,2) Default 0,
Ort
VARCHAR2(50),
Strasse
VARCHAR2(50),
Zeitstempel
DATE);
2
Prof. Dr. Heide Faeskorn - Woyke
3
Fachbereich Informatik , Fachhochschule Köln, Abteilung Gummersbach
Lehr- und Forschungsgebiet : Wirtschaftsinformatik, mit den Schwerpunkten Datenbank - und Informationssysteme
Bitte kreuzen Sie ein oder mehrere Antworten an!
1) Welche Abfrage erzeugt einen Fehler, wenn es keinen Angestellten mit Nachnamen ‘FaeskornWoyke‘ gibt ?
SELECT * FROM Angestellte;
SELECT Ang_Nr, Vorname, Nachname FROM Angestellte;
SELECT Nachname;
2) Welches Ergebnis hat die folgende Abfrage SELECT * FROM Angestellte WHERE Nachname
!= 'Weber';
Alle Zeilen und Spalten der Angestellten - Tabelle
Die Anzahl der Angestellten, deren Nachname gleich Weber ist.
Die Anzahl der Angestellten, deren Nachname nicht gleich Weber ist.
Nachnamen der Angestellten, deren Nachname nicht gleich Weber ist.
Alle Zeilen und Spalten der Angestellten Tabelle, außer derjenigen Angestellten, die den
Nachname ‘Weber‘ haben.
3) Welches Ergebnis hat die folgende Abfrage SELECT * FROM Angestellte WHERE Nachname
LIKE ‘_e%‘;
Die Nachnamen aller Angestellten, die als zweiten Buchstaben ein „e“ haben.
Die Nachnamen aller Angestellten, die als zweiten Buchstaben von hinten ein „e“ haben.
Die Nachnamen aller Angestellten, die höchsten ein „e“ haben.
Die Nachnamen aller Angestellten, die als zweiten Buchstaben kein „e“ haben.
Die Nachnamen aller Angestellten, die als zweiten Buchstaben von hinten kein „e“ haben.
4) Wenn Sie zwei Tabellen mit einem Natural-Join- Operator verknüpfen wollen, müssen Sie
eine WHERE- Klausel benutzen
die WHERE – Klausel weglassen
eine Subquery benutzen
beide Tabellen in der FROM – Klausel aufführen
die FROM – Klausel weglassen
die Tabellen über Gleichsetzung von Spalten in der WHERE – Klausel miteinander
verbinden.
5) Welcher Typ des Join- Operators wird mit der folgenden Abfrage in SQL abgebildet ? SELECT
Nachname, Ang_Nr, Abt_Nr, Name FROM Angestellte, Abteilungen;
Ein Natural - Join
ein Outer- Join
ein kartesisches Produkt
Diese Abfrage bildet keinen Join- Operator ab.
6) Welcher Typ des Join- Operators wird mit der folgenden Abfrage in SQL abgebildet ? SELECT
Nachname, Ang_Nr, Name FROM Angestellte, Abteilungen WHERE Angestellte.Abt_Nr =
Abteilungen.Abt_Nr AND Name LIKE ‘G%‘;
Ein Natural – Join
ein Outer- Join
ein kartesisches Produkt
Diese Abfrage bildet keinen Join- Operator ab.
Prof. Dr. Heide Faeskorn - Woyke
Fachbereich Informatik , Fachhochschule Köln, Abteilung Gummersbach
Lehr- und Forschungsgebiet : Wirtschaftsinformatik, mit den Schwerpunkten Datenbank - und Informationssysteme
7) Welcher Typ des Join- Operators wird mit der folgenden Abfrage in SQL abgebildet ? SELECT
Nachname, Ang_Nr, Name FROM Angestellte, Abteilungen WHERE Angestellte.Abt_Nr =
Abteilungen.Abt_Nr (+) AND Name LIKE ‘G%‘;
Ein Natural – Join
ein Outer- Join
ein kartesisches Produkt
Diese Abfrage bildet keinen Join- Operator ab.
8) Welche der folgenden SQL- Zeilen produziert einen Fehler ?
SELECT Nachname , Vorname, Name as Abteilungsname
FROM Abteilungen, Angestellte
WHERE Ort = ‘Köln‘
AND Abt_Nr = Abt_Nr
Diese Abfrage produziert keinen Fehler.
9) In welcher Komponente kann eine Unterabfrage stehen ?
SELECT - Komponente
FROM – Komponente
WHERE – Komponente
ORDER BY- Komponente
GROUP BY- Komponente
HAVING - Komponente
10) Welche der folgenden SQL- Zeilen produziert einen Fehler ?
SELECT Nachname , Vorname, Gehalt
FROM Angestellte
WHERE Ang_Nr = (SELECT Ang_Nr, Nachname
FROM Angestellte
WHERE Ort = ‘Köln‘);
Diese Abfrage produziert keinen Fehler.
11) Welche der folgenden SQL- Zeilen produziert einen Fehler ?
SELECT Nachname , Vorname, SUM(Gehalt)
FROM Abteilungen a, Angestellte b
WHERE a.Abt_Nr = b.Abt_Nr
GROUP BY Nachname
HAVING Sum(Gehalt) > 10000
ORDER BY Nachname
Diese Abfrage produziert keinen Fehler.
12) Welche der folgenden INSERT – Anweisungen erzeugt eine Zeile in der Abteilungs-Tabelle?
INSERT INTO Abteilungen (Abt_Nr 10, Name ‘EDV‘);
INSERT INTO Abteilungen (Abt_Nr, Name, Leiter) VALUES (10, ‘EDV‘, ‘Schmidt‘);
INSERT INTO VALUES (10, ‘EDV‘, ‘Schmidt‘, ‘Wiehl‘);
13) Wenn in einer UPDATE- Anweisung die WHERE – Bedingung fehlt, werden alle Zeilen
verändert
wahr
falsch
4
Prof. Dr. Heide Faeskorn - Woyke
Fachbereich Informatik , Fachhochschule Köln, Abteilung Gummersbach
Lehr- und Forschungsgebiet : Wirtschaftsinformatik, mit den Schwerpunkten Datenbank - und Informationssysteme
14) Welche Anweisung löscht den Angestellten mit der Ang_Nr 17?
DELETE Angestellte
DELETE FROM Angestellte WHERE Ang_Nr = 17
DELETE Angestellte WHERE Ang_Nr = 17
DROP FROM Angestellte WHERE Ang_Nr = 17
15) Welche der folgenden Zeilen produziert einen Fehler ?
CREATE TABLE Abteilungen
(Abt_Nr NUMBER(38) NOT NULL,
Leiter NUMBER(38) NOT NULL,
Name VARCHAR2(50) NOT NULL,
VARCHAR2(50));
16) Welche Anweisung legt eine Kopie der Angestellten – Tabelle an ?
CREATE TABLE temp SELECT * FROM Angestellte;
CREATE temp SELECT * FROM Angestellte;
CREATE TABLE temp AS SELECT * FROM Angestellte;
CREATE TABLE temp IS SELECT * FROM Angestellte;
17) Wie kann man der Abteilungstabelle ein Spalte ‘gegruendet_am‘ hinzufügen ?
ALTER TABLE Abteilungen ADD COLUMN gegruendet_am Date;
ALTER TABLE Abteilungen ADD gegruendet_am Date;
ALTER Abteilungen ADD gegruendet_am Date;
ADD COLUMN gegruendet_am Date to Abteilungen
Eine Tabelle kann überhaupt nicht nachträglich verändert werden.
18) Welche Aussagen sind für einen PL/SQL – Block richtig ?
Die DECLARE – Anweisung ist ein optionaler Bestandteil eines PL/SQL – Blockes, der am
Anfang eines Blockes steht.
Zwischen BEGIN und END stehen die eigentlichen Anweisungen. Dieser Bestandteil ist
nicht optional.
Mit EXCEPTION wird der letzte Teil eines PL/SQL – Blockes eingeleitet, der den
Fehlerbehandlungscode enthält. Dieser Bereich ist optional.
Nach BEGIN muß immer ein END folgen, und zwar vor EXECEPTION, wenn eine
Fehlerbehandlung programmiert ist.
19) Welcher Cursor- Bestandteil kann in der DECLARE – Sektion eines PL/SQL- Blockes stehen ?
%FOUND
%NOTFOUND
%ROWTYPE
%TYPE
%ISOPEN
20) Welcher Typ eines PL/SQL -Blockes liefert einen Wert zurück ?
ein Prozedur
ein Datenbanktrigger
ein Package
eine Funktion
keine von allen
5
Prof. Dr. Heide Faeskorn - Woyke
Fachbereich Informatik , Fachhochschule Köln, Abteilung Gummersbach
Lehr- und Forschungsgebiet : Wirtschaftsinformatik, mit den Schwerpunkten Datenbank - und Informationssysteme
21) Welche Metadatentabelle enthält den Source-Code einer Prozedur ?
USER_SOURCE
USER_CODE
USER_PROCEDURES
USER_OBJECTS
22) Welche Anweisung erzeugt den Output ‘Hello Wold‘ am Bildschirm ?
DBMS_OUTPUT.PUTLINE('Hello world.');
DBMS_PRINT.PUTLINE('Hello world.');
PRINT('Hello world.');
DBMS_PRINT.OUTPUT('Hello world.');
Das geht überhaupt nicht.
Aufgabe 6
SQL
Betrachten Sie die Beispieldatenbank des Fahrradherstellers Byce und Co. aus der Vorlesung.
Welche Ergebnisse liefern die folgenden fünf SELECT - Anweisungen ?
Erläutern Sie die Unterschiede !
I.
SELECT ang_nr , gehalt
FROM angestellte a
WHERE gehalt >
(SELECT avg(gehalt) FROM angestellte b
WHERE a.abt_abTNR = b.abt_abTNR);
II.
SELECT ang_nr , gehalt
FROM angestellte
WHERE gehalt >
(SELECT avg(gehalt) FROM angestellte b);
III.
SELECT ang_nr , gehalt
FROM angestellte
WHERE gehalt > all
(SELECT avg(gehalt) FROM angestellte Group by abt_abTNR);
IV.
SELECT ang_nr , gehalt
FROM angestellte
WHERE gehalt > any
(SELECT avg(gehalt) FROM angestellte Group by abt_abTNR);
V.
SELECT ang_nr , gehalt
FROM angestellte
WHERE gehalt >
(SELECT avg(avg(gehalt)) FROM angestellte Group by abt_abTNR);
6
Prof. Dr. Heide Faeskorn - Woyke
Fachbereich Informatik , Fachhochschule Köln, Abteilung Gummersbach
Lehr- und Forschungsgebiet : Wirtschaftsinformatik, mit den Schwerpunkten Datenbank - und Informationssysteme
Aufgabe 7
SQL
Betrachten Sie die Beispieldatenbank des Fahrradherstellers Byce und Co. aus der Vorlesung.
Beantworten Sie in SQL:
a) Welche Teile haben eine Bezeichnung, die mit dem Buchstaben G anfängt?
b) Geben Sie eine Liste über alle Artikel aus, mit den Attributen TNr, Bezeichnung und
Verkaufspreis, wobei die Preise um 10 % erhöht werden ! Sortieren Sie die Liste
absteigend nach den Preisen und bei gleichem Preis noch mal alphabetisch aufsteigend
nach der Bezeichnung !
c) Von welchen Teilen sind mehr als 10 Einheiten im Bestand aller Lager? (Tabelle :
Lagerbestand). Geben Sie diese Teile mit den Attributen TNR, BEZEICHNUNG und der
Summe des Bestandes über alle Lager aus !
d) Welches Teil benötigt in der Stückliste (Struktur-Tabelle) die Silberfarbe mit der TNr = 3 ?
Listen Sie diejenigen Teile auf, die dieses Teil ( TNr = 3) direkt oder indirekt in der
zweiten Stufe verwenden ! Geben Sie die Attribute TNR und Bezeichnung aus der Teile Tabelle aus und benutzen Sie einen SELECT mit UNION - Statement !
e) Auf welchen Lagern liegt ein Bestand des Rades mit der TNr = 1 ?
f) Welche Teile haben, summiert über alle Lager, einen Bestand von mehr als 100 Einheiten
?
g) Gibt es Teile, deren Bestand, summiert über alle Lager, den aus der Tabelle Teile
unterschreitet ?
h) In welchem Lager werden die meisten Artikel ( Typ = 'Artikel') gelagert ?
i) Geben Sie den durchschnittlichen Bestand je Lager aus !
j) Geben Sie die Lagernummer und den durchschnittlichen Bestand derjenigen Lager aus,
deren Durchschnittsbestand höher als 1500 Einheiten ist !
k) Geben Sie eine Liste aus über alle Teile mit TNr, Bezeichnung und den Lagern, auf denen
die Teile gelagert sind !
7
Herunterladen