SQL Chiave Esterna





SQL > Modifica delle Tabelle > Chiave Esterna

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
Nome di Colonna Caratteristica
SID Chiave Primaria
Last_Name  
First_Name  

Tabella ORDERS
Nome di Colonna Caratteristica
Order_ID Chiave Primaria
Order_Date  
Customer_SID Chiave Esterna
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 © 2016   1keydata.com   Tutti i diritti riservati