Bases de Datos y relaciones ternarias

Bases de Datos y relaciones ternarias
Sin comentarios Facebook Twitter Flipboard E-mail

Las tareas de modelado a nivel de bases de datos pertenecen a la cultura de conocimiento que todos los desarrolladores tenemos . Sin embargo mi experiencia me ha convencido con el paso del tiempo de que es una parte del conocimiento que trabajamos poco. Lo hemos estudiado en los módulos o en la carrera y suponemos que es un conocimiento totalmente adquirido . Lamentablemente esto no es siempre cierto . Vamos a poner un ejemplo muy sencillo usando las siguiente tablas Curso, Aula ,Alumno.

Alumno-Curso-Aula

Alumno y Curso

Si nos ponemos a pensar un poco en las relaciones de cada parte podremos ver que un Alumno puede asistir a varios Cursos y un Curso puede tener varios Alumnos. Por lo tanto de entrada estamos ante una relación n a n entre ambos conceptos en la cual deberá aparecer una tabla intermedia para gestionar la relación a la cual denominaremos AlumnoCurso.

Alumno Curso

Alumno y Aulas

De igual manera sucederá con la relación entre Alumnos y Aulas . Un Alumno puede estar con el paso del tiempo en varias Aulas y un Aula puede haber recibido a varios Alumnos.Así pues aparece una tabla AulaCurso que se parece mucho a la anterior.

Aula-Alumno

Aula y Cursos

Por último nos encontramos con la relación entre Aula y Curso que se construye de una forma similar a las anteriores . Un Aula puede tener varios Cursos y un Curso se puede impartir en varias Aulas.Hemos terminado de construir las tres relaciones que necesitamos para completar el modelo.

Curso Aula

Diagrama

Por lo tanto estamos ante un diagrama entidad relación que tiene 6 tablas .Las primeras tablas definen los conceptos y las otras tablas definen las relaciones.

Seis Tablas

Cuando comencemos a utilizar este modelo, rapidamente nos daremos cuenta que las consultas a realizar son complejas . Mucha gente lo achacará a que se trata de conceptos muy relacionados entre sí y las consultas se complican . Lamentablemente el problema no es ese sino que se trata de un problema de modelado que esconde una relación ternaria. ¿Que es una relación ternaria? . No es ni mas de menos que una relación que involucra a tres tablas.

Relaciones ternarias y el concepto de Impartición

En este modelo nos hemos olvidado de un concepto clave el concepto de Impartición . Un Curso se puede impartir varias veces imparticiones, un Aula puede albergar varias imparticiones y una Impartición puede tener varios Alumnos . Así pues se nos ha escapado este concepto a la hora de construir nuestro modelo .Una vez añadamos el concepto a el modelo entidad relación, las consultas se simplificarán sobremanera .

El-concepto-de-imparticion

Es en este tipo de modelos donde los joins quedan muy simplificados, . Un libro interesante para comenzar a modelar o asentar conocimiento es: Beginning DataBase Design

GenBetaDev: Explicación gráfica de los Join en SQL y sus resultados

Comentarios cerrados
Inicio