Bases de datos en la enseñanza

2 / Diseño de tablas

Relaciones entre tablas

OpenOffice Base es un gestor de base de datos relacional, entre otras cosas,porque permite establecer vínculos o relaciones entre las tablas que lo componen. El objetivo de estas relaciones sería principalmente evitar la duplicidad de información, así como optimizar el rendimiento de la base de datos.

Tipos de relaciones

La manera en que se relacionan las tablas entre sí da lugar a comportamientos diferentes. Podemos definir tres tipos de relaciones:

De todas ellas la más utilizada y recomendable en la mayoría de los casos será el modelo Uno a muchos.

Uno a muchos

En las relaciones de uno a muchos cada registro de una tabla A, a la que llamaremos tabla primaria, puede estar enlazado con más de un registro de otra tabla B, a la que llamaremos tabla secundaria. En cambio, cada registro de la tabla B sólo puede estar enlazado a un registro de la tabla A.

Tomando como referencia nuestra base de datos de ejemplo, cada alumno de la tabla Alumnos estará relacionado con un único registro de la tabla Cursos. Y a la inversa, a cada registro de la tabla Cursos le pueden corresponder varios alumnos de la tabla Alumnos. Para que te resulte más sencillo el razonamiento lógico sería el siguiente: cada alumno sólo puede pertenecer a un curso (lado uno de la relación) mientras que a un mismo curso pueden pertenecer varios alumnos (lado muchos de la relación). Observa la figura 2.34.

Representación del modelo uno a muchos

Figura 2.34

Este sea quizás uno de los conceptos del curso más complicados de entender pero no te preocupes, con algunos ejemplos y algo de práctica no tendrás ningún problema para establecer relaciones entre tablas.

Muchos a muchos

En las relaciones Muchos a muchos a cada registro de la tabla A se le pueden asociar varios registros de la tabla B y cada registro de la tabla B puede estar relacionado con más de un registro de la tabla A. Este tipo de relaciones no son muy recomendables y debemos tratar de evitarlas utilizando tablas intermedias en las que se utilizarían relaciones de uno a muchos como puedes ver en la figura 2.35.

Deshacer una relación muchos a muchos y de muchos a uno

Figura 2.35

Un ejemplo de relación de este tipo lo encontramos en la relación entre profesores y cursos ya que un profesor puede dar clase en más de un curso, y a su vez, cada curso dispone de varios profesores impartiendo distintas materias... En nuestro ejemplo hemos evitado esta situación con la tabla ProfesoresCurso, que se relaciona con las tablas ProfesoresCursos, de esta forma mantenemos la información ordenada y podemos obtener, por ejemplo: “un listado de todos los profesores que imparten clase en 1ºA”

Uno a uno

Cada registro de la tabla A se relaciona con un único registro de la tabla B y cada registro de la tabla B sólo se relaciona con un elemento de la tabla A. Este tipo de relaciones son poco comunes.

Podemos ejemplificar este tipo de relación si tuviéramos una tabla, llamada Privada, en la que se almacena información privada de cada alumno, como su DNI. En este caso, a cada registro de la tabla Alumnos le corresponde un registro de la tabla Privada, con el DNI del alumno del registro, y a cada registro de la tabla Privada le corresponde un único registro de la tabla Alumnos.

Establecer relaciones entre tablas

Como requisito indispensable para establecer una relación entre dos tablas es necesario que ambas tablas tengan un campo en común que además debe cumplir una serie de requisitos:

El campo debe ser del mismo tipo en ambas tablas. Habitualmente se suelen utilizar tipos enteros (INTEGER) para este propósito, aunque nos valdría igualmente cualquier otro tipo siempre y cuando sea el mismo en las dos tablas.

Después de leer estas condiciones seguro que cobra mucho más sentido la importancia de una buena planificación. Imagina que tienes que cambiar el tipo de datos de una tabla para poder establecer una relación y pierdes todo su contenido.

Para entender mejor toda esta información, veamos en la siguiente actividad los pasos necesarios para establecer relaciones en OpenOffice Base.

Antes de continuar debes saber que no puede existir ningún registro de la tabla secundaria que no esté enlazado con la tabla primaria y del mismo modo, no será posible eliminar un registro de la tabla primaria si tiene enlazados registros de la tabla secundaria. Todo este tiene que ver con la definición de “Integridad referencial” de las bases de datos relacionales.

Actividad 8

Veamos cómo crear la primera relación entre las tablas Alumnos y Cursos.

  1. Para la siguiente actividad te proporcionamos la base de datos denominada base2b.odb, donde ya se encuentran todas las tablas creadas y hemos incluidos algunos datos para que puedas trabajar más cómodamente.
  2. Desde la ventana principal de OpenOffice Base ejecuta el comando Herramientas > Relaciones para mostrar la ventana Diseño de relación que puedes ver en la figura 2.36.

Ventana Diseño de relación

Figura 2.36

  1. Si no hemos definido aún ninguna relación, Base mostrará por defecto el cuadro de diálogo Agregar tablas como muestra la figura 2.37. Si por algún motivo no aparece este cuadro de diálogo utiliza el botón que hemos resaltado en la misma figura. Para empezar, haz doble clic sobre la tabla Alumnos y sobre la tabla Cursos.

Cuadro de diálogo Agregar tablas

Figura 2.37

  1. En la ventana Diseño de relación aparecerán las dos tablas junto con todos sus campos como puedes ver en la figura 2.38. Haz clic en el botón Cerrar del cuadro de diálogo Agregar tablas.

Tablas incluidas en la ventana Diseño de relación

Figura 2.38

  1. A continuación vamos a establecer la relación entre el campo Grupo de la tabla Alumnos y el campo IdCurso de la tabla Cursos. Para ello haz clic en el campo IdCurso de la tabla Cursos y sin soltar arrastra hasta caer sobre el campo Grupo de la tabla Alumnos. Aparecerá una línea que unirá ambos campos, indicando que se ha establecido la relación (figura 2.39).

Relación definida entre dos tablas

Figura 2.39

Junto a IdCurso Aparece un 1 y una pequeña n junto al campo Grupo indicando que se trata de una relación uno a muchos en la que cada alumno pertenece a un grupo y cada grupo puede tener asociado varios alumnos .

Actividad 9

  1. A continuación debemos añadir las restantes tablas y relaciones de nuestra base de datos. Si no te encuentras en la ventana relaciones, elige el menú Herramientas y selecciona el comando Relaciones. A continuación, haz clic en el icono Agregar tablas .
  2. Añade todas las tablas disponibles y cuando termines, haz clic en el botón Cerrar del cuadro de diálogo Agregar tablas.
  3. Establece las relaciones según el resultado que puedes comprobar en la figura 2.40. Por ejemplo, haz clic en el campo Departamento de la tabla Profesores y arrastra hasta el campo IdDepartamento de la tabla “Departamentos”, con esto ya tendrás definida una nueva la relación entre estas dos tablas.
  4. Recuerda que puedes hacer clic sobre el título de cualquiera de las tablas y moverla hasta la posición que desees dentro de la ventana de relaciones. Este aspecto es sobre todo por comodidad y por mejorar visualmente la compresión del esquema de relaciones.

Esquema completo de relaciones

Figura 2.40

 

Otra forma de establecer una relación entre dos tablas es utilizar el botón situado en la barra de herramientas. En este caso, OpenOffice Base muestra el cuadro de diálogo que puedes ver en la figura 2.41. En él, debemos seleccionar en las listas desplegables situadas en la parte superior, las dos tablas implicadas en la relación para después seleccionar los campos que se vincularán.

Cuadro de diálogo Relaciones

Figura 2.41