|
Una chiave esterna rappresenta uno o più campi che fanno riferimento alla chiave primaria di un’altra tabella. Lo scopo della chiave esterna è garantire l’integrità referenziale dei dati. Cioè, sono consentiti solo i valori che si ritiene debbano apparire nel database.
Ad esempio, si supponga di disporre di due tabelle: una tabella CUSTOMER, in cui sono inclusi tutti i dati dei clienti e una tabella ORDERS, in cui sono contenuti tutti gli ordini dei clienti. Il vincolo impostato stabilisce che tutti gli ordini devono essere associati a un cliente presente nella tabella CUSTOMER. In questo caso, verrà posizionata una chiave esterna sulla tabella ORDERS che sia in relazione con la chiave primaria della tabella CUSTOMER. In questo modo, è possibile garantire che tutti gli ordini della tabella ORDERS sono correlati a un cliente presente nella tabella CUSTOMER. Cioè, nella tabella ORDERS non possono essere contenute informazioni relative a un cliente che non è incluso nella tabella CUSTOMER.
La struttura di queste due tabelle è la seguente:
Tabella CUSTOMER
| kolom_naam |
kenmerk |
| SID |
Primaire Sleute |
| Last_Name |
|
| First_Name |
|
Tabella ORDERS
| kolom_naam |
kenmerk |
| Order_ID |
Primaire Sleute |
| Order_Date |
|
| Customer_SID |
Externe Sleutel |
| Amount |
|
Nell’esempio precedente, la colonna Customer_SID contenuta nella tabella ORDERS rappresenta una chiave esterna facente riferimento alla colonna SID della tabella CUSTOMER.
A seguire, vengono illustrati degli esempi nei quali viene mostrato come specificare una chiave esterna durante la creazione della tabella ORDERS:
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);
A seguire, vengono illustrati degli esempi per specificare una chiave esterna mediante la modifica di una tabella. Si supponga che la tabella ORDERS sia stata creata e che la chiave esterna non sia stata ancora inserita:
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 © 2013 1keydata.com Tutti i diritti riservati.
|