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. Bases de datos relacionales

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.

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: centro educativo

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

  • Denominación del grupo: 1A, 1B, 3A, etc.
  • 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 podemos 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:

   
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 (1:N).
  • Uno a uno (1:1).
  • Muchos a muchos (N:N).

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 de un centro educativo

Si volvemos a la base de datos de un centro educativo con dos tablas como son Alumnos y Grupos, tenemos que:

  • Dado 1 alumno, sólo puede pertenecer a 1 grupo
  • Dado 1 grupo, puede tener varios alumnos.

3.1.2. Otros ejemplos

Otro ejemplo de este tipo de relaciones podría ser entre una tabla con árbitros y otra con partidos de tenis, ya que:

  • Dado un árbitro, puede haber arbitrado muchos partidos de tenis
  • Dado 1 partido de tenis, sólo ha sido arbitrado por un árbitro.

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. Ejemplo. Base de datos de un centro educativo

Si volvemos a la base de datos de un centro educativo, tenemos que otro ejemplo sería el de un tutor con un grupo:

  • Cada grupo sólo puede tener 1 tutor
  • Cada tutor sólo puede tener 1 grupo

3.2.2. Otros ejemplos

Otro ejemplo de este tipo de relaciones podría ser entre una tabla con países y otra con jefes de gobierno:

  • Dado un país sólo tiene un jefe de gobierno (normalmente).
  • Dado un jefe de gobierno, lo es sólo de un país.

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.

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. Posteriormente trataremos el concepto de clave ajena o externa.

3.3.1. Ejemplo. Base de datos de un centro educativo

Si volvemos a la base de datos de un centro educativo, tenemos que otro ejemplo sería el de un instituto donde las tablas PROFESORES y GRUPOS están relacionadas:

  • Cada profesor puede impartir clase a varios grupos
  • Cada grupo puede tener varios profesores

3.3.2. Otros ejemplos

Otro ejemplo de este tipo lo tenemos en la relación entre una tabla con películas y una tabla con intérpretes (actores) porque:

  • Dada una película en particular, puede tener muchos intérpretes
  • Dado un intérprete, éste puede haber intervenido en muchas películas.
   
Ejercicios
Ejercicio
 

Cuestionario

  • Contesta a las preguntas del cuestionario.
   
Contenidos
Contenidos
 

4. Relaciones en la base de datos de Biblioteca

Si nos fijamos en la base de datos “Biblioteca” podemos ver que se está repitiendo el mismo valor muchas veces: por ejemplo, el valor de soporte “Papel” 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, "Papek”, y tengamos un nuevo soporte que no corresponde a ningún libro, ya que ni siquiera existe.

Puede ocurrir también que todos los técnicos de biblioteconomía se pongan de acuerdo y decidan que el soporte “Papel” no tiene un nombre adecuado y que es mejor llamarlo “Papel-clásico”. Entonces, en la tabla LIBRO, se debe ir uno a uno cambiando el nombre y con cuidado de no equivocarse al teclear. Quizás si tenemos cuatro libros en este soporte no nos parezca un gran inconveniente hacer este cambio cuatro veces, pero si resulta que es una colección de trescientos libros de este soporte puede que el esfuerzo 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 LIBRO 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 libros.

Crear tabla SOPORTE

  • Abre la base de datos "biblioteca".
  • 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 (papel, libro electrónico, MP3, etc.)

  • 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 Clave principal.
  • El diseño de la tabla quedará como se muestra:

  • Guarda la tabla con el nombre SOPORTE.

Añadir datos en la tabla SOPORTE

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

  • Guarda los datos.
   
Contenidos
Contenidos
 

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

A la hora de establecer una relación uno a muchos entre dos tablas es indispensable que se cumplan 3 CONDICIONES:

  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.

5.1. Clave ajena o externa

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

5.1.1. 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.

5.2. Base de datos: Biblioteca

Según hemos explicado previamente, existe claramente una relación entre las tablas LIBRO y SOPORTE. Si consideramos (para simplificar) que UN LIBRO SÓLO PUEDE ESTAR PUBLICADO EN UN SOPORTE, el tipo de relación que existe entre la tabla SOPORTE y la tabla LIBRO sería del tipo uno a muchos (1:N), ya que:

  • Por ejemplo, el soporte "Papel" tendrá varios libros relacionados que están en dicho soporte.
  • Dado un libro, sólo está publicado en un tipo de soporte.
  • Y el campo "Soporte" de la tabla LIBRO será la clave ajena o externa que relaciona con tabla 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. "Papel"), puede haber muchos libros publicados en ese tipo de formato.
    • (1) Dado un libro, sólo está publicado en un tipo de soporte. Recuerda que hemos considerado, para simplificar, que un libro sólo puede estar publicado en un soporte.

5.3. 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 LIBRO se corresponden con algún registro de la tabla SOPORTE. Por ejemplo, si tenemos un libro con soporte "Papel", é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 LIBRO 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 LIBRO.

  • Ve a la base de datos "biblioteca".
  • 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 Añadir tablas.
  • Selecciona las tablas LIBRO y SOPORTE con el botón Añadir.

  • Pulsa el botón Cerrar.

En nuestro caso, en la tabla LIBRO tenemos un campo “Soporte” que hace referencia al tipo de soporte en que está publicado el libro. 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 LIBRO 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 LIBRO. Para ello:

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

  • Guarda los cambios.
  • Cierra la pantalla de relaciones.
   
Contenidos
Contenidos
 

6. 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
 

Verificar integridad referencial

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 libro 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 LIBRO 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 LIBRO.

Caso 2. Modificar un soporte que tiene libros relacionados

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

  • Guarda los cambios.

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

  • 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 libros relacionados

  • Ve a la tabla SOPORTE y haz doble clic sobre ella.
  • Elimina el registro con el tipo “Papel”. 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 libros relacionados en la tabla LIBRO.

  • 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 LIBRO.
  • Guarda los cambios en la base de datos.
  • Cierra la base de datos "biblioteca".
   
   
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.