¿Cómo crear una tabla con una clave externa en SQL?

El lenguaje de consulta estructurado o SQL es un lenguaje de base de datos estándar que se utiliza para crear, mantener y recuperar datos de bases de datos relacionales como MySQL, Oracle, SQL Server, PostGre, etc.

Para crear una tabla con Foreign Key, debemos conocer algunas restricciones clave:

Súper clave:

Un atributo, o conjunto de atributos, que identifica de forma única una tupla dentro de una relación.

Ej: considere una base de datos de clientes entonces,

El customer_id de la relación cliente es suficiente para distinguir una tupla de otra. Por lo tanto, customer_id es una súper clave. De manera similar, la combinación de id_cliente y nombre_cliente es una súper clave para la relación cliente. Aquí el nombre_cliente no es una súper clave, porque varias personas pueden tener el mismo nombre.

Llave candidata :

Una superclave tal que ningún subconjunto propio sea una superclave dentro de la relación.

Ej: La combinación de nombre_cliente y calle_cliente es suficiente para distinguir a los miembros de la relación cliente. Entonces, tanto {customer_id} como {customer_name,customer_street} son claves candidatas. Aunque el id_cliente y el nombre_cliente juntos pueden distinguir las tuplas del cliente, su combinación no forma una clave candidata, ya que solo el id_cliente es una clave candidata.

Clave primaria :

La clave candidata se selecciona para identificar tuplas de forma única dentro de la relación. De todas las claves candidatas disponibles, un diseñador de base de datos puede identificar una clave principal. Las claves candidatas que no se seleccionan como clave principal se denominan claves alternativas.

Ej: Para la relación con el cliente, podemos elegir customer_id como clave principal.

Clave externa :

Las claves foráneas representan las relaciones entre tablas. Una clave externa es una columna (o un grupo de columnas) cuyos valores se derivan de la clave principal de alguna otra tabla. La tabla en la que se define una clave externa se denomina tabla externa o tabla de detalles. La tabla que define la clave principal y a la que hace referencia la clave externa se denomina tabla principal o tabla maestra.

Podemos agregar una clave externa a una relación de las siguientes maneras

Método 1 :

Sintaxis:

CREATE TABLE TABLE_NAME(
    Column 1 datatype,
    Column 2 datatype,
    Column 3 datatype FOREIGN KEY REFERENCES Table_name(Column name), //Column which has to be a forigen key
    ..
    ..
    Column n
)

Considere la siguiente relación con el cliente

Identificación del cliente Nombre del cliente Dirección del cliente
101 Friki 1 Chennai
102 Friki 2 Delhi
103 Friki 3 Bombay
104 Friki 4 Puno
105 Friki 5 nashik

Para crear la siguiente tabla, usamos el siguiente comando

CREATE TABLE Customer(
    Customer_id int primary key,
    Customer_name varchar(20),
    Customer_Address varchar(20),
)

Ahora considere la relación de ventas,

Identificación del cliente Identificación del producto Modo de pago
101 1334151 BACALAO
101 16652 Tarjeta de débito
104 1009 PayPal
102 14543 BACALAO

Entonces, en esta relación, Customer_id es una clave externa que se obtiene de la relación de cliente anterior. Podemos crear la tabla usando el siguiente comando.

CREATE TABLE SALES(
    Customer_id int FOREIGN KEY REFERENCES Customer(Customer_id)
    Item_id int,
    Payment_Mode varchar(20), 
)

Método -2:

Sintaxis:

CREATE TABLE TABLE_NAME(
    Column 1 datatype,
    Column 2 datatype,
    Column 3 datatype  //Column which has to be a forigen key
    ..
    ..
    Column n
    CONSTRAINT Constraint_name FOREIGN KEY (Column name) REFERENCES Table_Name(Column name),
)

Ahora, para crear la misma tabla de ventas usando la tabla de clientes, podemos ejecutar el siguiente comando

CREATE TABLE SALES(
    Customer_id int,
    Item_id int,
    Payment_Mode varchar(20),
    CONSTRAINT FK_Sales FOREIGN KEY (Customer_id)REFERENCES Customer(Customer_id)
)
Identificación del cliente Identificación del producto Modo de pago
101 1334151 BACALAO
101 16652 Tarjeta de débito
104 1009 PayPal
102 14543 BACALAO

Luego obtenemos la siguiente tabla con customer_id como clave externa.

Publicación traducida automáticamente

Artículo escrito por magichat y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *