Base de datos con oxmysql · Lección 3/3 · 9 min
Diseñar la tabla de tu recurso
Una buena tabla te ahorra dolores. Tipos correctos, clave primaria e índices donde toca.
Antes de guardar nada, piensa la tabla. Una tabla bien diseñada es rápida y no se corrompe; una mal diseñada te dará bugs raros meses después.
Ejemplo: una tabla de propiedades
CREATE TABLE IF NOT EXISTS player_houses (
id INT AUTO_INCREMENT PRIMARY KEY,
owner VARCHAR(60) NOT NULL, -- identifier del dueño
label VARCHAR(80) NOT NULL,
price INT NOT NULL DEFAULT 0,
coords JSON NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_owner (owner) -- buscar por dueño es rápido
);DDL de la tabla
- Clave primaria (id AUTO_INCREMENT) siempre: identifica cada fila sin ambigüedad.
- Tipos correctos: INT para números, VARCHAR(n) para textos cortos, JSON para estructuras, TIMESTAMP para fechas.
- Índice (INDEX) en las columnas por las que filtras mucho (owner, identifier) → consultas rápidas.
- NOT NULL y DEFAULT para no acabar con datos a medias.
Para datos complejos (un inventario, unas coords con heading) usa una columna JSON y guarda con json.encode / lee con json.decode. Evita crear 20 columnas para algo que es una estructura.
Practica lo aprendido
0/3Completa el CREATE TABLE de propiedades: clave primaria, texto corto, estructura y un índice.
CREATE TABLE IF NOT EXISTS player_houses ( id INT AUTO_INCREMENT KEY, owner (60) NOT NULL, coords NOT NULL, idx_owner (owner));Pista
PRIMARY KEY identifica la fila; VARCHAR(n) para texto corto; JSON para estructuras; INDEX para buscar rápido.
Para guardar unas coordenadas con heading (una estructura), ¿qué tipo de columna es el más adecuado?
Pista
¿Estructura completa en una sola columna?
Ordena el CREATE TABLE de un sistema de multas (id, importe e índice por ciudadano).
Coloca las líneas en el orden correcto con las flechas.
CREATE TABLE IF NOT EXISTS fines ( INDEX idx_citizen (citizen)); citizen VARCHAR(60) NOT NULL, amount INT NOT NULL DEFAULT 0, id INT AUTO_INCREMENT PRIMARY KEY,Pista
Empieza por CREATE TABLE, luego las columnas (id primero) y cierra con el índice y el paréntesis.
Reto: prográmalo tú
Diseña una tabla para guardar multas de policía: quién la pone, a quién, importe, motivo y fecha.
Escríbelo tú en tu editor (VS Code) y pruébalo en tu servidor. Aquí se aprende haciéndolo, no copiando.
Ver pista
PRIMARY KEY en id, INDEX en ciudadano para listar sus multas, TINYINT(1) para pagada.
Escribe aquí tu solución:
