1. AufgabenBlatt - oth

Werbung
Datenbanken
12. Aufgabenblatt
Gegeben ist die Access-Datenbank Nordwind.mdb. Es handelt sich um eine Microsoft-Access
Datenbank, die häufig unter dem Office-Paket installiert ist. Sie befindet sich häufig unter dem
Verzeichnis C:\Programme\Microsoft Office\Office10\Samples\Nordwind.mdb. Daten
bzw. SQL-Anweisungen dazu befinden sich unter Samples im Skript NordwindCS.sql. Aus diesem
Skript wurden Daten und SQL-Anweisungen in Oracle überführt (vgl. aufg12.sql).
Den Zusammenhang zwischen den Tabellen beschreibt das folgende ERM-Diagramm1:
Personal_Nr
Firmen_Nr
Personal
Versdandfirmen
1
P_B
Kunden_Code
Kunden
1
V_B
n
1
K_B
n
n
Bestellungen
1
Lieferanten_Nr
Lieferanten
Kategorie_Nr
Kategorien
B_D
L_A
K_A
n
n
Artikel
1
A_B
Artikel_Nr
n
n
Bestelldetails
An Nordwind wurde Kritik geübt.
1
2
Es fehlen die Beziehungstypen 1:1 (oder präziser c:c2) und mc:mc.
In der Tabelle Bestellung treten beliebig viele redundante, ggf. widersprüchliche Daten im
Empfänger und dessen Adressen auf
Eine vollständig erfasste Adresse findet man in nicht weniger als vier Tabellen
Muss überhaupt zwischen Lieferant und Kunden unterschieden werden?
Üblicherweise legt man den Rabatt beim Kunden an
Im Feld Vorgesetzter haben nur drei Angestellte einen Vorgesetzten.
Der Inhalt der Tabellen verstößt gegen die 1. Normalform.
Vgl. auch: http://www.schulserver.hessen.de/darmstadt/lichtenberg/SQLTutorial/db_nordwind.html
c: conditional, also möglicherweise.
1
Datenbanken
-
usw.
Es handelt sich um eine Beispielbank zum Üben. Deshalb sollte man nicht so kritisch sein und lieber
zur Praxis schreiten
1. Aufgabe: Implementierung der Nordwind-DB in Oracle
Erzeuge die Tabellen zu der Nordwind-Datenbank und fülle die Tabellen mit Daten.
Vorlage: ERM-Diagramm, NordwindCS.sql
Lösung: http://fbim.fh-regensburg.de/~saj39122/dbnew/aufgaben/aufg12/aufg12.sql
2. Aufgabe Einfache Abfragen
1) Schreibe eine Abfrage, die alle Datensaetze der Nordwind-DB mit der Lieferanten_Nr = 2 und der
Kategorie_Nr = 1 liefert.
Lösung: Es wurden keine Datensätze gefunden.
2) Schreibe eine Abfrage, die alle Artikelnamen mit deren Kategorie_Nr auflistet. Dabei soll folgender
Satz ausgegeben werden: Der Artikel X gehört zur Kategorie Y.
3) Erstelle eine Abrage, die alle Artikel ausgibt, die mit 'C', 'D' oder 'E' anfangen.
4) Erstelle eine Abfrage, die alle Artikel ausgibt, bei denen der 5. Buchstabe kein 'c' ist.
5) Erstelle eine Abfrage, die alle Artikel ausgibt, bei denen der 5.Buchstabe ein 'c' oder 'd' ist. Diese
sollen aufsteigend nach dem Artikelnamen sortiert sein.
6) Schreibe eine Abfrage, die die Spalte Ort der Kundentabelle ausgibt. Es soll keine Stadt mehrfach
auftauchen.
3. Aufgabe: Abfrage von Funktionen
1) Liste alle Lieferanten auf, die mehr als 5 Produkte liefern.
2) Liste die Lieferanten mit ihrem jeweils teuersten Artikel auf. Es sollen nur die Lieferanten angezeigt
werden, bei denen der teuerste Artikel billiger als 10.- Euro ist.
3) Liste den Nachnamen des Mitarbeiters auf, der am längsten eingestellt war.
4. Aufgabe: Datenabfragen über mehrere Tabelle
1) Welche Kunde "Kontaktperson" haben Artikel der Kategorie 'beverages' bestellt?
Benutze, soweit es moeglich ist, NATURAL JOINs.
2) Welcher Kunde hat noch nie bestellt?
Benutze einen OUTER JOIN.
3) Welche Kunden wurden bisher von Speedy Express beliefert?
Benutze INNER_JOIN und NATURAL JOIN, soweit es möglich ist.
Arbeite mit einer Hilfs-View
a) Erstellen einer Sicht
b) Abfrage über die erstellte Sicht
2
Datenbanken
4) Erstelle eine Abfrage, die rechts den Mitarbeiter und links den Vorgesetzten ausgibt. Der Chef sollte
in der Spalte Vorgesetzter BOSS zu stehen haben.
5) Schreibe eine Abfrage, die die Kontaktperson der Lieferanten ausgibt, die die Produkte 1 oder 2
oder 3 liefern.
6) Schreibe eine Abfrage, die Kundennamen, die entsprechenden Bestellungnummern und die
Namen des Angestellten, der die Bestellung bearbeitet hat, ausgibt.
3
Herunterladen