En este post vamos a profundizar en el modelo relacional de bases de datos (SQL) y sus componentes. Si quieres diseñar bases de datos profesionales y entender cómo funcionan las aplicaciones que manejan grandes volúmenes de información, esto es lo que necesitas saber.
Vamos a ver:
- ✅ La importancia de elegir el modelo correcto y diseñar bien tu base de datos relacional.
- ✅ Los componentes del modelo relacional: campo, registro, tabla, clave primaria y foránea.
- ✅ Cómo funcionan las relaciones entre tablas y los diferentes tipos de relaciones.
- ✅ Qué es el valor nulo (NULL) y por qué no se permite en las claves y otras reglas básicas.
- ✅ Errores comunes al trabajar con NULL y cómo evitarlos.
Vimos anteriormente que existen dos grandes modelos de bases de datos: el modelo relacional de bases de datos, conocido popularmente como (SQL), y el modelo no-relacional, llamado (NoSQL).
Abajo te dejo un diagrama explicativo de lo que vimos en la entrada anterior para que te resulte más fácil la comprensión de la introducción a modelos de bases de datos brindada anteriormente.
Si llegaste hasta aquí, es casi seguro que ya has leído los posts anteriores de la serie:
Si no es así, te recomiendo leerlos primero para tener el contexto completo. ¡Vamos a ello!
Modelo relacional (SQL) vs Modelo no relacional (NoSQL) de bases de datos

Como ya sabes, predominan dos modelos a la hora de diseñar una base de datos. Es muy importante que comprendas estos conceptos, porque si te interesa aprender a programar de manera profesional, tienes que tener claro que la administración de la información es crucial, Neo… 😎
Imagina que programas un sistema de gestión de productos, clientes, o un simple sistema de registro y login de usuarios. Estarás trabajando con información sensible y personal, datos privados que las personas te han confiado. Quizás sin saberlo, tú eres responsable de su seguridad, gestión, organización, consulta, permanencia, entre otras.
La elección del modelo y el diseño de la base de datos influyen muchísimo en cómo tu código Python gestionará los datos.
Pero tranqui, aquí te enseñaré todo lo que sé para que tus datos estén seguros y tu código sea eficiente siguiendo buenas prácticas de programación.
Cuando hablamos de modelo relacional de bases de datos nos referimos normalmente al modelo aplicado para trabajar con datos que tienen numerosas relaciones entre sí y que las seguirán teniendo a medida que se ingresen nuevos datos.
Al añadir o eliminar datos en la base de datos se crearán y eliminarán relaciones. Si eliges mal el modelo o no lo diseñas correctamente, puedes terminar con desorden, redundancia, errores y muchos problemas. Y créeme: los problemas con enormes cantidades de información mal relacionada se traducen en fuertes dolores de cabeza.
Si quieres profundizar en la historia del modelo relacional, te recomiendo leer el artículo de Edgar F. Codd en Wikipedia, el creador de este modelo en 1970.
El modelo relacional de bases de datos y sus componentes
El modelo relacional se basa en que los datos se almacenan en campos según atributos (columnas), dentro de registros (tuplas o filas), que conforman archivos (tablas). Estas tablas o datos se pueden relacionar entre sí.

Una base de datos relacional a menudo se compone de:
Campo
Un campo puede verse como una celda, un espacio o una variable. Normalmente admite un solo tipo de dato, aunque a veces puede admitir diferentes tipos (por ejemplo, un nick de usuario que contiene letras y números, o una dirección). Estos campos están dentro de registros. Cada registro es una tupla. Los campos se organizan en columnas, donde cada columna determina el tipo de dato.
Si almacenamos datos de una persona, un campo será su nombre (tipo texto), otro su teléfono (tipo entero). Cada persona será un registro: («Marcelo», 34351532123), («Carlos», 34351522113). No se admitiría (342134561, «Carla») porque el primer campo esperaría texto y el segundo número, y eso causaría problemas al buscar a Carla por su nombre.
Registro
Un registro es un conjunto de campos y puede verse como una tupla de datos o como una fila de una tabla. Así tenemos una tabla compuesta de columnas (atributos) (determinan el tipo de dato y tienen un identificador, por ejemplo «Nombre» (tipo texto)) y filas (registros) que representan una entidad. Ejemplo: («Josele», «Pérez», 18, «Av Arias 101»).
Archivo o tabla
Llamamos archivo al conjunto de registros (término más usado en el modelo no relacional). En el modelo relacional se le llama tabla. Una base de datos puede tener varias tablas. Por ejemplo, tabla Alumnos y tabla Profesores. Entre ambas tablas existe una relación. Para conectar una tabla con otra se utilizan claves o llaves.
Clave o llave
Una clave o llave es un identificador único. Puede diferenciar una entidad (un registro) de otra, o bien relacionar una entidad con otra. Todo registro debe tener un identificador único para poder referirse a él (clave primaria). Normalmente se especifica en la columna que se trata del tipo «clave».
Un identificador único de la entidad Persona no puede ser, por ejemplo, su «Nombre». ¿Por qué? Porque puede haber dos personas con el mismo nombre. Si quieres acceder a una de ellas, ¿cómo harías? Tendrías un problema.
Los atributos que se definan como claves primarias deben elegirse cuidadosamente.
Al hablar de IDENTIFICADOR ÚNICO hablamos de CLAVE PRIMARIA.
Clave o llave primaria
Una llave o clave primaria es un campo (o grupo de campos, en una clave primaria compuesta) que identifica de manera inequívoca un registro. Ningún otro registro puede tener el mismo valor en ese campo. Por eso es único e irrepetible, y normalmente se auto-incrementa.
Por ejemplo, al añadir dos registros, uno puede tener id = 1 y el otro id = 2. Si eliminamos el primero y añadimos otro, se asignará id = 3. Jamás se reutiliza una clave primaria eliminada, porque eso generaría inconsistencia de datos. La clave primaria puede ser un id, un DNI, un CUIT, etc.
Las claves primarias permiten relacionar un registro de una tabla con otro de otra tabla. Por ejemplo, en la tabla Alumnos y Profesores, podemos poner un id a cada alumno y profesor. Luego, en una tabla llamada Materias, usamos la clave primaria de Profesores para indicar qué profesor dicta cada materia. Así, en la tabla Materias tenemos una clave primaria (identificador de la materia) y una clave foránea (identificador del profesor).
Si quieres profundizar en el concepto de clave primaria, te recomiendo leer el artículo de Wikipedia sobre clave primaria.
Es importante diferenciar los dos tipos de claves:

Las claves FORÁNEAS identifican y determinan una relación. Pueden ser internas (dentro de la misma tabla) o externas (en una tabla aparte, como en el ejemplo de CURSOS).
El Alumno «Mariano», cuya clave primaria id_Alumno = 1, cursa dos materias con id_curso = 101 y 102 (Python y Bases de datos).
En la tabla Alumno_Curso (tabla intermedia) se registran las relaciones: (id_Alumno=1, id_Curso=101) y (id_Alumno=1, id_Curso=102). Así, un alumno puede tener muchos cursos, y un curso puede tener muchos alumnos (relación N:N).
Una clave puede identificar una entidad (registro) de las demás, o una relación (que también es una entidad) entre ellas.
De ello dependerá que sea primaria o foránea.Las foráneas pueden ser internas (en la misma tabla) o externas (en una tabla aparte).
Clave o llave foránea
Veamos otro ejemplo:

Fíjate que en cada tabla, excepto en VENTAS, encontramos claves primarias (id_Cliente, id_Producto, id_Fecha). Las llaves foráneas son una limitación referencial entre dos tablas. Identifican una columna o grupo de columnas en una tabla (hija) que se refiere a otra tabla (maestra). Las columnas en la tabla hija deben ser la clave primaria o una candidata en la tabla referenciada.
En la tabla VENTAS, todas las claves son foráneas y permiten relacionar los registros de las demás tablas a través de sus claves primarias. Así se crea una «relación» entre las tablas.
Para profundizar más, te recomiendo leer el artículo de Wikipedia sobre clave foránea.
Relaciones
Esta es la parte más importante del modelo relacional. Su nombre proviene precisamente de las relaciones entre los datos y la facilidad para establecerlas. Una base de datos relacional tendrá relaciones definidas por el diseñador, con ciertos criterios y tipos de relaciones. Todas se definen mediante una clave foránea (interna o externa). En el diagrama anterior, las líneas con 1 y n simbolizan una relación «uno a varios»: un cliente puede participar en varias ventas.
Los tipos de relaciones más comunes son:
- 1:1 (uno a uno): Un registro de una tabla se relaciona con un solo registro de otra tabla. Ejemplo: una persona tiene un solo pasaporte.
- 1:N (uno a muchos): Un registro de una tabla se relaciona con muchos registros de otra tabla. Ejemplo: un cliente tiene muchas ventas.
- N:N (muchos a muchos): Muchos registros de una tabla se relacionan con muchos registros de otra tabla. Ejemplo: un alumno cursa muchas materias, y una materia tiene muchos alumnos. Se resuelve con una tabla intermedia.
El tipo de dato nulo (NULL) en el modelo relacional
«En una clave primaria, el valor nulo está prohibido.»
Principio fundamental del modelo relacional
El valor nulo representa un campo que aún no ha sido definido o cuyo valor se desconoce, pero no su tipo. El diseñador de la base de datos puede permitir o no valores nulos. Por ejemplo, en la tabla Alumnos podemos permitir dejar vacío el número de teléfono al rellenar un formulario e insertar NULL en la base de datos para ese campo.
Si quieres profundizar en el concepto de NULL en SQL, te recomiendo leer el artículo de Wikipedia sobre NULL en SQL.

Jamás, jamás debemos permitir valores nulos en campos importantes para consultas, y menos en claves primarias o foráneas. Una clave primaria o foránea no puede admitir valores nulos.
Errores comunes con el tipo «NULL» en bases de datos relacionales
Es importante saber que NULL no es igual a una cadena vacía ('') ni al número cero. NULL significa «ausencia de valor» o «valor desconocido».
No se puede comparar con =; se usa IS NULL o IS NOT NULL. Por ejemplo, WHERE telefono IS NULL encuentra registros sin teléfono. Confundir NULL con '' o 0 es un error común para quienes empiezan.

No permitir valores nulos se configura al crear la tabla. Así evitamos que el usuario deje en blanco atributos importantes como nombre, apellido, edad, etc.
Un valor nulo puede reemplazarse después por un valor real igualmente, siempre que sea del tipo definido. Por ejemplo, un usuario puede dejar su edad en blanco (obtenemos NULL) y luego completarla con un número entero. Jamás podrá colocar otro tipo de dato (como texto), porque el diseñador ya especificó el tipo.
📚 Serie de Bases de Datos – Sigue profundizando
Este es el tercer post de la serie. Si quieres dominar las bases de datos desde cero hasta el nivel profesional, te recomiendo seguir estos posts en orden:
Conceptos básicos: datos, información, campos, registros y tablas.
Aprende las diferencias entre SQL y NoSQL, cuándo usar cada uno y sus características clave.
(Este post) – Profundiza en el modelo relacional: claves primarias, foráneas, relaciones y NULL.
Domina las reglas de normalización para diseñar bases de datos eficientes y sin redundancias.
🔥 ¿Y después? Una vez que domines estos conceptos, estarás listo para conectar tus aplicaciones Flask a bases de datos reales como MySQL, crear APIs REST y desplegar proyectos profesionales. ¡El cielo es el límite!
📖 Recursos externos para profundizar:
En estos posts de bases de datos comencé explicando que existen distintos modelos y formas de trabajar con las bases de datos porque pretendo que aprendas desde la base o el inicio a manejar los datos correctamente, pensando como un verdadero desarrollador.
Por supuesto, podría omitir mucho más las explicaciones y ejemplos que utilizo, o más bien hacerlo más «práctico». Pero está bueno que logres fijar estos conocimientos. Créeme que te ayudarán en momentos de profunda oscuridad 😂

Al final de estos posts, aprenderás a diseñar tus modelos y bases de datos relacionales para trabajar con MySQL, SQLite, MongoDB, etc., y podrás crear aplicaciones complejas sin incoherencias en la gestión de los datos.
¡Ahora ve a contarle a tus amigos lo que has aprendido… NEEERD! 😂
📅 Última actualización: agosto 7, 2026
