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 >>





Copyright © 2014   1keydata.com   Alle Rechte vorbehalten.