Skip to main content

Relaciones uno a muchos en una base de datos

Base de Datos - Relación Uno a Muchos (Abril 2025)

Base de Datos - Relación Uno a Muchos (Abril 2025)
Anonim

Una relación uno a varios en una base de datos ocurre cuando cada registro en la Tabla A puede tener muchos registros vinculados en la Tabla B, pero cada registro en la Tabla B puede tener solo un registro correspondiente en la Tabla A. Una relación uno a muchos en una base de datos es el diseño de base de datos relacional más común y está en el corazón del buen diseño.

Considerar la relación entre un profesor y los cursos que imparten. Un profesor puede enseñar varios cursos, pero el curso no tendría la misma relación con el profesor.

Por lo tanto, para cada registro en una tabla de profesores, puede haber muchos registros en la tabla de cursos. Esta es una relación de uno a muchos: un maestro a varios cursos.

Por qué es importante establecer una relación uno a muchos

Para representar una relación de uno a varios, necesita al menos dos tablas. A ver por qué.

Quizás creamos una tabla en la que queríamos registrar el nombre y los cursos impartidos. Podríamos diseñarlo así:

Profesores y cursos
ID del profesorNombre del profesorCurso
Profesor_001CarmenBiología
Profesor_002VerónicaMates
Profesor_003JorgeInglés

¿Qué pasa si Carmen enseña dos o más cursos? Tenemos dos opciones con este diseño. Podríamos simplemente agregarlo al registro existente de Carmen, así:

Profesores y cursos
ID del profesorProfesor_NombreCurso
Profesor_001CarmenBiología, matematicas
Profesor_002VerónicaMates
Profesor_003JorgeInglés

Sin embargo, el diseño anterior es inflexible y podría ocasionar problemas más adelante al intentar insertar, editar o eliminar datos.

Hace difícil la búsqueda de datos. Este diseño viola el primer principio de la normalización de la base de datos, Primera forma normal (1NF), que establece que cada celda de la tabla debe contener una pieza de datos única y discreta.

Otra alternativa de diseño podría ser simplemente agregar un segundo registro para Carmen:

Profesores y cursos
Profesor_CARNÉ DE IDENTIDADProfesor_NombreCurso
Profesor_001CarmenBiología
Profesor_001CarmenMates
Profesor_002VerónicaMates
Profesor_003JorgeInglés

Esto se adhiere a 1NF pero sigue siendo un diseño de base de datos deficiente porque introduce redundancia y podría inflar innecesariamente una base de datos muy grande. Más importante aún, los datos podrían volverse inconsistentes. Por ejemplo, ¿qué pasa si el nombre de Carmen cambia? Alguien que trabaje con los datos puede actualizar su nombre en un registro y no actualizarlo en el segundo registro. Este diseño viola la Segunda Forma Normal (2NF), que se adhiere a 1NF y también debe evitar las redundancias de varios registros al separar los subconjuntos de datos en varias tablas y crear una relación entre ellos.

Cómo diseñar una base de datos con relaciones uno a varios

Para implementar una relación de uno a varios en la tabla de profesores y cursos, dividimos las tablas en dos y las vinculamos utilizando una clave externa.

Aquí, hemos eliminado la columna del curso en la tabla de profesores:

Maestros
Profesor_CARNÉ DE IDENTIDADProfesor_Nombre
Profesor_001Carmen
Profesor_002Verónica
Profesor_003Jorge

Y aquí está la tabla de cursos. Tenga en cuenta que su clave externa, Teacher_ID, vincula un curso a un profesor en la tabla de profesores:

Los cursos
Course_IDNombre del cursoID del profesor
Curso_001BiologíaProfesor_001
Curso_002MatesProfesor_001
Curso_003InglésProfesor_003

Hemos desarrollado una relación entre los profesores y la tabla de cursos utilizando una clave externa.

Esto nos dice que tanto la biología como las matemáticas son enseñadas por Carmen y que Jorge enseña inglés.

Podemos ver cómo este diseño evita cualquier posible redundancia, permite que los maestros individuales enseñen varios cursos e implementa una relación de uno a varios.

Las bases de datos también pueden implementar una relación de uno a uno y una relación de muchos a muchos.