Suche…


Erstellen einer Tabelle mit einem Fremdschlüssel

In diesem Beispiel haben wir eine vorhandene Tabelle, SuperHeros .

Diese Tabelle enthält eine Primärschlüssel- ID .

Wir werden eine neue Tabelle hinzufügen, um die Kräfte jedes Superhelden zu speichern:

CREATE TABLE HeroPowers
(
    ID int NOT NULL PRIMARY KEY,
    Name nvarchar(MAX) NOT NULL,
    HeroId int REFERENCES SuperHeros(ID)
)

Die Spalte HeroId ist ein Fremdschlüssel für die Tabelle SuperHeros .

Fremdschlüssel erklärt

Fremdschlüsseleinschränkungen stellen die Datenintegrität sicher, indem erzwingt, dass Werte in einer Tabelle mit Werten in einer anderen Tabelle übereinstimmen müssen.

Ein Beispiel, wo ein Fremdschlüssel benötigt wird, ist: In einer Universität muss ein Kurs zu einer Abteilung gehören. Code für dieses Szenario lautet:

CREATE TABLE Department (
    Dept_Code        CHAR (5)     PRIMARY KEY,
    Dept_Name        VARCHAR (20) UNIQUE
);

Fügen Sie Werte mit der folgenden Anweisung ein:

INSERT INTO Department VALUES ('CS205', 'Computer Science');

Die folgende Tabelle enthält die Informationen zu den Fächern der Informatikbranche:

CREATE TABLE Programming_Courses (
    Dept_Code       CHAR(5),
    Prg_Code        CHAR(9) PRIMARY KEY,
    Prg_Name        VARCHAR (50) UNIQUE,
    FOREIGN KEY (Dept_Code) References Department(Dept_Code)
);

(Der Datentyp des Fremdschlüssels muss mit dem Datentyp des referenzierten Schlüssels übereinstimmen.)

Die Dept_Code für die Spalte Dept_Code lässt Werte nur dann zu, wenn sie bereits in der referenzierten Tabelle, Department . Das bedeutet, wenn Sie versuchen, die folgenden Werte einzufügen:

INSERT INTO Programming_Courses Values ('CS300', 'FDB-DB001', 'Database Systems');

Die Datenbank wird einen Fehler durch einen CS300 , da CS300 nicht in der Department . Wenn Sie jedoch einen Schlüsselwert versuchen, der vorhanden ist:

INSERT INTO Programming_Courses VALUES ('CS205', 'FDB-DB001', 'Database Systems');
INSERT INTO Programming_Courses VALUES ('CS205', 'DB2-DB002', 'Database Systems II');

dann erlaubt die Datenbank diese Werte.

Ein paar Tipps zur Verwendung von Fremdschlüsseln

  • Ein Fremdschlüssel muss auf einen UNIQUE-Schlüssel (oder einen Primärschlüssel) in der übergeordneten Tabelle verweisen.
  • Die Eingabe eines NULL-Werts in eine Fremdschlüsselspalte verursacht keinen Fehler.
  • Fremdschlüsseleinschränkungen können auf Tabellen in derselben Datenbank verweisen.
  • Fremdschlüsseleinschränkungen können auf eine andere Spalte in derselben Tabelle verweisen (Selbstreferenz).


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow