Creación de tablas SQL con relaciones y llaves externas
Clase 11 de 24 • Curso de Fundamentos de Bases de Datos
Resumen
Dominar la creación de tablas en SQL es fundamental para desarrollar bases de datos eficientes y adaptadas a requerimientos específicos de negocio. SQL es un lenguaje intuitivo basado en comandos en inglés, como por ejemplo, create, que permite crear tablas de manera sencilla y natural. En este contenido vamos a profundizar en la creación de tablas con relaciones claras entre ellas, considerando prácticas recomendadas para evitar errores en la gestión de bases de datos.
¿Cómo crear correctamente una tabla en SQL?
Para crear tablas en SQL, usamos el comando CREATE TABLE
. Una práctica común es verificar primero si la tabla existe con la cláusula IF NOT EXISTS
, de esta forma:
CREATE TABLE IF NOT EXISTS products (
productID INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
slug VARCHAR(200) NOT NULL UNIQUE,
description TEXT,
createdAt TIMESTAMP,
modifiedAt TIMESTAMP
);
¿Qué prácticas conviene aplicar al definir columnas?
- Es recomendable utilizar un identificador específico en la columna primaria (como
productID
en lugar de simplementeID
). - Reservar ciertas palabras en MySQL requiere el uso de comillas específicas (
key
otable
). - Para campos descriptivos extensos, usar
TEXT
en vez deVARCHAR
con alta capacidad.
¿Cómo definir relaciones de llaves externas o FOREIGN KEY
en SQL?
Una llave externa, o FOREIGN KEY
, conecta columnas entre dos tablas indicando una relación clara. Se define de la siguiente manera:
CREATE TABLE bills (
billID INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
clientID INTEGER NOT NULL,
total FLOAT,
status ENUM('open', 'paid', 'lost') NOT NULL DEFAULT 'open',
createdAt TIMESTAMP,
FOREIGN KEY(clientID) REFERENCES clients(clientID)
);
Esta relación obliga a que los valores de clientID
en la tabla bills
existan como valores en clientID
de la tabla clients
.
¿Qué ocurre cuando se modifica o elimina una entrada relacionada?
Para prevenir errores al actualizar o borrar valores de identificación, se recomienda usar restricciones como ON UPDATE CASCADE
o ON DELETE CASCADE
. La inclusión sería de esta forma:
FOREIGN KEY(clientID) REFERENCES clients(clientID)
ON UPDATE CASCADE
ON DELETE CASCADE
Estas cláusulas propagan automáticamente los cambios o eliminaciones a las tablas relacionadas, manteniendo la integridad referencial.
¿Cuándo se usa el tipo de dato ENUM
en SQL?
El tipo de dato ENUM
sirve para restringir los valores aceptados en una columna:
- Facilita especificar opciones cerradas (por ejemplo, estados de una factura como
open
,paid
olost
). - Se recomienda que se aplique con conciencia, pues agregar o eliminar opciones posteriormente implica cambiar la estructura de la base de datos.
¿Cómo insertar datos considerando llaves externas?
Siempre que haya llaves externas, los valores insertados deben existir previamente en la tabla relacionada. Por ejemplo:
INSERT INTO clients(clientID, name, email)
VALUES(10, 'Eduardo', 'Eduardo@mail.com');
INSERT INTO bills(clientID, total)
VALUES(10, 15.00);
Verificando siempre que existan previamente los datos en clients
.
Te invitamos a compartir tus dudas o comentarios sobre creación de tablas y relaciones en SQL para continuar aprendiendo juntos de manera efectiva.