Mysql
 sql >> Base de données >  >> RDS >> Mysql

Clés étrangères - Que font-elles pour moi ?

Les clés étrangères assurent l'intégrité référentielle. Les données d'une colonne de clé étrangère sont validées - la valeur ne peut être qu'une valeur qui existe déjà dans la table et la colonne définies dans la clé étrangère. C'est très efficace pour arrêter les "mauvaises données" - quelqu'un ne peut pas entrer ce qu'il veut - des nombres, du texte ASCII, etc. Cela signifie que les données sont normalisées - les valeurs répétitives ont été identifiées et isolées dans leur propre table, donc il n'y a plus de soucis à propos de la sensibilité à la casse dans le texte... et les valeurs sont cohérentes. Cela mène à la partie suivante :les clés étrangères sont ce que vous utilisez pour joindre des tables.

Votre requête pour les projets d'un utilisateur ne fonctionnerait pas - vous faites référence à une colonne de USERS table lorsqu'il n'y a aucune référence à la table dans la requête, et qu'aucune sous-requête n'est utilisée pour obtenir cette information avant de la lier au PROJECTS table. Ce que vous utiliseriez vraiment serait :

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