SQL > Tabellenbearbeitung > Fremdschlüssels 

Ein Fremdschlüssel ist ein Feld (oder mehrere Felder), das auf den Primärschlüssel einer anderen Tabelle verweist. Zweck des Fremdschlüssels ist es, die referentielle Integrität der Daten sicherzustellen. Mit anderen Worten, es sind nur Werte zulässig, die auch für die Datenbank vorgesehen sind.

Nehmen wir zum Beispiel an, es liegen zwei Tabellen vor, eine CUSTOMER-Tabelle mit allen CUSTOMER daten und eine ORDERS-Tabelle mit allen CUSTOMER aufträgen. Die Bedingung lautet nun, dass alle Aufträge einem bereits in der CUSTOMER-Tabelle verzeichneten CUSTOMER zugewiesen sein müssen. In diesem Fall platzieren wir einen Fremdschlüssel in die ORDERS-Tabelle und setzen ihn in Bezug zum Primärschlüssel der CUSTOMER-Tabelle. Auf diese Weise ist sichergestellt, dass alle Bestellungen in der ORDERS-Tabelle einem CUSTOMER in der CUSTOMER-Tabelle zugeordnet sind. Mit anderen Worten, die ORDERS-Tabelle kann keine Daten zu einem CUSTOMER enthalten, der nicht in der CUSTOMER-Tabelle aufgeführt ist.

Die beiden Tabellen sind wie folgt strukturiert:

Tabelle CUSTOMER

 Spalten Name   Merkmal 
 SID   Primärschlüssels 
 Last_Name   
 First_Name   

Tabelle ORDERS

 Spalten Name   Merkmal 
 Order_ID   Primärschlüssels 
 Order_Date   
 Customer_SID   Fremdschlüssels 
 Amount   

Im oben stehenden Beispiel ist die Spalte Customer_SID in der ORDERS-Tabelle ein Fremdschlüssel, der auf die SID-Spalte der CUSTOMER-Tabelle verweist.

Es folgen Beispiele für die Definition des Fremdschlüssels während der Erzeugung der ORDERS-Tabelle:

MySQL:

CREATE TABLE ORDERS
(Order_ID integer,
Order_Date date,
Customer_SID integer,
Amount double,
PRIMARY KEY (Order_ID),
FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID));

Oracle:

CREATE TABLE ORDERS
(Order_ID integer PRIMARY KEY,
Order_Date date,
Customer_SID integer REFERENCES CUSTOMER (SID),
Amount double);

SQL Server:

CREATE TABLE ORDERS
(Order_ID integer PRIMARY KEY,
Order_Date datetime,
Customer_SID integer REFERENCES CUSTOMER (SID),
Amount double);

Es folgen Beispiele für die Definition eines Fremdschlüssels durch Ändern einer Tabelle: Dies setzt voraus, dass die ORDERS-Tabelle bereits erzeugt ist und der Fremdschlüssel noch nicht eingefügt wurde:

MySQL:

ALTER TABLE ORDERS
ADD FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID);

Oracle:

ALTER TABLE ORDERS
ADD (CONSTRAINT fk_orders1) FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID);

SQL Server:

ALTER TABLE ORDERS
ADD FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID);


SQL DROP TABLE >>

Diese Seite wurde zuletzt am 26.06.2022 aktualisiert




Copyright © 2024   1keydata.com   Alle Rechte vorbehalten