Quick Ref.
Functions
date
number
string
Data Types
date
number
string

Schneider-Datenbank

Aufgaben:

ER-Diagramm für die Schneider-Datenbank:

ER-Diagramm für die Schneider-Datenbank

SQL-Skripte für die Datenbank.

Beispiele für Abfragen

0a. Die zentrale Tabelle der Datenbank ist order_line - jedes bestellte Kleidungsstück entspricht einer Zeile in dieser Tabelle. Viele Spalten in dieser Tabelle sind Referenzen auf andere Tabellen.

Results
Die Spalten der Tabelle order_line haben folgende Bedeutung:
order_ref
Diese Spalte ist ein Fremdschlüssel zur Tabelle dress_order. Über die Tabelle dress_order können Informationen wie das Bestelldatum und die Kundennummer zu einem bestimmten Kleidungsstück ermittelt werden.
line_no
Die Spalte wird benötigt, um unterschiedliche Posten derselben Bestellung zu unterscheiden - z.B. hat Bestellnummer 5 drei Posten (=line_no) - 1, 2 und 3.
ol_style
Verweist auf das bestellte Kleidungsstück, z.B. verweist ol_style = 1 auf Hosen. Um das entspr. Kleidungsstück zu ermitteln, ist ein Join zur Tabelle garment (Kleidung) erforderlich.
ol_size
Hiermit wird die Kleidergröße des bestellten Stückes angegeben. Die Größe ist wichtig, um herauszufinden, wieviel Material zur Herstellung benötigt wird. Über die Tabelle quantities (Mengen) kann ermittelt werden, daß für Hosen (style = 1) der Größe 8 2,7 Meter benötigt werden, während man für Hosen der Größe 12 2,8 Meter benötigt.
ol_material
Zu jeder Bestellung wird das zu verwendende Material festgelegt. Diese Spalte stellt einen Join zur Tabelle material her, um eine Beschreibung oder die Kosten pro Meter zu ermitteln. Material 1 ist z.B. Seide, schwarz und kostet £7 pro Meter.
0b. Ein Beispiel für einen Join:

Um aus den Zahlen in order_line sinnvolle Werte zu erhalten, müssen Joins zu anderen Tabellen hergestellt werden. Um z.B. auf die Beschreibungen der Materialien zuzugreifen, ist ein Join zur Tabelle material erforderlich.

Hierzu wird die Tabelle material in die FROM-Klausel und die Join-Bedingung ebenfalls in die FROM- oder alternativ in die WHERE-Klausel eingetragen.


Results

Um die Join-Bedingung zwischen order_line und material zu finden, hilft ein Blick auf die folgende CREATE-Anweisung für die Tabelle order_line. Hier gibt es eine Zeile, die angibt, daß ol_material die Tabelle material referenziert (REFERENCES material). Die Referenz wird dabei zum Primärschlüssel der Tabelle material hergestellt.

CREATE TABLE order_line (
  order_ref  INTEGER	NOT NULL REFERENCES dress_order,
  line_no    INTEGER	NOT NULL,
  ol_style   INTEGER	REFERENCES garment,
  ol_size    INTEGER	NOT NULL,
  ol_material INTEGER	REFERENCES material,
  PRIMARY KEY (order_ref, line_no),
  FOREIGN KEY (ol_style, ol_size) REFERENCES quantities
);

Hinweis: Die Angabe der Join-Bedingung in der WHERE-Klausel funktioniert unter jedem Datenbanksystem. Alternativ kann auch die Notation nach ANSI-Standard verwendet werden, d.h. die Bedingung wird mittels JOIN-Klausel wird komplett in der FROM-Klausel angegeben: FROM order_line JOIN material ON order_line.ol_material = material.material_no

0c. Um die Beschreibung eines Kleidungsstückes zu erhalten, muß eine Join zur Tabelle garment hergestellt werden. Die Join-Bedingung besteht darin, daß ol_style in order_line mit der Spalte style_no in garment übereinstimmt.

Results
0d. Werden die Beschreibung und das Material eines Kleidungsstückes benötigt, können die Tabellen material und garment mit der Tabelle order_line verbunden werden. Die Join-Bedingungen werden dabei mit "AND" kombiniert.

Results
0e. In der Tabelle quantities ist gespeichert, wieviel Material für jedes Kleidungsstück für jede verfügbare Größe benötigt wird. Der Join zwischen den Tabellen order_line und quantities benötigt zwei Spalten. Das ist nötig, da quantities einen zusammengesetzter Primärschlüssel hat.

Results
0f. Kunden geben Bestellungen auf - jede Bestellung enthält mehrere Zeilen - jede Zeile der Bestellung bezieht sich auf ein Kleidungsstück:

Results