Curso de MySQL
MySQL como base de datos relacional: tablas y relaciones
Por Víctor Peña · Publicado el

Hola, ¿cómo están? Continuando con el curso de MySQL, hoy veremos qué significa exactamente que una base de datos sea relacional. Es el concepto sobre el que se apoya todo lo demás.
¡Empecemos!
El modelo relacional
El modelo relacional propone algo muy simple: organizar la información en tablas que se conectan entre sí.
Cada tabla representa una entidad del mundo real —clientes, productos, pedidos— y guarda solo lo que corresponde a esa entidad. Cuando dos tablas necesitan relacionarse, se enlazan mediante una clave.
Suena básico, pero resuelve un problema muy concreto que se ve mejor con un contraejemplo.
El problema de guardarlo todo junto
Imagina una sola tabla con todos los pedidos:
| id | cliente | telefono_cliente | ciudad | producto | precio |
|---|---|---|---|---|---|
| 1 | Ana Torres | 76980507 | Cochabamba | Teclado | 120 |
| 2 | Ana Torres | 76980507 | Cochabamba | Monitor | 850 |
| 3 | Ana Torres | 76980507 | Cochabamba | Mouse | 60 |
Los datos de Ana están repetidos tres veces. Y ahí empiezan los problemas:
- Si cambia de teléfono, hay que actualizarlo en las tres filas. Si olvidas una, tienes dos versiones de la verdad.
- Ocupa espacio innecesario.
- Si borras el pedido, pierdes también los datos del cliente.
- Nada impide escribirlo distinto: «Ana Torres» en una fila y «ana torres» en otra son dos clientes para la base de datos.
La solución relacional
Se separa en dos tablas:
clientes
| id | nombre | telefono | ciudad |
|---|---|---|---|
| 1 | Ana Torres | 76980507 | Cochabamba |
pedidos
| id | cliente_id | producto | precio |
|---|---|---|---|
| 1 | 1 | Teclado | 120 |
| 2 | 1 | Monitor | 850 |
| 3 | 1 | Mouse | 60 |
Los datos de Ana están una sola vez. Los pedidos la referencian con cliente_id.
Si cambia de teléfono, se actualiza en un solo lugar y todos los pedidos reflejan el cambio automáticamente. Ese proceso de separar para eliminar redundancia se llama normalización.
Los elementos de una tabla
Tabla. El contenedor de un tipo de información. También se le llama relación, de ahí el nombre del modelo.
Fila o registro. Una ocurrencia concreta: un cliente, un pedido.
Columna o campo. Una característica: el nombre, el teléfono. Cada columna tiene un tipo de dato definido, que veremos más adelante.
Clave primaria. La columna que identifica de forma única cada fila. Normalmente un id numérico que se incrementa solo. No puede repetirse ni estar vacía.
Clave foránea. Una columna que apunta a la clave primaria de otra tabla. En el ejemplo, pedidos.cliente_id es clave foránea hacia clientes.id.
Los tres tipos de relación
Uno a uno (1:1)
Un registro de una tabla se corresponde con exactamente uno de la otra.
Una persona tiene un carnet de identidad, y ese carnet pertenece a una sola persona.
Es la menos frecuente. Suele usarse para separar datos que se consultan poco o que son sensibles.
Uno a muchos (1:N)
Un registro de una tabla se relaciona con varios de la otra, pero no al revés.
Un cliente realiza muchos pedidos, y cada pedido pertenece a un solo cliente.
Es la más común de todas. La clave foránea se guarda siempre en el lado «muchos»: la tabla pedidos lleva la columna cliente_id.
Muchos a muchos (N:M)
Los registros de ambos lados se relacionan con varios del otro.
Un pedido incluye varios productos, y cada producto aparece en varios pedidos.
Aquí hay una regla importante: este tipo de relación no se puede representar directamente. Necesita una tercera tabla, llamada tabla intermedia o pivote:
pedido_producto
| pedido_id | producto_id | cantidad |
|---|---|---|
| 1 | 5 | 2 |
| 1 | 8 | 1 |
| 2 | 5 | 3 |
Esa tabla convierte un muchos a muchos en dos relaciones uno a muchos. Y fíjate en algo útil: puede llevar datos propios, como la cantidad, que no pertenecen ni al pedido ni al producto sino a la combinación de ambos.
Leer las relaciones en los dos sentidos
Un truco que evita la mayoría de los errores de diseño: enuncia siempre la relación en ambas direcciones.
- «Un cliente tiene muchos pedidos» → parece muchos a muchos.
- «Un pedido pertenece a un solo cliente» → ahora está claro: es uno a muchos.
Si ambas frases dicen «muchos», entonces sí es una relación N:M y necesitas tabla intermedia.
La integridad referencial
Cuando declaras una clave foránea, MySQL se encarga de que la relación tenga sentido:
- No puedes crear un pedido con un
cliente_idque no existe. - No puedes borrar un cliente que tiene pedidos, salvo que definas qué debe pasar con ellos.
Eso se llama integridad referencial, y es una de las principales razones para usar una base de datos relacional en vez de archivos sueltos: el propio motor impide que los datos queden incoherentes.
Los motores de almacenamiento
MySQL permite elegir cómo se guardan las tablas. Los dos principales:
| InnoDB | MyISAM | |
|---|---|---|
| Claves foráneas | Sí | No |
| Transacciones | Sí | No |
| Bloqueo | Por fila | Por tabla |
Usa InnoDB, que además es el predeterminado desde hace años. MyISAM solo aparece en sistemas antiguos, y no soporta ni relaciones ni transacciones, que es justamente lo que hace útil a una base de datos relacional.
Para cerrar
Que MySQL sea relacional significa que la información vive separada en tablas y se conecta mediante claves, evitando duplicados y manteniendo la coherencia.
Las tres ideas que hay que retener: la clave foránea va en el lado «muchos», el muchos a muchos siempre necesita tabla intermedia, y las relaciones se leen en los dos sentidos.
En la siguiente lección veremos cómo diseñar todo esto antes de escribir una sola tabla.
Saludos y éxitos.
Norvic Software
Desarrollamos el software que tu empresa necesita
Somos una fábrica de software en Bolivia. Construimos sistemas a medida y aplicaciones móviles, y llevamos Inteligencia Artificial a las empresas que ya tienen un sistema funcionando.
- Chatbots con Inteligencia Artificial
- Creación de agentes de IA
- Integración de IA en tus sistemas
- Desarrollo de software a medida
- Aplicaciones móviles iOS y Android
- Consultoría y asesoramiento técnico
Cotización sin costo · Respuesta directa por WhatsApp