logo

Restricciones de integridad referencial en DBMS

Una restricción de integridad referencial también se conoce como restricción de clave externa . Una clave externa es una clave cuyos valores se derivan de la clave principal de otra tabla.

La tabla de la que se derivan los valores se conoce como Maestro o Referenciado Tabla y la Tabla en la que se insertan los valores en consecuencia se conoce como Niño o referencia Tabla, En otras palabras, podemos decir que la tabla que contiene el clave externa se llama el mesa infantil y la tabla que contiene Clave principal/clave candidata se llama el tabla referenciada o principal . Cuando hablamos del modelo relacional de base de datos, la clave candidata se puede definir como un conjunto de atributos que puede tener cero o más atributos.

La sintaxis de la Tabla Maestra o Tabla Referenciada es:

algoritmo de ordenación del montón
 CREATE TABLE Student (Roll int PRIMARY KEY, Name varchar(25) , Course varchar(10) ); 

Aquí la columna Roll actúa como Clave primaria, lo que ayudará a derivar el valor de la clave externa en la tabla secundaria.

Restricción de integridad referencial

La sintaxis de tabla secundaria o tabla de referencia es:

 CREATE TABLE Subject (Roll int references Student, SubCode int, SubName varchar(10) ); 

Restricción de integridad referencial

En la tabla anterior, la columna Roll actúa como Clave externa, cuyos valores se derivan utilizando el valor Roll de la clave principal de la tabla maestra.

Restricción de clave externa O restricción de integridad referencial.

Hay dos restricciones de integridad referencial:

Insertar restricción: El valor no se puede insertar en la tabla CHILD si el valor no se encuentra en la tabla MASTER

Eliminar restricción: El valor no se puede eliminar de la tabla MASTER si el valor se encuentra en la tabla CHILD

Supongamos que desea insertar Roll = 05 con otros valores de columnas en la tabla ASUNTO, inmediatamente verá un error ' Restricción de clave externa violada ' es decir, al ejecutar un comando de inserción como:

Insertar en valores de ASUNTO (5, 786, OS); SQL no lo entretendrá debido a la restricción de inserción (Como no puede insertar un valor en una tabla secundaria si el valor no se encuentra en la tabla maestra, ya que Roll = 5 no está presente en la tabla maestra, por lo tanto, no se permitirá ingresar Roll = 5 en la tabla secundaria)

De manera similar, si desea eliminar Roll = 4 de la tabla ESTUDIANTE, verá inmediatamente un error ' Restricción de clave externa violada ' es decir, al ejecutar un comando de eliminación como:

Eliminar de ESTUDIANTE donde Tirada = 4; SQL no lo considerará debido a la restricción de eliminación. (Como no puede eliminar el valor de la tabla maestra si el valor se encuentra en la tabla secundaria, ya que Roll = 5 está presente en la tabla secundaria, por lo tanto, no se permitirá eliminar Roll = 5 de la tabla maestra, si de alguna manera logramos eliminar Roll = 5, luego Roll = 5 estará disponible en la tabla secundaria, lo que finalmente violará la restricción de inserción).

EN BORRAR CASCADA.

números para el alfabeto

Según la restricción de eliminación: el valor no se puede eliminar de la tabla MASTER si el valor se encuentra en la tabla CHILD. La siguiente pregunta es: ¿podemos eliminar el valor de la tabla maestra si el valor se encuentra en la tabla secundaria sin violar la restricción de eliminación? es decir, en el momento en que eliminamos el valor de la tabla maestra, el valor correspondiente también debería eliminarse de la tabla secundaria.

La respuesta a la pregunta anterior es SÍ, podemos eliminar el valor de la tabla maestra si el valor se encuentra en la tabla secundaria sin violar la restricción de eliminación, tenemos que hacer una ligera modificación al crear la tabla secundaria, es decir, agregando al eliminar cascada .

SINTAXIS DE LA TABLA

 CREATE TABLE Subject (Roll int references Student on delete cascade, SubCode int, SubName varchar(10) ); 

En la sintaxis anterior, justo después de la palabra clave de referencia (utilizada para crear una clave externa), hemos agregado la eliminación en cascada. Al agregarla ahora, podemos eliminar el valor de la tabla maestra si el valor se encuentra en la tabla secundaria sin violar la eliminación. restricción. Ahora, si desea eliminar Roll = 5 de la tabla maestra a pesar de que Roll = 5 se encuentra en la tabla secundaria, es posible porque en el momento en que da el comando para eliminar Roll = 5 de la tabla maestra, la fila que tiene Roll = 5 de la tabla secundaria también se eliminarán.

Python de búsqueda binaria
Restricción de integridad referencial
Restricción de integridad referencial

Se muestran las dos tablas anteriores ESTUDIANTE y ASUNTO que tienen cuatro valores cada una. Ahora supongamos que desea eliminar Roll = 4 de la tabla ESTUDIANTE (Maestra) escribiendo un comando SQL: eliminar de ESTUDIANTE donde Tirada = 4;

En el momento en que SQL ejecute el comando anterior, la fila que tiene Roll = 4 de la tabla ASUNTO (niño) también se eliminará. El resultado ESTUDIANTE y SUJETO la tabla se verá así:

Restricción de integridad referencial
Restricción de integridad referencial

En las dos tablas anteriores ESTUDIANTE y ASUNTO, puede ver que en ambas tablas Rollo = 4 se elimina de una sola vez sin violar la restricción de eliminación.

A veces se hace una pregunta muy importante en las entrevistas: ¿Puede la clave externa tener valores NULL?

mb en gb

La respuesta a la pregunta anterior es SÍ, puede tener valores NULL, mientras que la clave principal no puede ser NULL a ningún costo. Para comprender la pregunta anterior de manera práctica, comprendamos a continuación el concepto de eliminar nulo.

AL ELIMINAR NULO.

Según la restricción de eliminación: el valor no se puede eliminar de la tabla MASTER si el valor se encuentra en la tabla CHILD. La siguiente pregunta es: ¿podemos eliminar el valor de la tabla maestra si el valor se encuentra en la tabla secundaria sin violar la restricción de eliminación? es decir, en el momento en que eliminamos el valor de la tabla maestra, el valor correspondiente también debería eliminarse de la tabla secundaria o puede reemplazarse con el valor NULL.

La respuesta a la pregunta anterior es SÍ, podemos eliminar el valor de la tabla maestra si el valor se encuentra en la tabla secundaria sin violar la restricción de eliminación insertando NULL en la clave externa, tenemos que hacer una ligera modificación al crear la tabla secundaria, es decir. añadiendo al eliminar nulo .

SINTaxis DE LA TABLA:

 CREATE TABLE Subject (Roll int references Student on delete null, SubCode int, SubName varchar(10) ); 

En la sintaxis anterior, justo después de la palabra clave de referencia (utilizada para crear una clave externa), hemos agregado eliminar nulo. Al agregarlo ahora, podemos eliminar el valor de la tabla maestra si el valor se encuentra en la tabla secundaria sin violar la eliminación. restricción. Ahora, si desea eliminar Roll = 4 de la tabla maestra a pesar de que Roll = 4 se encuentra en la tabla secundaria, es posible porque en el momento en que da el comando para eliminar Roll = 4 de la tabla maestra, la fila que tiene Roll = 4 de la tabla secundaria será reemplazado por un valor NULL.

Restricción de integridad referencial
Restricción de integridad referencial

Se muestran las dos tablas anteriores ESTUDIANTE y ASUNTO que tienen cuatro valores cada una. Ahora supongamos que desea eliminar Roll = 4 de la tabla ESTUDIANTE (Maestra) escribiendo un comando SQL: eliminar de ESTUDIANTE donde Tirada = 4;

En el momento en que SQL ejecute el comando anterior, la fila que tiene Roll = 4 de la tabla SUBJECT (Child) será reemplazada por un valor NULL. El resultado ESTUDIANTE y SUJETO la tabla se verá así:

Restricción de integridad referencial
Restricción de integridad referencial

En las dos tablas anteriores ESTUDIANTE y ASUNTO, puede ver que en la tabla ESTUDIANTE Roll = 4 se elimina mientras que el valor de Roll = 4 en la tabla SUBJECT se reemplaza por NULL. Esto prueba que la clave externa puede tener valores nulos. Si en el caso de la tabla SUBJECT, la columna Roll es la clave principal junto con la clave externa, entonces en ese caso no podríamos hacer que una clave externa tenga valores NULL.