Uso de Foreign keys en Mysql

Estoy en un proceso de cambio de access a mysql y me he topado que en access la relación de tablas se realiza de una forma muy gráfica (arrastrando campo a a campo b). En este proceso me he topado con la creación de indices en mysql y las foreign keys. De los indices tengo muy clara su función, pero de los foreign keys no, ¿me pueden explicar un poco cual es su funcionalidad? ¿Y qué pasa si creo mi base de datos sin estas llaves?

1 respuesta

Respuesta
2

Las foreign keys (FK) son referencias de registros de una tabla a registros en otras tablas que condicionan la existencia de unas a las otras. Me explico con un ejemplo:

Imagina estas dos tablas para controlar los usuarios y las respuesas en todoexpertos:

Tabla: 'Usuarios'  ;  Campos: Código_usuario, nombre_usuario, fecha_alta

Tabla: 'Respuestas' ; Campos: Codigo_respuesta, Codigo_usuario, fecha_respuesta, Texto

La situación sería que para que exista una respuesta debe existir un usuario que la responda, por lo tanto, en la tabla respuestas debe existir una FK que la relacione con la tabla usuarios. En este caso la FK es el campo "Codigo_usuario" en la tabla "Respuestas".

Si a la hora de insertar un registro en la tabla Respuestas, el valor que pongamos en "codigo_usuario" no se encuentra en la tabla Usuario, la inserción devolverá un error de FK.

Este ejemplo es con un solo campo, pero una FK puede estar compuesta de múltiples campos.

¿Qué pasaría si creas la BD sin FKs?: Desde un punto de vista estricto, contando con que la programación de la aplicación sea perfecta, no pasaría nada pero siempre corres el riesgo de tener información no relacionada e incoherente debido a errores en inserciones, registros que se borren, actualicen etc. Es complicado controlar la integridad de una BD únicamente por código.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas