Diseñar una base de datos MySQL desde cero significa planear qué información vas a guardar, cómo se organiza y qué tipo de dato tiene cada campo.
Antes de abrir phpMyAdmin, piensa en papel
Imagina que trabajas en el área de tecnología de Liverpool. Tu jefe te pide un sistema para registrar los productos de la tienda en línea. Sin pensar, abres phpMyAdmin y empiezas a crear tablas al azar. Una semana después, los datos están mezclados, hay columnas duplicadas y nadie entiende la estructura. Ese error cuesta tiempo y dinero.
La solución es diseñar primero en papel, luego construir en la computadora. Este hábito separa a los desarrolladores junior de los que saben lo que hacen.
El método "Entidad-Atributo-Relación" simplificado
Usa este proceso de tres pasos antes de tocar phpMyAdmin:
Paso 1 — Identifica las entidades. Una entidad es una "cosa" de la que necesitas guardar información. En un sistema de Liverpool, las entidades serían: productos, clientes, pedidos.
Paso 2 — Lista los atributos. Los atributos son los datos de cada entidad. Un producto tiene: nombre, precio, stock, categoría. Un cliente tiene: nombre, correo, teléfono, dirección.
Paso 3 — Define las relaciones. ¿Cómo se conectan las entidades? Un cliente puede hacer muchos pedidos. Un pedido puede contener muchos productos. Esas conexiones se llaman relaciones.
Con este mapa claro, crear las tablas en phpMyAdmin toma minutos.
Los tipos de datos más importantes en MySQL
MySQL necesita saber qué tipo de información va en cada columna. Elegir el tipo incorrecto provoca errores o desperdicio de espacio.
Estos son los tipos que usarás el 90% del tiempo:
| Tipo | Úsalo para | Ejemplo |
|---|---|---|
INT |
Números enteros | Stock: 150, edad: 32 |
DECIMAL(10,2) |
Precios con centavos | $1,299.99 |
VARCHAR(n) |
Texto corto variable | Nombre: "Bimbo Donas" |
TEXT |
Texto largo | Descripción de producto |
DATE |
Fechas | 2024-07-15 |
TINYINT(1) |
Verdadero/Falso (0 o 1) | Activo: 1, Inactivo: 0 |
Un error muy común es usar VARCHAR para guardar precios. Si guardas "$1,299" como texto, no podrás sumar ni filtrar por rango de precio. Usa siempre DECIMAL(10,2) para dinero.
Crea tu primera base de datos en phpMyAdmin
Abre tu navegador y ve a http://localhost/phpmyadmin. Sigue estos pasos exactos:
1. Crea la base de datos.
En el panel izquierdo, haz clic en "Nueva". Escribe el nombre: tienda_liverpool. En "Cotejamiento" selecciona utf8mb4_unicode_ci. Esto permite guardar acentos y la letra ñ sin problemas. Haz clic en "Crear".
2. Crea la tabla productos.
Dentro de tienda_liverpool, escribe productos en el campo "Nombre" y pon 6 en "Número de columnas". Haz clic en "Continuar".
Configura las columnas así:
id→ Tipo:INT, Longitud: vacío, Índice:PRIMARY, A_I (Auto Increment): ✓nombre→ Tipo:VARCHAR, Longitud:150precio→ Tipo:DECIMAL, Longitud:10,2stock→ Tipo:INT, Longitud: vacíocategoria→ Tipo:VARCHAR, Longitud:80activo→ Tipo:TINYINT, Longitud:1, Predeterminado:1
Haz clic en "Guardar". phpMyAdmin genera el SQL por ti.
3. Crea la tabla clientes.
Repite el proceso con una tabla de 5 columnas:
id→INT, PRIMARY, Auto Incrementnombre→VARCHAR(100)correo→VARCHAR(150)telefono→VARCHAR(15)fecha_registro→DATE
Por qué necesitas una llave primaria en cada tabla
La llave primaria (PRIMARY KEY) es el identificador único de cada fila. Ningún producto puede tener el mismo id que otro. MySQL rechaza duplicados automáticamente.
Activar Auto Increment significa que MySQL asigna el número solo. Tú insertas un producto y MySQL le pone id = 1. El siguiente recibe id = 2. Nunca tienes que calcularlo manualmente.
Sin llave primaria, no puedes editar ni eliminar un registro específico. Es como tener una caja de expedientes sin nombres en los folders.
Conectar tablas con llaves foráneas
Imagina que FEMSA necesita registrar los pedidos de sus clientes. Un pedido pertenece a un cliente. Para conectarlos, usas una llave foránea.
Crea la tabla pedidos con estas columnas:
id→INT, PRIMARY, Auto Incrementid_cliente→INTtotal→DECIMAL(10,2)fecha_pedido→DATEestado→VARCHAR(30)
La columna id_cliente guarda el id del cliente que hizo ese pedido. Si el cliente con id = 5 hace un pedido, el pedido guarda id_cliente = 5. Así sabes exactamente a quién pertenece cada pedido.
Para agregar la relación formal en phpMyAdmin:
- Abre la tabla
pedidos. - Ve a la pestaña "Estructura" y luego a "Vista de relaciones".
- En la columna
id_cliente, selecciona la tablaclientesy la columnaid. - Guarda.
Ahora MySQL protege la integridad. No puedes crear un pedido con un id_cliente que no existe.
Errores comunes al diseñar bases de datos
Error 1: Guardar varios datos en una sola columna.
Algunos principiantes crean una columna datos_cliente y guardan ahí "Juan Pérez, juan@correo.com, 5512345678". Esto hace imposible buscar por correo o por nombre por separado. Cada dato merece su propia columna.
Error 2: Usar nombres de columnas en español con espacios.
Evita nombre del producto. Usa siempre nombre_producto con guion bajo. Los espacios generan errores en el código PHP.
Error 3: No usar utf8mb4_unicode_ci.
Si usas la codificación equivocada, palabras como "categoría" o "diseño" se guardan con caracteres extraños. Siempre selecciona utf8mb4_unicode_ci al crear la base de datos y las tablas.
Error 4: Guardar precios como VARCHAR.
Si guardas "$1,299.99" como texto, no puedes hacer WHERE precio < 500 ni sumar totales. MySQL trata el texto como texto, no como número. Usa DECIMAL(10,2) sin excepción.
Error 5: Olvidar el Auto Increment en la llave primaria.
Sin Auto Increment, tendrías que calcular el siguiente id manualmente antes de cada inserción. Es un error que se descubre dolorosamente en producción.
Inserta datos de prueba desde phpMyAdmin
Con tus tablas listas, agrega datos reales para probar. En phpMyAdmin:
- Haz clic en la tabla
productos. - Ve a la pestaña "Insertar".
- Llena los campos:
nombre: Bimbo Pan Blanco 680gprecio: 42.50stock: 200categoria: Panaderíaactivo: 1
- Haz clic en "Continuar".
Repite con dos o tres productos más. Luego ve a la pestaña "Examinar" para ver tus datos en una tabla ordenada.
Ahora tienes una base de datos real con datos reales. En la siguiente lección conectarás PHP con esta base de datos y mostrarás estos productos en una página web.
Un esquema bien diseñado es la base de todo
Una base de datos mal diseñada no se repara con mejor código PHP: hay que reconstruirla desde cero.
Tómate 15 minutos extra al inicio para dibujar tus entidades y atributos. Ese tiempo te ahorra horas de errores después. La disciplina del diseño es lo que distingue un sistema que dura años de uno que colapsa en semanas.