Relaciones de uno a muchos en una base de datos

Tabla de contenido:

Relaciones de uno a muchos en una base de datos
Relaciones de uno a muchos en una base de datos
Anonim

Una relación de 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 de uno a varios en una base de datos es el diseño de base de datos relacional más común y es la base de un buen diseño.

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

Image
Image

Ejemplo de una relación de uno a muchos

Considere la relación entre un maestro y los cursos que imparte. Un profesor puede impartir varias clases, pero el curso no tendría la misma relación con el profesor.

Por lo tanto, para cada registro en una tabla de Profesores, podría haber muchos registros en la tabla de Cursos. Este ejemplo ilustra una relación de uno a muchos: un maestro para varios cursos.

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

Para representar una relación de uno a muchos, necesita al menos dos tablas. Veamos por qué.

Adherencia al diseño de la primera forma normal

Quizás creamos una tabla en la que queremos registrar el nombre y los cursos impartidos. Podríamos diseñar una tabla de Profesores y Cursos como esta:

Id_del_profesor Nombre_del_profesor Curso
Profesor_001 Carmen Biología
Profesor_002 Verónica Matemáticas
Profesor_003 Jorge Inglés

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

Id_del_profesor Profesor_Nombre Curso
Profesor_001 Carmen Biología, Matemáticas
Profesor_002 Verónica Matemáticas
Profesor_003 Jorge Inglés

Sin embargo, el diseño anterior es inflexible y podría generar problemas más adelante al insertar, editar o eliminar datos. Hace que sea difícil buscar datos.

Este diseño también viola el primer principio de la normalización de bases de datos, la primera forma normal (1NF), que establece que cada celda de la tabla debe contener un solo dato discreto.

La regla de la segunda forma normal

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

Profesor_ID Profesor_Nombre Curso
Profesor_001 Carmen Biología
Profesor_001 Carmen Matemáticas
Profesor_002 Verónica Matemáticas
Profesor_003 Jorge Inglés

Este enfoque se adhiere a 1NF pero sigue siendo un diseño de base de datos deficiente porque introduce redundancia y podría inflar una base de datos grande innecesariamente. Más importante aún, los datos podrían volverse inconsistentes.

Por ejemplo, ¿y si cambiara el nombre de Carmen? Alguien que trabaje con los datos podría actualizar su nombre en un registro y no actualizarlo en el segundo registro.

Este diseño viola el estándar Second Normal Form (2NF), que se adhiere a 1NF y también debe evitar las redundancias de múltiples registros. La regla 2NF logra esto separando subconjuntos de datos en múltiples tablas y creando una relación entre ellos.

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

Para implementar una relación de uno a varios en la tabla Profesores y Cursos, divida las tablas en dos y vincúlelas usando una clave externa.

Aquí, eliminamos la columna Curso en la tabla Profesores:

Profesor_ID Profesor_Nombre
Profesor_001 Carmen
Profesor_002 Verónica
Profesor_003 Jorge

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 Teachers:

Curso_ID Nombre_del_curso Id_del_profesor
Curso_001 Biología Profesor_001
Curso_002 Matemáticas Profesor_001
Curso_003 Inglés Profesor_003

Hemos desarrollado una relación entre la tabla Profesores y Cursos utilizando una clave externa. Este arreglo nos dice que Carmen enseña biología y matemáticas y que Jorge enseña inglés.

Podemos ver cómo este diseño evita posibles redundancias, permite que profesores individuales enseñen varios cursos e implementa una relación de uno a muchos.

Recomendado: