Bsp: CREATE TABLE: PRIMARY KEY; FOREIGN KEY; REFERENCES

Hintergrundwissen

Was sind Primär- und Fremdschlüsseln in einem relationalen Datenbankmodell?

Primärschlüssel dienen der eindeutigen Identifizierung eines Datensatzes in einer Relation. Mithilfe von Fremdschlüsseln werden Datensätze zweier Relationen miteinander in Beziehung gesetzt.

Was bedeutet der Begriff "referentiellen Integrität"?

Die referentielle Integrität gewährleistet, dass in einer Tabelle2, die mit einer Tabelle1 in Beziehung steht, die Fremdschlüssel nur Werte annehmen können, die in der referenzierten Tabelle1 der Beziehung bereits als Attributwerte des Primärschlüssels vorhanden sind. Die Tabelle1 wird dabei häufig als Mastertabelle, Tabelle2 als Detailtabelle bezeichnet.

Es ist gegeben

Lieferant(LNr, Name, Ort)

Einige Lieferanten bieten für Bestellungen in einem begrenzten Zeitraum einen prozentualen Rabatt
auf alle Artikel an. Dies wird durch folgende Relation modelliert:

Sonderaktion(AktionsID, ^LieferantNummer, von, bis, Rabattsatz)

Aufgabe

Gebe einen SQL-Befehl zur Erstellung dieser Tabelle an.

Lösung

Lieferant(LNr, Name, Ort)
Sonderaktion(AktionsID, ^LieferantNummer, von, bis, Rabattsatz)

CREATE TABLE Sonderaktion
(
AktionsID INTEGER NOT NULL,
LieferantNummer INTEGER NOT NULL,
von DATE,
bis DATE,
Rabattsatz DECIMAL(4,2),
PRIMARY KEY (AktionsID),
FOREIGN KEY (LieferantNummer) REFERENCES Lieferant(LNr)
);

Hinweise

DECIMAL(4,2): Eine Zahl mit insgesamt 4 Ziffern mit 2 Nachkommastellen, also Zahlen zwischen -99.99 bis 99.00

PRIMARY KEY (hier den Spaltennahmen des Primärschlüssels angeben

FOREIGN KEY (Spaltennamen des Fremdschlüssels angeben und hinter REFERENCES die Tabelle(Spaltenname) worauf sich der Fremdschlüssel bezieht (meist der Primärschlüssel der anderen Tabelle)