Entrada

Hacer Relaciones de Tablas en SQLite

Las relaciones entre las tablas son fundamentales y necesarias en el mundo de las bases de datos SQL, ya que permiten organizar y vincular la información de manera eficiente.

SQLite, a pesar de ser un sistema ge gestión de bases de datos ligero, ofrece soporte para relaciones entre tablas mediante el uso de claves foráneas. Estas claves permiten establecer vínculos entre registros de diferentes tablas, asegurando la integridad referencial y facilitando la gestión de los datos.

Es importante tener en cuenta que, en SQLite, el soporte para claves foráneas no está habilitado por defecto. Para habilitarla, es necesario activar explícitamente esta funcionalidad mediante la siguiente instrucción:

1
PRAGMA foreign_keys = ON;

Gestión de Clientes y Pedidos

Imagina que tienes una tienda en línea y necesitas almacenar clientes y pedidos que realizan.

Estructura de la tabla

Un cliente puede hacer muchos pedidos, pero cada pedido pertenece a un solo cliente. A continuación tienes el código para crear la estructura de las tablas y también puedes cambiar a la pestaña ERD para visualizar la relación entre las tablas:

  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    CREATE TABLE clientes (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        nombre TEXT NOT NULL,
        correo TEXT UNIQUE NOT NULL
    );
    
    CREATE TABLE pedidos (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        cliente_id INTEGER,
        fecha_pedido TEXT DEFAULT CURRENT_TIMESTAMP,
        total INTEGER NOT NULL,
        FOREIGN KEY (cliente_id) REFERENCES clientes(id)
    );
    
  • erDiagram
        CLIENTES {
            int id "PK"
            string nombre
            string correo "UNIQUE"
        }
        
        PEDIDOS {
            int id "PK"
            int cliente_id "FK"
            string fecha_pedido
            int total
        }
        
        CLIENTES ||--o{ PEDIDOS : "realiza"
    

Insertando Datos en las Tablas

Ahora agregamos algunos registros de ejemplos en las tablas:

1
2
3
4
5
6
7
8
9
10
-- insertar clientes
INSERT INTO clientes (nombre, correo) VALUES
('Juan Pérez', 'juan@example.com'),
('Ana Gomés', 'ana@example.com');

-- insertar pedidos
INSERT INTO Pedidos (cliente_id, fecha_pedido, total) VALUES 
(1, '2021-03-10', 2500),
(1, '2021-03-13', 3400),
(2, '2021-03-23', 1800);

Consultando datos relacionados

Para obtener la información completa de los pedidos junto a la información del cliente:

1
2
3
4
SELECT pedidos.id, clientes.nombre, pedidos.fecha_pedido, pedidos.total
FROM pedidos
JOIN cientes
ON pedidos.id = clientes.id;
Esta entrada está licenciada bajo CC BY 4.0 por el autor.