¿Qué son las claves extranjeras de Sqlite?

¿Qué son las claves extranjeras de Sqlite?
SQLITE es un RDBMS de código abierto (sistema de gestión de bases de datos relacionales), que administra los datos en las tablas. Las tablas utilizadas en bases de datos pueden tener relaciones entre sí, para establecer esta relación, se utilizan claves extranjeras. Las claves extrañas dicen qué tabla está conectada a qué tabla.

Las relaciones entre las tablas son la característica clave de las bases de datos relacionales, que está siendo representada por claves extranjeras y primarias. En este artículo, explicaremos las claves extranjeras y su trabajo en SQLite.

¿Qué son las llaves extranjeras??

Las claves extrañas son los valores en una tabla que indican la clave principal de otra tabla. Para comprender esto, consideremos dos tablas, Tabla A y Tabla B:

Tabla A

ID de estudiante (Primary_Key) Nombre del estudiante ID de maestro (Forign_Key)
1 John 123
2 Pablo 453

Tabla B

ID de maestro (primario_key) Nombres de maestros Sujetos permitidos
123 Alex Matemáticas, física
453 Juana Química, botánica

Ahora, en la mesa A, Identificación del Estudiante es la clave principal de esa tabla, y ID de maestro es la clave extranjera, pero en la tabla B, ID de maestro es la clave principal. La identificación del maestro, que es una clave extranjera, establece una relación entre la Tabla A a la Tabla B.

Cómo verificar el estado de la clave extranjera en SQLite

SQLITE comienza a admitir la función de una clave extranjera después del lanzamiento de su versión 3.6.19, por lo tanto, para verificar si la versión instalada de SQLite admite la clave extranjera o no, ejecute el siguiente comando en el entorno SQLite:

Pragma extranjeros_keys;

La salida puede ser "0" o "1" y si no muestra ninguna salida, entonces significa que no admite las claves extranjeras.

Producción Resultado
0 Las claves extranjeras están deshabilitadas
1 Las claves extranjeras están habilitadas

Cómo habilitar/deshabilitar las claves extranjeras en SQLite

Para habilitar las claves extranjeras en SQLite, ejecute lo siguiente:

Pragma extranjero_keys = on;

Podemos deshabilitar las claves extranjeras, simplemente escribiendo en lugar de encender en el comando anterior. Para confirmar que las claves extranjeras están habilitadas, ejecute el comando Pragma:

Pragma extranjeros_keys;

La salida muestra 1, lo que significa que las claves extranjeras están siendo habilitadas.

¿Cuál es la sintaxis general del uso de la clave extranjera?

La sintaxis general de usar una clave extranjera para crear una tabla es:

Crear tabla_name
(
Tipo de datos de columna1 [NULL | No nulo] Clave principal,
column2 DataType [NULL | No nula] Clave extranjera,

Clave externa (columna1, columna2, ...))
Referencias Parent_table (columna1, columna2 ...)
);

La explicación es:

  • Use la cláusula "CREAR MESA" para la creación de una mesa
  • Reemplace table_name con el nombre de la tabla
  • Defina las columnas con sus tipos de datos y también defina si los valores de soporte nulo/no nulos
  • También menciona las columnas que contienen la clave primaria y la clave extranjera
  • Usar la declaración CLAVE EXTERNA y mencionar en () los nombres de la columna que son claves extranjeras
  • Use la cláusula REFERENCIA y reemplace la platina_table con el nombre de la tabla principal y mencione sus claves extranjeras

¿Cómo funciona una clave extranjera en SQLite?

Para comprender el funcionamiento de las claves extranjeras, consideremos un ejemplo de un servicio de mensajería y creamos dos tablas, customer_details y envío_details que tienen los siguientes datos:

Detalles del cliente

Identificación del cliente Nombre del cliente Identificación del envío
1 John 5612
2 Pablo 3467

Detalles del envío

Identificación del envío Estado De ciudad) A (ciudad)
5612 Entregado Londres Manchester
3467 En proceso Cristol Cardiff

En la tabla, customer_details, Customer_id es la clave principal y el envío_id es una clave extranjera. Y en la tabla, envío_details, envío_id es una clave principal.

Cómo agregar una clave extranjera en SQLite

Para crear una tabla, Customer_Details ejecuta el siguiente comando:

Crear tabla Customer_details (Customer_id Integer Key primario, Texto de Customer_Name No NULL, Shipment_id Integer no NULL, Clave extranjera (Shipment_ID) Referencias Shipment_Details (Shipment_ID));

En el comando anterior, hemos mencionado la clave extranjera y la clave principal y también nos referimos a la tabla donde la clave extranjera estará disponible. Después de la creación de la tabla Customer_Details, crearemos la tabla de envío_details como:

Crear tabla envío_details (envío_id Integer Key primario, texto de estado, texto City_From, City_TO Text);

Ahora para insertar valores en la tabla Customer_Details, use el siguiente comando:

Inserte en valores de customer_details (customer_id, customer_name, envío_id) (1, 'John', 5612), (2, 'Paul', 3467);

Podemos ver que generó el error de "Error: falló la restricción de clave extranjera", Este error se genera porque nos referimos al envío_id de la tabla, envío_details, que aún no tiene valor. Entonces, para eliminar este error, primero, tenemos que editar los datos en envío_details, que nos referimos a la clave extranjera. Para insertar datos en la tabla de envío_details, ejecute el siguiente comando:

Insertar en los valores de envío_details (envío_id, status, city_from, city_to) (5612, 'entregado', 'londres', 'manchester'), (3467, 'in_process', 'bristol', 'cardiff');

Para mostrar la tabla, envío_details, ejecute el comando:

Seleccionar * de envío_details;

Ahora, vuelva a ejecutar el comando para insertar valores en Customer_Details usando la declaración:

Inserte en valores de customer_details (customer_id, customer_name, envío_id) (1, 'John', 5612), (2, 'Paul', 3467);

El comando se ha ejecutado con éxito sin generar el error de "restricción de clave extranjera". Para mostrar la tabla, ejecute el comando:

Seleccionar * de Customer_Details;

¿Cuáles son las acciones de restricciones de clave extranjera?

Hay algunas acciones que puede realizar en la clave principal como resultado de las cuales responde la clave del niño. La sintaxis general es:

Clave externa (extranjera_key_column)
Referencias Parent_table (parent_key_column)
En la actualización
En eliminar;

Una explicación de esta sintaxis es:

  • Escribe la cláusula de CLAVE EXTERNA y reemplace el "extranjero_key_column" con el nombre de su clave extranjera
  • Reemplace el "parent_table" con el nombre de la tabla principal y también "parent_key_columns" con el nombre de la clave principal
  • Escriba la cláusula "On Update" y "On Delete", y reemplace el "" con la acción que desea realizar

SQLite admite las acciones que se explican en la tabla:

Acción Descripción
Nulo Cuando se elimina la clave principal, la columna de la tecla infantil se establece en valores nulos
Establecer predeterminado Funciona lo mismo que la acción nula, pero en lugar de configurar valores nulos en la columna de la clave infantil, establece un valor predeterminado
Sin acción Cuando se realizan cambios en la clave principal de la base de datos principal, no se han producido cambios en la clave infantil
Restringir No permite que el usuario agregue o elimine los valores de una clave principal
cascada Pasa sobre los cambios que se realizan en una mesa principal a la mesa del niño

Conclusión

Las bases de datos relacionales son populares por su característica de proporcionar las relaciones entre las tablas, SQLite, una de las bases de datos relacionales, también admite esta característica. Las relaciones se establecen con la ayuda de las claves, que se conocen como claves extranjeras y primarias. En SQLite, la clave extranjera debe habilitarse para usarla. En este artículo, aprendimos cuáles son las claves extranjeras en SQLite y cómo funcionan. También discutimos las acciones de restricción de las claves extranjeras respaldadas por SQLite.