Buscar..


Creando una tabla con una clave externa

En este ejemplo tenemos una tabla existente, SuperHeros .

Esta tabla contiene un ID clave principal.

Agregaremos una nueva tabla para almacenar los poderes de cada superhéroe:

CREATE TABLE HeroPowers
(
    ID int NOT NULL PRIMARY KEY,
    Name nvarchar(MAX) NOT NULL,
    HeroId int REFERENCES SuperHeros(ID)
)

La columna HeroId es una clave externa a la tabla SuperHeros .

Claves foráneas explicadas

Las restricciones de claves externas garantizan la integridad de los datos, al imponer que los valores en una tabla deben coincidir con los valores en otra tabla.

Un ejemplo de dónde se requiere una clave extranjera es: En una universidad, un curso debe pertenecer a un departamento. El código para este escenario es:

CREATE TABLE Department (
    Dept_Code        CHAR (5)     PRIMARY KEY,
    Dept_Name        VARCHAR (20) UNIQUE
);

Insertar valores con la siguiente declaración:

INSERT INTO Department VALUES ('CS205', 'Computer Science');

La siguiente tabla contendrá la información de los temas ofrecidos por la rama de informática:

CREATE TABLE Programming_Courses (
    Dept_Code       CHAR(5),
    Prg_Code        CHAR(9) PRIMARY KEY,
    Prg_Name        VARCHAR (50) UNIQUE,
    FOREIGN KEY (Dept_Code) References Department(Dept_Code)
);

(El tipo de datos de la clave externa debe coincidir con el tipo de datos de la clave de referencia).

La restricción de clave externa en la columna Dept_Code solo permite valores si ya existen en la tabla a la que se hace referencia, Department . Esto significa que si intenta insertar los siguientes valores:

INSERT INTO Programming_Courses Values ('CS300', 'FDB-DB001', 'Database Systems');

la base de datos generará un error de violación de clave externa, porque CS300 no existe en la tabla de Department . Pero cuando intentas un valor clave que existe:

INSERT INTO Programming_Courses VALUES ('CS205', 'FDB-DB001', 'Database Systems');
INSERT INTO Programming_Courses VALUES ('CS205', 'DB2-DB002', 'Database Systems II');

entonces la base de datos permite estos valores.

Algunos consejos para usar llaves extranjeras

  • Una clave externa debe hacer referencia a una clave ÚNICA (o PRIMARIA) en la tabla principal.
  • La introducción de un valor NULL en una columna de clave externa no genera un error.
  • Las restricciones de clave externa pueden hacer referencia a tablas dentro de la misma base de datos.
  • Las restricciones de clave externa pueden referirse a otra columna en la misma tabla (referencia propia).


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow