Informática
Bases de datos

Tu Instituto Online
   


 
Nivel Básico Base: Relaciones entre tablas. Integridad referencial
Duración aproximada: 2 sesiones.
   
Objetivos Objetivos
  • Conocer el concepto de relación.
  • Conocer el concepto de clave ajena.
  • Crear y utilizar relaciones entre tablas.
  • Concepto de integridad referencial.
  • Comprobación de la integridad referencial.
   
Fuentes de información Fuentes de información
   
Contenidos
Contenidos
 

1. Introducción

Base, tal y como se comentó con anterioridad, 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á principalmente evitar la duplicidad de información y en consecuencia, optimizar el rendimiento de la base de datos. En esta unidad estudiaremos este concepto y otros relacionados con dicha relación.

2. Relaciones entre tablas

Tras crear tablas diferentes en la base de datos, necesitamos una forma de indicarle a Base cómo debe volver a combinar esa información.

El primer paso de este proceso es definir relaciones entre las tablas. Una vez realizada esta operación, podemos crear consultas, formularios e informes para mostrar información de varias tablas a la vez.

Una relación hace coincidir los datos de los campos clave (normalmente un campo con el mismo nombre en ambas tablas). En la mayoría de los casos, estos campos coincidentes son la clave principal de una tabla, que proporciona un identificador único para cada registro, y una clave externa de la otra tabla.

2.1. Ejemplo práctico

Para explicarlo, vamos a mostrar un ejemplo de base de datos de un centro educativo con dos tablas como son Alumnos y Grupos. Inicialmente estarán definidas de la siguiente manera:

En la tabla Alumnos tenemos toda la información que necesitamos sobre nuestros alumnos como:

  • Su número de expediente.
  • Su nombre y apellidos.
  • Su fecha de nacimiento.
  • El grupo al que pertenece el alumno.
  • La ubicación del grupo, es decir, el aula donde están los alumnos de ese grupo (Primera planta, edificio anexo, etcétera).
  • Cualquier tipo de comentario de interés: grupo de compensatoria, apoyo, etcétera.

Para la tabla Grupos nos podíamos conformar con la denominación del grupo (1A, 1B, 3A, etc.) pero le hemos añadido algunos datos que nos pueden resultar de interés:

  • Número total de alumnos que tiene el grupo.
  • El lugar donde se encuentra ubicado: Aula de música, Aula 205, Edificio principal, etc.
  • Cualquier otro dato de interés: Compensatoria, grupo de apoyo, etc.

Si nos fijamos en los datos podremos darnos cuenta que, al comprobar los datos incluidos en las tablas de Alumnos y Grupos, existe información que se repite en ambas:

Esta situación no es demasiado favorable cuando trabajamos con bases de datos donde habitualmente la cantidad de información que se maneja es importante. La solución pasa por relacionar  las tablas con información coincidente de modo que no exista duplicidad de información. Todo esto, traducido a un lenguaje más natural sería: "Para qué escribir dos veces lo mismo, si puedo hacerlo una sola y trabajar del mismo modo".

Volviendo a nuestro ejemplo, si relacionamos las tablas Alumnos y Grupos mediante el nombre del grupo sería suficiente con indicar en la tabla Alumnos este valor para obtener el número de alumnos del grupo, su ubicación y las posibles observaciones:

2.2. Base de datos: Discoteca

Si nos fijamos en la base de datos “Discoteca” podemos ver que se está repitiendo el mismo valor muchas veces: por ejemplo, “CD” aparece en varias filas. Es decir, al introducir el mismo valor de forma redundante se está posibilitando que en algún momento lo escribamos mal, por ejemplo, “CS”, y tengamos un nuevo soporte que no corresponde a ningún álbum, ya que ni siquiera existe.

Puede ocurrir también que todos los técnicos de música se pongan de acuerdo y decidan que el soporte “CD” no tiene un nombre adecuado y que es mejor llamarlo “CD-antiguo”. Entonces, en la tabla MUSICA, se debe ir uno a uno cambiando el nombre y con cuidado de no equivocarse al teclear. Quizás si tenemos cuatro álbumes de este soporte no nos parezca un gran problema hacer este cambio cuatro veces pero si resulta que es una colección de trescientos álbumes de este soporte puede que el problema parezca más importante.

La solución a los problemas anteriores está en separar la información que aparece repetida continuamente en una nueva tabla SOPORTE e indicar de alguna forma en nuestra base de datos que hay filas de la tabla MUSICA y de la tabla SOPORTE que están relacionadas.

  
Ejercicios
Ejercicio
 

Vamos a crear una nueva tabla para almacenar los distintos tipos de soporte para los álbumes de música.

Crear tabla SOPORTE

  • Abre la base de datos "discoteca".
  • Crea una nueva tabla en modo diseño.
  • Introduce los campos que se indican a continuación:
Campo Tipo Longitud Descripción

Soporte

Texto [VARCHAR]

20

Tipo de soporte en el que se encuentra almacenado (MP3, DVD, CD, etc.)

  • El diseño de la tabla quedará como se muestra:

  • Una vez creado el campo, márcalo como clave primaria. Para ello selecciona la fila y haz clic con el botón derecho del ratón seleccionando la opción Llave primaria.

  • Guarda la tabla con el nombre SOPORTE.

Añadir datos en la tabla SOPORTE

  • Una vez guardada haz doble clic con el ratón para abrir la tabla en vista de datos.
  • Inserta las siguientes filas:

  • Guarda los datos.
   
Contenidos
Contenidos
 

3. Tipos de relaciones

Las condiciones para establecer vínculos entre dos tablas no son siempre iguales, puesto que la manera en que se relacionan las tablas entre sí da lugar a comportamientos diferentes. En la estructura de cualquier base de datos encontramos principalmente tres tipos de relaciones que se describen del siguiente modo:

  • Uno a muchos.
  • Muchos a muchos.
  • Uno a uno.

3.1. Relación uno a muchos (1:n)

Este tipo se da cuando una fila de la primera tabla puede estar relacionada con muchas filas de la segunda tabla, pero una fila de la segunda sólo está relacionada con una de la primera.

3.1.1. Ejemplo. Base de datos Discoteca

Si consideramos que un álbum sólo puede estar grabado en un soporte, éste sería el tipo de relación que existe entre la tabla SOPORTE y la tabla MUSICA ya que, por ejemplo, el soporte MP3 tendrá varios álbumes relacionados que son de dicho soporte, pero dado un álbum sólo está relacionado con un tipo de soporte.

3.1.2. Ejemplo. Base de datos de un centro educativo

Otro ejemplo lo encontramos entre las tablas ALUMNOS Y GRUPOS, ya que cualquier alumno puede pertenecer a un solo grupo y cada grupo puede tener varios alumnos:

3.1.3. Clave ajena o externa

El campo relacionado de la tabla “muchos” se denomina Clave ajena o externa.

3.1.4. Ejemplos prácticos

Ejemplos de relaciones uno a muchos (1:n) los tenemos en:

Como podemos observar, existen varias relaciones:

  • Entre el campo Actividad de la tabla Calendario y el campo IdActividad de la tabla Actividades. El campo Actividad es una clave ajena.
  • Entre el campo EquipoA de la tabla Calendario y el campo IdEquipo de la tabla Equipos. El campo EquipoA es una clave ajena.
  • Entre el campo Grupo de la tabla Alumnos y el campo IdCurso de la tabla Cursos. El campo Grupo es una clave ajena.
  • Entre el campo Departamento de la tabla Profesores y el campo IdDepartamento de la tabla Departamentos. El campo Departamento es una clave ajena.

3.2. Relación uno a uno (1:1)

Este tipo de relación aparece con menos frecuencia y sucede cuando una fila de la primera tabla sólo puede estar relacionada con una fila de la segunda y una fila de la segunda tabla sólo puede estar relacionada con una de la primera.

3.2.1. Ejemplos prácticos

Un ejemplo de este tipo de relaciones podría ser entre una tabla con países y otra con jefes de gobierno, dado que, normalmente, un país sólo tiene un jefe de gobierno y un jefe de gobierno lo es sólo de un país.

Otro ejemplo sería el de un tutor con un grupo, ya que cada grupo solo puede tener un tutor y cada tutor solo puede tener un grupo:

3.3. Relación muchos a muchos (n:n)

Esta clase de relación ocurre cuando una fila de la primera tabla puede estar relacionada con muchas filas de la segunda tabla y una fila de la segunda tabla puede estarlo con muchas filas de la primera.

3.3.1. Ejemplo. Base de datos Videoclub

Un ejemplo de este tipo lo tenemos en la relación entre la tabla PELICULA y la tabla INTERPRETE (actores) porque, dada una película en particular, puede tener muchos intérpretes, y, viceversa, dado un intérprete, este puede haber intervenido en muchas películas.

3.3.2. Ejemplo. Base de datos de un centro educativo

Otro ejemplo sería el de un instituto donde las tablas PROFESORES y GRUPOS están relacionadas, ya que cada profesor puede impartir clase a varios grupos y cada grupo puede tener varios profesores:

Este tipo de relación sólo es posible si se define una tercera tabla (denominada tabla de unión) cuya clave principal consta de al menos dos campos: las claves externas de las Tablas A y B.

   
Ejercicios
Ejercicio
 

Cuestionario. Relaciones entre tablas

  • Descarga el cuestionario de preguntas. DESCARGAR
  • Renombra el archivo descargado como "relaciones".
  • Abre el documento "relaciones".
  • Contesta las preguntas del cuestionario.
  • Guarda los cambios.

Subir el cuestionario

  • Sube el fichero "relaciones" a la plataforma.
   
Contenidos
Contenidos
 

4. Establecer una relación uno a muchos (1:n)

A la hora de establecer una relación entre dos tablas es indispensable que se cumplan 3 requisitos:

  1. Ambas tablas deben tener un campo en común.
  2. Ambos campos deberán tener el mismo tipo (INTEGER, TEXTO, SMALL INTEGER, etc.) y el mismo tamaño.
  3. Uno de los campos deberá ser clave primaria en una de las dos tablas.

4.1. Base de datos: Discoteca

Según hemos explicado previamente, existe claramente una relación del tipo uno a muchos (1:n) entre las tablas MUSICA y SOPORTE. Y el campo "Soporte" de la tabla MUSICA será la clave ajena o externa que relaciona con tabla SOPORTE.

Si consideramos que un álbum sólo puede estar grabado en un soporte, éste sería el tipo de relación que existe entre la tabla SOPORTE y la tabla MUSICA ya que, por ejemplo, el soporte MP3 tendrá varios álbumes relacionados que son de dicho soporte, pero dado un álbum sólo está relacionado con un tipo de soporte.

Las relaciones entre tablas es un concepto un tanto abstracto. Sin embargo, si representamos gráficamente nuestro diseño, el significado queda mucho más claro.

Donde tenemos que:

  • Cada rectángulo se corresponde con una tabla.
  • Las flechas indican que las dos tablas están relacionadas.
  • Los números indican la cardinalidad. Es decir:
    • (N) Dado un soporte (por ej. CD), puede haber muchos álbumes grabados en ese tipo de formato.
    • (1) Dado un álbum, sólo está grabado en un tipo de soporte.

4.2. Inconsistencia de datos

Antes de definir una relación, debemos asegurarnos que los datos son coherentes, es decir, que los campos que están relacionados contienen la misma información.

En nuestro caso, debemos comprobar que los valores contenidos en el campo "Soporte" de la tabla MUSICA se corresponden con algún registro de la tabla SOPORTE. Por ejemplo, si tenemos un álbum con soporte CD, éste ha de estar presente en la tabla SOPORTE y el texto ha de coincidir tanto en mayúsculas como minúsculas.

   
Ejercicios
Ejercicio
 

Comprobar consistencia de datos

Verifica que los datos contenidos en el campo "Soporte" de la tabla MUSICA son coherentes con los datos de la tabla SOPORTE. En caso necesario, modifica los datos que corresponda.

Relaciones. Añadir tablas

Vamos a crear una relación entre las tablas SOPORTE y MUSICA.

  • Ve a la base de datos "discoteca".
  • Cierra todas las tablas abiertas.
   
Ojo

No es posible establecer relaciones entre tablas abiertas, ya que al estar introduciendo datos o modificando el diseño, éstas se encuentran bloqueadas.

   
 
  • Ve al menú Herramientas → Relaciones. Haz clic en el icono Agregar tablas.
  • Selecciona las tablas MUSICA y SOPORTE con el botón Añadir.

  • Pulsa el botón Cerrar.

En nuestro caso, en la tabla MUSICA tenemos un campo “Soporte” que hace referencia al tipo de soporte en que está grabado el álbum. Por tanto, la columna debe ser del mismo tipo de datos que la columna que sea clave primaria en la otra tabla y los valores que podrá contener será cualquiera de los valores que tome la clave primaria en dicha tabla. En definitiva, en la tabla Musica el campo “Soporte” debe ser del mismo tipo de datos que el campo de la tabla Soporte.

   
Ojo

Los campos relacionados no tienen porqué tener los mismos nombres, pero deben tener el mismo tipo de datos y el mismo tamaño. Es decir, deben contener el mismo tipo de información.

   
 

Crear relación

Ahora falta indicarle a Base explícitamente que las dos tablas están relacionadas y que vamos a utilizar para mantener dicha relación la columna “Soporte” de la tabla Musica. Para ello:

  • Arrastra del campo “Soporte” de Musica al campo “Soporte” de Soporte. Base ha creado una relación uno a muchos entre las 2 tablas.

  • Guarda los cambios en la base de datos.
  • Cierra la pantalla de relaciones.
   
Contenidos
Contenidos
 

5. Integridad referencial

En la relación que hemos definido en el apartado anterior, se impide que cualquier registro relacionado sea modificado o eliminado. Esta propiedad es lo que se conoce como integridad referencial.

   
Ojo

Cuando existe una relación entre 2 tablas, cualquier operación con los datos ha de respetar la relación. En caso contrario, no se realizará.

   
Ejercicios
Ejercicio
 

Una vez establecida una relación, comprobaremos que es correcta. Para ello sólo tenemos que intentar realizar alguna operación no permitida y ver que se cumple la integridad referencial.

Caso 1. Introducir un álbum con un soporte que no existe en la tabla SOPORTE

  • Haz clic en el botón Tablas de la Barra de Objetos.
  • Ve a la tabla MUSICA y haz doble clic sobre ella.
  • Introduce un nuevo registro con un soporte que no exista en la tabla SOPORTE. Por ejemplo:

  • Guarda los cambios.

Como podemos comprobar, Base nos muestra un mensaje de error porque estamos insertando un registro con un soporte que no existe en nuestra base de datos.

  • Pulsa Aceptar.
  • Haz clic a la izquierda sobre el lápiz con el botón derecho del ratón y elige la opción Deshacer: entrada de datos.
  • Cierra la tabla MUSICA.

Caso 2. Modificar un soporte que tiene álbumes relacionados

  • Ve a la tabla SOPORTE y haz doble clic sobre ella.
  • Modifica datos en el registro CD para que ahora sea CD1. Por ejemplo:

  • Guarda los cambios.

Como podemos comprobar, Base nos muestra un mensaje de error porque estamos modificando un registro de soporte que contiene álbumes relacionados en la tabla MUSICA.

  • Pulsa Aceptar.
  • Haz clic a la izquierda sobre el lápiz con el botón derecho del ratón y elige la opción Deshacer: entrada de datos.

Caso 3. Eliminar un soporte que tiene álbumes relacionados

  • Ve a la tabla SOPORTE y haz doble clic sobre ella.
  • Elimina el registro con el tipo “CD”. Haz clic a la izquierda sobre el triángulo con el botón derecho del ratón y elige la opción Eliminar filas. Por ejemplo:

  • Guarda los cambios.

Como podemos comprobar, Base nos muestra un mensaje de error porque estamos borrando un registro de soporte que contiene álbumes relacionados en la tabla MUSICA.

  • Pulsa Aceptar.
  • Haz clic a la izquierda sobre el lápiz con el botón derecho del ratón y elige la opción Deshacer: entrada de datos.

Cerrar la base de datos

  • Cierra la tabla MUSICA.
  • Guarda los cambios en la base de datos.
  • Cierra la base de datos "discoteca".
   
   
Creditos Créditos
Licencia de Creative Commons

Este documento es de dominio público bajo licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
TuInstitutoOnline.com M.Donoso, G.García, P.Gargallo, A.Martínez. v. 2.0.2.1.0

No se permite un uso comercial de la obra original ni de las posibles obras derivadas, la distribución de las cuales se debe hacer con una licencia igual a la que regula la obra original.

Los reconocimientos se realizan en el apartado Fuentes de información.

Los iconos empleados están protegidos por la licencia LGPL y se han obtenido de:
https://commons.wikimedia.org/wiki/Crystal_Clear
https://www.openclipart.org


Licencia de Creative Commons

Todas las capturas de pantalla tienen copyright y pertenecen a TuInsitutoOnline.com.

TuInstitutoOnline.com permite su uso siempre y cuando se muestren desde el dominio www.tuinstituoonline.com y NO PERMITE enlazar a ellas desde otros lugares.

Además, la estructura diseñada para mostrar el contenido de las unidades es propiedad de TuInstitutoOnline.com.

TuInstitutoOnline.com M.Donoso, G.García, P.Gargallo, A.Martínez. Versión 2021.