SQL Clave externa




SQL > Manipulación de Tabla > Clave externa

Una clave externa es un campo (o campos) que señala la clave primaria de otra tabla. El propósito de la clave externa es asegurar la integridad referencial de los datos. En otras palabras, sólo se permiten los valores que se esperan que aparezcan en la base de datos.

Por ejemplo, digamos que tenemos dos tablas, una tabla CUSTOMER que incluye todos los datos del CUSTOMER, y la tabla ORDERS que incluye los pedidos del CUSTOMER. La restricción aquí es que todos los pedidos deben asociarse con un CUSTOMER que ya se encuentra en la tabla CUSTOMER. En este caso, colocaremos una clave externa en la tabla ORDERS y la relacionaremos con la clave primaria de la tabla CUSTOMER. De esta forma, nos aseguramos que todos los pedidos en la tabla ORDERS estén relacionadas con un CUSTOMER en la tabla CUSTOMER. En otras palabras, la tabla ORDERS no puede contener información de un CUSTOMER que no se encuentre en la tabla CUSTOMER.

La estructura de estas dos tablas será la siguiente:

Tabla CUSTOMER
Nombre de Columna Característica
SID Clave Primaria
Last_Name  
First_Name  

Tabla ORDERS
Nombre de Columna Característica
Order_ID Clave Primaria
Order_Date  
Customer_SID Clave Externa
Amount  

En el ejemplo anterior, la columna Customer_SID en la tabla ORDERS es una clave externa señalando la columna SID en la tabla CUSTOMER.

A continuación se muestran ejemplos de cómo especificar la clave externa a la hora de crear la tabla 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 continuación se presentan ejemplos para la especificación de una clave externa al modificar una tabla: Esto asume que se ha creado la tabla ORDERS, y que la clave externa todavía no se ha ingresado:

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 © 2017   1keydata.com   Todos los derechos reservados.