sql >> Base de Datos >  >> RDS >> Mysql

¿Por qué necesito usar una clave externa si puedo usar DONDE?

No es estrictamente necesario para la consulta, es cierto. Existe por varias razones:

  1. Como una restricción en la tabla para evitar que insertes algo que no apunta a nada;
  2. Como pista para el optimizador; y
  3. Por razones históricas donde se necesitaba más.

(1) es probablemente el más importante de los tres. Esto se llama integridad referencial . Significa que si hay un valor en una clave externa, habrá un registro correspondiente con ese valor como clave principal en la tabla principal.

Dicho esto, no todas las bases de datos admiten la integridad referencial (p. ej., tablas MySQL/MyISAM) y las que sí lo hacen no necesariamente la aplican (por motivos de rendimiento).