Saltar la navegación

4.- Integridad referencial.

Caso práctico

Ana.
Ministerio de Educación (Uso educativo nc)



Ana tiene una duda en el planteamiento de la base de datos del proyecto de la plataforma de juegos online y se la plantea a Juan: ¿Qué ocurre si el registro correspondiente a los datos de un determinado juego es eliminado y existen partidas creadas de dicho juego? Juan le responde que para eso existe la integridad referencial, que además asegurará otras cosas como por ejemplo que no puedan existir partidas que reflejen que su creador es un usuario que no existe en la base de datos.

Garantiza que una entidad (fila o registro) siempre se relaciona con otras entidades válidas, es decir, que existen en la base de datos. Implica que en todo momento dichos datos sean correctos, sin repeticiones innecesarias, datos perdidos y relaciones mal resueltas. Dicho de otro modo, todo valor de clave ajena se corresponde con una valor de clave primaria en otra tabla o es Nula.

Dos tablas pueden ser relacionadas entre ellas si tienen en común uno o más campos, que reciben el nombre de clave ajena. La restricción de integridad referencial requiere que haya coincidencia en todos los valores que deben tener en común ambas tablas. Cada valor del campo que forma parte de la integridad referencial definida, debe corresponderse, en la otra tabla, con otro registro que contenga el mismo valor en el campo referenciado.

Siguiendo con el ejemplo de juegos online, supongamos que en una determinada partida de un juego, se han unido una serie de usuarios. En la tabla de PARTIDAS existe un campo de referencia al tipo de juego al que corresponde, mediante su código de juego. Por tanto, no puede existir ninguna partida cuyo código de juego no se corresponda con ninguno de los juegos de la tabla JUEGOS.

Dos tablas unidas por flechas.
Ministerio de Educación y FP (Uso educativo nc)

En este ejemplo, no se cumple la integridad referencial, porque la partida "PARTIDA03" corresponde al juego cuyo código es 4, y en la tabla JUEGOS no existe ningún registro con ese código.

Para que se cumpla la integridad referencial, todos los valores del campo Cod_Juego de la tabla PARTIDAS deben corresponderse con valores existentes en el campo Codigo de la tabla JUEGOS.

Cuando se habla de integridad referencial se utilizan los siguientes términos:

  • Clave ajena: También llamada clave foránea, es el campo o conjunto de campos incluidos en la definición de la restricción que deben hacer referencia a una clave de referencia. En el ejemplo anterior, la clave ajena sería el campo Cod_Juego de la tabla PARTIDAS.
  • Clave de referencia: Clave única o primaria de la tabla a la que se hace referencia desde una clave ajena. En el ejemplo, la clave de referencia es el campo Codigo de la tabla  JUEGOS.
  • Tabla hija o dependiente: Tabla que incluye la clave ajena, y que, por tanto, depende de los valores existentes en la clave de referencia. Correspondería a la tabla PARTIDAS del ejemplo, que sería la tabla hija de la tabla JUEGOS.
  • Tabla padre o de referencia: Corresponde a la tabla que es referenciada por la clave ajena en la tabla hija. Esta tabla determina las inserciones o actualizaciones que son permitidas en la tabla hija, en función de dicha clave. En el ejemplo, la tabla JUEGOS es padre de la tabla PARTIDAS.

Columna que existiendo como dependiente en una tabla, es a su vez clave primaria en otra tabla