Creación de tablas SQL con relaciones y llaves externas

Clase 11 de 24Curso 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 simplemente ID).
  • Reservar ciertas palabras en MySQL requiere el uso de comillas específicas (key o table).
  • Para campos descriptivos extensos, usar TEXT en vez de VARCHAR 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 o lost).
  • 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.