SQL Externe Sleutel





SQL > Tabelbewerkingen > Externe Sleutel

Een externe sleutel is een veld (of velden) die verwijzen naar de primaire sleutel van een andere tabel. De externe sleutel dient om de referentiële integriteit van de gegevens te waarborgen. M.a.w. enkel waarden die verondersteld zijn te verschijnen in de database zijn toegelaten.

Veronderstel dat u twee tabellen hebt, een tabel CUSTOMER met alle klantengegevens, en een tabel ORDERS met alle klantenbestellingen. De beperking is in dit geval dat alle bestellingen moeten zijn geassocieerd met een klant die al in de tabel CUSTOMER aanwezig is. In dit geval plaatst u een externe sleutel op de tabel ORDERS en relateert u deze aan de primaire sleutel van de tabel CUSTOMER. Zo zorgt u ervoor dat alle bestellingen in de tabel ORDERS worden gerelateerd aan een klant in de tabel CUSTOMER. M.a.w. de tabel ORDERS kan geen informatie bevatten over een klant die niet aanwezig is in de tabel CUSTOMER.

De structuur van deze twee tabellen zal er als volgt uitzien:

Tabel CUSTOMER
Kolom Naam Kenmerk
SID Primaire Sleute
Last_Name  
First_Name  

Tabel ORDERS
Kolom Naam Kenmerk
Order_ID Primaire Sleute
Order_Date  
Customer_SID Externe Sleutel
Amount  

In bovenstaand voorbeeld is de kolom Customer_SID in de tabel ORDERS een externe sleutel die verwijst naar de SID-kolom in de tabel CUSTOMER.

Hierna vindt u voorbeelden van hoe de externe sleutel wordt gespecificeerd wanneer u de tabel ORDERS aanmaakt:

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

Hierna vindt u voorbeelden voor het specificeren van een externe sleutel wanneer u een tabel wijzigt. Dit veronderstelt dat de tabel ORDERS werd aangemaakt, en dat de externe sleutel nog niet werd ingesteld:

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



Copyright © 2016   1keydata.com   Alle rechten voorbehouden