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

Deze pagina is voor het laatst bijgewerkt op 13-06-2022



Copyright © 2024   1keydata.com   Alle rechten voorbehouden