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

Claves foráneas - ¿Qué hacen por mí?

Las claves foráneas proporcionan integridad referencial. Los datos en una columna de clave externa se validan:el valor solo puede ser uno que ya exista en la tabla y la columna definidas en la clave externa. Es muy efectivo para detener los "datos incorrectos":alguien no puede ingresar lo que quiera:números, texto ASCII, etc. Significa que los datos están normalizados:los valores repetidos se han identificado y aislado en su propia tabla, por lo que no hay más preocupaciones. sobre cómo tratar la distinción entre mayúsculas y minúsculas en el texto... y los valores son consistentes. Esto lleva a la siguiente parte:las claves externas son lo que usa para unir tablas.

Su consulta para los proyectos que tiene un usuario no funcionaría:está haciendo referencia a una columna de USERS tabla cuando no hay referencia a la tabla en la consulta, y no se utiliza ninguna subconsulta para obtener esa información antes de vincularla a PROJECTS mesa. Lo que realmente usarías es:

SELECT p.*
   FROM PROJECTS p
   JOIN USERS u ON u.user_id = p.creator
WHERE u.username = 'John Smith'