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_nameLa explicación es:
¿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)Una explicación de esta sintaxis es:
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.