Creación y optimización de tablas y transacciones en SQL
Clase 16 de 24 • Curso de Fundamentos de Bases de Datos
Resumen
Acercarse a una base de datos realista implica pensar en cómo diseñar tablas más cercanas a las necesidades prácticas del mercado. Aprenderás a reconstruir una tabla de productos incorporando elementos fundamentales como SKU y timestamps automáticos, además de entender cómo optimizar correctamente la inserción masiva de datos.
¿Cómo crear una tabla products realista en MySQL?
Una estructura útil y más próxima al mundo real de una tabla products
debe incluir ciertos elementos clave. Estos elementos permiten identificar claramente cada producto y gestionar su información de manera eficiente en situaciones cotidianas.
product ID
: entero, unsigned, primary key autoincremental.SKU
: identificador único global del producto, tipo varchar.name
: nombre descriptivo del producto.slug
: identificador amigable para URLs, único.description
: texto detallado sobre el producto.price
: valor monetario del producto, puede ser opcional.created_at
ymodified_at
: marcas de tiempo para seguimiento automático.
La instrucción SQL adecuada para crear esta tabla sería una estructura sencilla pero poderosa:
CREATE TABLE IF NOT EXISTS products (
product_ID INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
SKU VARCHAR(20) NOT NULL UNIQUE,
name VARCHAR(50) NOT NULL,
slug VARCHAR(50) NOT NULL UNIQUE,
description TEXT,
price DOUBLE(10,2),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
modified_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
¿Cuál es la forma óptima de insertar muchos datos?
Cuando se maneja la inserción de miles de registros, es fundamental entender la importancia de la gestión eficiente de los recursos del sistema. Hacerlo correctamente garantiza la estabilidad del rendimiento general, especialmente en producciones reales donde múltiples usuarios están conectados simultáneamente.
La práctica recomendada es insertar en pequeños bloques o chunks:
- Insertar en bloques más pequeños (por ejemplo, 100 registros por bloque).
- Evitar insertar miles de datos en una única transacción para no acaparar todos los recursos del sistema.
- Alternar inserciones con otras solicitudes (selects de usuarios, nuevos inserts).
¿Cómo insertar datos con la terminal en MySQL?
Una habilidad valiosa en desarrollo es manejar bases de datos mediante la terminal. Para insertar datos desde un archivo externo hacia MySQL, el ejemplo sería de la siguiente forma:
- Crea archivo SQL:
echo "INSERT INTO products (SKU, name, slug, description, price) VALUES (...)" > archivo.sql
- Inserta desde la terminal:
mysql -u usuario -p -D base_datos < archivo.sql
Este método permite ejecutar comandos SQL directamente y es útil para grandes volúmenes de datos o scripts automatizados.
¿Qué sucede ante conflictos en los datos?
Al inserción masiva es usual encontrarse con conflictos como duplicados en columnas únicas (por ejemplo, SKU o slug). Puedes manejar esta situación fácilmente utilizando la instrucción INSERT IGNORE
, la cual ignora y continúa con la inserción de registros válidos, omitiendo únicamente las filas conflictivas.
Finalmente, analizar cuántos registros fueron efectivamente insertados se logra con una simple consulta:
SELECT COUNT(*) FROM products;
¿Qué técnicas utilizas tú actualmente para optimizar tus bases de datos? Comparte tus estrategias en los comentarios.