sql >> Base de Datos >  >> RDS >> Database

CLAVE EXTERNA SQL

En este artículo, aprenderemos sobre las restricciones FOREIGN KEY y cómo definir una restricción FOREIGN KEY para construir la relación entre dos tablas.

En un Sistema de gestión de bases de datos relacionales (RDBMS), una CLAVE EXTERNA es un campo o grupo de campos que se utiliza para crear una relación entre dos tablas o unir las dos tablas.

  • LA CLAVE EXTERNA también se conoce como clave de referencia en el RDBMS
  • Usando restricciones FOREIGN KEY entre dos tablas, definimos una relación padre-hijo entre dos tablas.
  • El campo define las restricciones PRIMARY KEY en una tabla conocida como tabla principal, mientras que el mismo campo define las restricciones FOREIGN KEY en otra tabla que se conoce como tabla secundaria.
  • Solo puede haber una CLAVE PRIMARIA en la tabla, pero no hay un límite definido en la CLAVE EXTERNA. Podemos tener una o más de una LLAVE EXTRANJERA sobre la mesa.
  • Podemos definir restricciones de FOREIGN KEY al crear la tabla o definir restricciones de FOREIGN KEY en la tabla ya existente.

Tomemos un ejemplo para entender y aprender acerca de las restricciones FOREIGN KEY.

Ejemplo:

Aquí, tenemos dos tablas, una es la tabla del Curso y la segunda es la tabla del Estudiante:

Los estudiantes seleccionan cursos. El siguiente ejemplo de restricciones FOREIGN KEY se define en un campo.

Mesa Número Uno:Mesa de Estudiantes

Student_Id Nombre Apellido Email_Id Ciudad
101 Kareena Decir [email protected] Hyderabad
102 Anmol Temani [email protected] Jalgaon
103 Harshal Patel [email protected] Mumbai
104 Sakshi Capucha [email protected] Puno
105 Seguro Coli [email protected] Hyderabad

Tabla número dos:Mesa del curso

Id_del_curso Nombre_del_curso Estudiante_Id
C101 Java 101
C102 SQL 102
C103 SOA Nulo
C104 SAP 104
C105 MuleSoft 103
C101 Java 105

En la tabla Student, el campo Student_Id es la CLAVE PRIMARIA y en la tabla Course, Student_Id es la CLAVE EXTERNA.

La FOREIGN KEY La restricción evita que se inserten datos no válidos en la columna de clave externa porque tiene que ser uno de los valores contenidos en la tabla principal.

Definir restricciones FOREIGN KEY en CREATE TABLE

El siguiente ejemplo define una CLAVE EXTRANJERA en la tabla del Curso.

Primero, hemos creado la tabla Student con los siguientes campos:

CREATE TABLE Student( Student_Id int NOT NULL, First_Name varchar(40) NOT NULL, Last_Name varchar(40) NOT NULL, Email_Id varchar(50),  City varchar(20) NOT NULL, PRIMARY KEY(Student_Id));

El siguiente ejemplo muestra cómo definir las restricciones FOREIGN KEY en la otra tabla.

Curso de nombre de tabla:

CREATE TABLE Course( Course_Id int NOT NULL, Course_Name varchar(40) NOT NULL, Student_Id int, FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id));

En la tabla de cursos, no definimos ninguna CLAVE PRINCIPAL. Simplemente defina las restricciones FOREIGN KEY en Student_Id.

El siguiente ejemplo de restricciones de FOREIGN KEY se define en varios campos.

Supongamos que tenemos tres tablas, una es la tabla Paquete, la segunda es la tabla Datos y la tercera es la tabla Talk_time:

Tabla 1:Paquete:

Paquete_Id ID_de_datos Id. de tiempo de conversación
P1001 D1003 T1001
P1002 D1001 T1002
P1003 D1002 T1003
P1004 D1003 T1004
P1005 D1004 T1005

Tabla 2:Datos:

Id_de_datos Límite_de_datos Precio_de_datos
D1001 5 120
D1002 3 75
D1003 6 150
D1004 10 240
D1005 15 320

Tabla 3:Talk_Time:

Talk_Time_Id Límite_de_tiempo_de_conversación Talk_Time _Precio
T1001 120 130
T1002 70 105
T1003 60 90
T1004 200 220
T1005 150 170

En la tabla Talk_Time, Talk_Time_Id es la CLAVE PRINCIPAL.

En la tabla de datos, Data_Id es la CLAVE PRINCIPAL.

Mientras que en la tabla de paquetes, Talk_Time_Id y Data_Id son las claves FOREIGN

Tabla número uno:Datos:

CREATE TABLE Data(Data_Id varchar(5) NOT NULL, Data_Limit int, Data_Price int, PRIMARY KEY(Data_Id));

Tabla número dos:Talk_Time:

CREATE TABLE Talk_Time(Talk_Time_Id varchar(5) NOT NULL, Talk_Time_Limit int, Talk_Time_Price int , PRIMARY KEY(Talk_Time_Id));

Tabla número tres:Paquete:

CREATE TABLE Package(Package_Id varchar(5) NOT NULL, Data_Id varchar(5), Talk_Time_Id varchar(5), FOREIGN KEY(Data_Id) REFERENCES Data(Data_Id), FOREIGN KEY(Talk_Time_Id) REFERENCES Talk_Time(Talk_Time_Id));

Restricciones FOREIGN KEY usando ALTER TABLE:

Supongamos que ya hemos creado la tabla y queremos definir las restricciones FOREIGN KEY en el campo. Usaremos la consulta ALTER TABLE para agregar restricciones FOREIGN KEY en tal caso.

La consulta de seguimiento se usa para agregar restricciones de CLAVE EXTERNA en el campo Student_Id.

ALTER TABLE Course ADD FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id);

ADD Keyword se usa después del nombre de la tabla para agregar las restricciones FOREIGN KEY a la tabla ya existente.

Restricción DROP FOREIGN KEY de la tabla

Utilice la siguiente consulta para eliminar la restricción FOREIGN KEY de la tabla.

ALTER TABLE Course DROP FOREIGN KEY course_ibfk_1;

La palabra clave Drop se utiliza para eliminar las restricciones de FOREIGN KEY del campo Student_Id.

Course_ibfk_1 es el nombre de restricción de clave externa.

Podemos tener valores nulos en el campo de restricciones FOREIGN KEY. Podemos tener valores duplicados en el campo de restricciones FOREIGN KEY.