La integridad referencial se discute en este tutorial en el contexto de la base de datos relacional. La integridad referencial es una propiedad de datos, que indica que todas sus referencias son válidas. Aquí se preocupan dos tablas. Uno se llama la tabla referenciada o principal. Esta tabla referenciada tiene una clave primaria, que puede estar compuesta por una o más columnas. La otra tabla tiene una clave extranjera cuyos valores son los mismos que los de la clave principal de la tabla referenciada. La otra tabla se conoce como una tabla infantil a la tabla principal.
El número de columnas que componen la clave extranjera en la tabla infantil es el mismo que las que componen la clave principal en la tabla referenciada (padre). Todos los valores de la clave extranjera se encuentran en la columna de la clave primaria. Sin embargo, los valores en la columna de la clave extranjera pueden repetirse en la tabla del niño.
La tabla infantil tiene su propia clave principal que es diferente de la columna de clave extranjera que tiene. La tabla infantil también se llama la tabla de referencia.
"Todas sus referencias son válidas" significa que una clave extranjera en la tabla del niño apunta a una fila en la tabla referenciada. Esa clave extranjera en la tabla infantil y la clave principal en la tabla referenciada (padre) son el mismo valor. Más de una clave extranjera en la tabla infantil puede apuntar a una sola fila en la tabla referenciada.
Este artículo explica las restricciones que están naturalmente asociadas con la clave extranjera de la tabla infantil y la misma clave primaria de la tabla referenciada. Si se respetan las restricciones, entonces los datos (filas correspondientes) en ambas tablas forman integridad, sin errores, todo es igual; De ahí el término integridad referencial."
Ilustración con dos tablas
La notación de la tabla de las dos tablas puede ser:
Ventas (Saleid, Datesold, CustomerID, Empleado)
y
Clientes (CustomerId, Nombre personalizado, teléfono, dirección, ciudad, región, código postal, país)
CustomerID en la tabla de ventas es una clave extranjera con un subrayado de tablero. CustomerID en la tabla de clientes es una clave principal con un solo subrayado. La clave principal para la tabla de ventas es Saleid, con un solo subrayado. SaleID en la tabla de ventas depende de CustomerId, así como depende del atributo de fecha y el atributo de empleados (columna) (columna).
Las tablas con datos son las siguientes:
Mesa de ventas
salado | fechas | Identificación del cliente | empleado |
1 | 06/06/23 | 1 | John Jones |
2 | 07/07/23 | 2 | Panadero de Barbara |
3 | 07/07/23 | 2 | Peter Lewis |
4 | 07/08/23 | 1 | John Jones |
5 | 07/09/23 | 3 | Panadero de Barbara |
6 | 10/07/23 | 1 | Panadero de Barbara |
7 | 11/07/23 | 1 | Panadero de Barbara |
8 | 12/07/23 | 1 | John Jones |
9 | 13/07/23 | 2 | Peter Lewis |
Mesa de clientes
Para ambas tablas, los clientes (individuos) van a una tienda y compran diferentes productos en diferentes días. Los productos comprados no se muestran. La mesa de los clientes tiene las direcciones de los clientes en la misma ciudad. La tabla de ventas tiene los nombres de los empleados que sirvieron a los clientes individuales y tienen otros datos.
En la tabla de ventas, CustomerID es una clave externa. En la tabla de clientes, CustomerID es una clave principal. Cada clave extranjera en la tabla de ventas ocurre en la tabla de clientes una vez. Es decir, cada clave extranjera en la tabla de ventas hace referencia a una clave principal y, por lo tanto, hace referencia a una fila distinta en la tabla de clientes. La integridad de los datos (referencial) falla si este no es el caso.
Valor nulo y claves extranjeras
Una clave extranjera en la tabla infantil debe hacer referencia a una fila, a través de la clave principal, de la tabla principal. Todas las claves principales de la tabla principal son únicas. Las claves extranjeras en la columna de clave extranjera en la tabla infantil, todas las cuales se encuentran en la tabla principal, no tienen que ser únicas. Se deben esperar repeticiones de llaves extranjeras allí. Arriba, la mesa de ventas es una mesa infantil, y la mesa de los clientes es una mesa para padres. Considere estas dos tablas como pertenecientes a la base de datos de una tienda de conveniencia. Los clientes son personas que compran en la tienda.
Imagine que el cliente con CustomerID 2 lo ha ofendido, el propietario de la tienda; Por ejemplo, trató de robar, y le has prohibido volver a comprar en tu tienda. Esto significa que su nombre debe eliminarse de su lista de clientes. Su compra en la mesa de ventas está en el pasado, ocurrió sin ningún problema, por lo que debe permanecer.
En este caso, todos los clientes de 2 en la tabla de ventas deben ser reemplazados por NULL (nada), lo que significa que no hay referencia a la tabla de clientes de una fila que se ha eliminado. Para la tabla de clientes anteriores, se han eliminado dos filas después de que su fila (CustomerID y el resto de sus credenciales) se haya eliminado.
Hay dos formas de anular la fila en la tabla de clientes, por la computadora (sistema de administración de bases de datos) de la siguiente manera:
Cualquiera que sea la forma elegida, el valor nulo permanece en la tabla de ventas como la clave extranjera para las filas del cliente eliminadas correspondientes. Las referencias de valor nulo (apunta a) ninguna fila en la tabla de clientes.
Entonces, por tales razones, una clave extranjera puede tener un valor nulo. Eso es que ver con la integridad referencial!
Actualización de las tablas de niños y padres
Actualizar significa modificar. La modificación de cualquier celda en la tabla infantil (ventas) (incluso el SaleID), excepto la clave externa, no causa ningún daño a la tabla infantil o las correspondencias de los padres (clientes). Por ejemplo, si la fecha se escribió erróneamente por error, la fecha correcta debe ser escrita.
La modificación de cualquier celda en la tabla principal (clientes), excepto la clave principal, realmente no causa ningún daño a la tabla principal (clientes) o la tabla de niños (ventas) correspondencia. Por ejemplo, si el cliente ha cambiado su calle pero todavía está en el vecindario, cambiar su dirección en la tabla de los clientes no causa ningún daño a las correspondencias de la tabla de niños y principales.
Sin embargo, cambiar el valor de la clave extranjera en la tabla infantil significa que todos los mismos valores de clave extranjera en la tabla infantil deben cambiarse a ese valor particular, y el valor de la clave principal correspondiente en la tabla principal también debe cambiarse , al mismo valor también. Esto es en cascada.
¿Se puede cambiar una clave externa de valor nulo?? - Bueno, sí: si el cliente superado anteriormente regresa después de seis meses y se disculpa, y usted, el propietario, lo perdona, y si solo sus filas en la tabla de ventas tuvieran valores nulos, entonces su nombre y credenciales se ingresarán en el Tabla de clientes, en la parte inferior, con un nuevo cliente; y todos los valores nulos como claves extranjeras en la tabla de niños (ventas) serán reemplazados por este nuevo clienteid. Sin embargo, si hubiera otras filas en la tabla del niño con valores nulos que no le pertenecen, entonces todos los valores nulos, incluido el suyo, permanecerán; y todas sus nuevas ventas se ingresarán en la tabla de ventas de nuevo, en la parte inferior de la tabla de ventas.
Eliminar en las tablas de niños y padres
No tiene sentido eliminar ningún valor de celda de columna en la tabla de niños o padres a menos que sea para una columna cuyo valor de celda pueda estar vacío. Vacío no significa nulo. Vacío significa vacío.
Sin embargo, se puede eliminar una fila completa en la mesa infantil o la mesa principal. Suponga que hay algunas filas falsas en la tabla de niños (ventas); Si estas filas se eliminan (incluidas sus salados y las llaves extranjeras por completo), entonces no habrá ningún problema. Los clientes tienen otras filas reales en la mesa infantil o simplemente no han mostrado su disposición a comprar en la tienda y nunca han comprado nada. - Comprarán algún día en el futuro cercano.
Por otro lado, si hay un cliente falso con ventas falsas cuando se elimina su fila en la mesa del cliente, se deben eliminar todas sus filas de venta falsas en la tabla de ventas. Esto es en cascada. Esto puede suceder cuando un empleado realiza ventas reales, registra información falsa y firma como otro empleado en la misma tabla. Dado que las claves extrañas correspondientes en la tabla secundaria son las mismas que la clave principal en la tabla principal, entonces ese mismo valor vincula las dos tablas.
Para resolver este problema, cada empleado debe tener su propio libro de ejercicios de ventas si la computadora no se está utilizando. Si se está utilizando la computadora, entonces cada empleado debe tener un nombre de usuario y contraseña de inicio de sesión para la aplicación del sistema de administración de bases de datos, que registra automáticamente el nombre del empleado en todas sus acciones.
Citas
Los siguientes tres párrafos son citas de Wikipedia:
“La integridad referencial es una propiedad de datos, que indica que todas sus referencias son válidas.
En el contexto de las bases de datos relacionales, requiere que si un valor de un atributo (columna) de una relación (tabla) hace referencia a un valor de otro atributo (ya sea en la misma relación o diferente), entonces el valor referenciado debe existir.
La integridad referencial es un concepto de base de datos que garantiza que las relaciones entre las tablas sigan siendo consistentes. Cuando una tabla tiene una clave extranjera para otra tabla, el concepto de integridad referencial establece que no puede agregar un registro a la tabla que contiene la clave extranjera a menos que haya un registro correspondiente en la tabla vinculada."
Acciones referenciales
Sin la computadora, es difícil hacer cumplir la integridad referencial. Esto lleva a errores contables. Con la computadora, la integridad referencial se puede aplicar aplicando en cascada y otras acciones mediante la programación del sistema de gestión de la base de datos.
CASCADA
Esto significa: actualizar o eliminar en cascada.
RESTRINGIR
Esto significa: no actualice ni elimine las filas conectadas en la tabla de niños y padres.
Sin acción
Restringir verifica las conexiones de las filas en ambas tablas antes de intentar actualizar o eliminar. Ninguna acción es similar a la restricción, pero intenta actualizar o eliminar antes de verificar las conexiones en ambas tablas.
La restricción emitirá un mensaje de error de que se hizo un intento de actualizar o eliminar una fila, a pesar del hecho de que hay una fila correspondiente en la otra tabla que no se habría actualizado o eliminado. Ninguna acción actualizaría o eliminaría la fila y luego emitiría un mensaje de error de que la fila fue actualizada o eliminada, a pesar del hecho de que existe una fila correspondiente en la otra tabla. Por supuesto, esto conduciría a una contabilidad incorrecta a menos que el usuario estuviera en el proceso de manejar ambos cambios en la tabla manualmente.
Si no existe una fila correspondiente en la otra tabla, actualice o elimine la fila, ya sea que la ejecución estuviera restringida o ninguna acción.
Establecer nulo
Con esta acción aplicada, si se elimina una fila en la tabla principal, todas las claves extranjeras de las filas correspondientes en la tabla infantil se configurarían en NULL.
ESTABLECER PREDETERMINADO
Con esta acción aplicada, si se elimina una fila en la tabla principal, todas las claves extranjeras de las filas correspondientes en la tabla secundaria se establecerían en el valor predeterminado elegido por el usuario de la base de datos.
Conclusión
La integridad referencial es un concepto de base de datos que garantiza que las relaciones entre las tablas sigan siendo consistentes. Cuando una tabla tiene una clave extranjera para otra tabla, el concepto de integridad referencial establece que no puede agregar un registro a la tabla que contiene la clave extranjera a menos que haya un registro correspondiente en la tabla vinculada.
Cuando las tablas se mantienen en libros de contabilidad, se hace difícil hacer cumplir la integridad referencial. Sin embargo, cuando un DBMS mantiene las tablas en una computadora, esas acciones referenciales son aplicadas por un programador.