Sie sind auf Seite 1von 2

Praktikum Datenbanken 1

Andreas Heß, Hochschule Furtwangen

Praktikum 1: Datenbankentwurf und Einführung in SQL, 30.03.2011


Abgabetermin ist der 06.04.2011 um 19 Uhr, also nach dem zweiten Präsenzpraktikum.

Aufgabe 1
Setzen Sie das E/R-Modell für die e-Commerce-Beispieldatenbank ins relationale Modell
(Tabellen) um. Das E/R-Modell finden Sie im Beiblatt. Bezüglich im E/R-Modell nicht genau
spezifizierter Sachverhalte haben Sie hier im Praktikum Gestaltungsfreiheit, in einem realen Projekt
sollten Sie das natürlich mit Ihrem Auftraggeber besprechen. Dokumentieren und begründen Sie
eventuelle Änderungen oder Erweiterungen, die Sie vorgenommen haben. Bedenken Sie auch
Primär- und Fremdschlüssel und Datentypen.

Aufgabe 2
Setzen Sie das relationale Modell aus Aufgabe 1 in konkrete SQL-DDL-Statements um. Bearbeiten
Sie die Aufgabe zunächst auf dem Papier.

Aufgabe 3
Installieren Sie ein DBMS und erstellen Sie eine Datenbank.
Sie können Apache Derby http://db.apache.org/derby/ verwenden. Installationsvoraussetzung ist
Java. Wahlweise können Sie auch MySQL verwenden.
Geben Sie die Statements aus Aufgabe 2 ein. Anschließend fügen Sie beliebige Beispieldaten in die
Datenbank ein und lesen Sie sie wieder aus. Führen Sie auch Updates und Löschungen durch.
Dokumentieren Sie Ihre Experimente. Versuchen Sie dabei auch, inkonsistente Zustände
herbeizuführen. Was beobachten Sie?
Hinweise
Surrogatschlüssel
Bedenken Sie, dass es manchmal günstig sein kann, künstliche Primärschlüssel, sogenannte
Surrogatschlüssel, einzuführen. Üblicherweise werden für solche künstlichen Schlüssel willkürliche
oder automatisch generierte Zahlen verwendet. Beachten Sie dies bei der Festlegung des Datentyps.

Zusammengesetzte Schlüssel
Die Syntax für CREATE-Anweisungen mit zusammengesetzten Schlüsseln wurde in der Vorlesung
noch nicht behandelt. Die Anweisungen sehen wie im folgenden Beispiel aus:
CREATE TABLE beispieltabelle_primaer (
! schluesselspalte_eins ! INTEGER,
! schluesselspalte_zwei! INTEGER,
! weitere_beispielspalte! VARCHAR(100) NOT NULL,
! PRIMARY KEY (schluesselspalte_eins, schluesselspalte_zwei)
);

CREATE TABLE beispieltabelle_fremd (


! schluesselspalte_eins ! INTEGER,
! schluesselspalte_zwei! INTEGER,
! weitere_beispielspalte! VARCHAR(100) NOT NULL,
! FOREIGN KEY (schluesselspalte_eins, schluesselspalte_zwei)
! ! REFERENCES beispieltabelle_primaer
);

Beachten Sie, dass PRIMARY KEY automatisch NOT NULL impliziert, FOREIGN KEY jedoch
nicht. Überlegen Sie, welche Bedeutung es haben könnte, wenn Sie NULL in FOREIGN KEY-
Spalten erlauben.

Benennung von Fremdschlüsseln


Fremdschlüssel-Spalten müssen nicht den gleichen Namen wie die Primärschlüssel-Spalten, auf die
sie sich beziehen, haben. Wenn Sie die Beziehungen zwischen den Tabellen „Wohnsitz“ und
„Bestellung“ modellieren, werden Sie dies möglicherweise nützlich finden.

Das könnte Ihnen auch gefallen