Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Chaves Estrangeiras - O que elas fazem por mim?


As chaves estrangeiras fornecem integridade referencial. Os dados em uma coluna de chave estrangeira são validados - o valor só pode ser um que já exista na tabela e coluna definida na chave estrangeira. É muito eficaz em parar "dados ruins" - alguém não pode inserir o que quiser - números, texto ASCII, etc. Isso significa que os dados são normalizados - valores repetidos foram identificados e isolados em sua própria tabela, então não há mais preocupações sobre como lidar com maiúsculas e minúsculas no texto... e os valores são consistentes. Isso leva à próxima parte - chaves estrangeiras são o que você usa para unir tabelas.

Sua consulta para os projetos de um usuário não funcionaria - você está fazendo referência a uma coluna de USERS table quando não há referência à tabela na consulta e não há subconsulta sendo usada para obter essa informação antes de vinculá-la ao PROJECTS tabela. O que você realmente usaria é:
SELECT p.*
   FROM PROJECTS p
   JOIN USERS u ON u.user_id = p.creator
WHERE u.username = 'John Smith'