web-dev-qa-db-fra.com

mysql plusieurs clés étrangères dans une table à la même clé primaire

J'ai une table user avec userID comme clé primaire. J'ai une autre table appelée Friends. Dans la table Friends, j'ai deux utilisateurs comme amis représentés par les colonnes UserID et FrndID où les deux UserID et FrndID doivent être un userID dans le tableau user.

Je veux faire respecter l'intégrité des données. Puis-je utiliser quelque chose comme ça?

ADD CONSTRAINT `ufd_users_fk` FOREIGN KEY (`userId`, `friendId`)
REFERENCES `users` (`userId`, `userId`) ON DELETE CASCADE ON UPDATE CASCADE;

Je veux savoir est REFERENCESusers(identifiant d'utilisateur,identifiant d'utilisateur) référencer correctement une colonne plusieurs fois? La raison pour laquelle je ne crée pas 2 contraintes distinctes, c'est que les deux utilisateurs doivent exister dans la table user.

13
user1765876

Non, vous devez créer deux clés étrangères:

ADD CONSTRAINT `ufd_users_fk` FOREIGN KEY (`userId`) 
  REFERENCES `users` (`userId`) 
  ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `ufd_users_fk` FOREIGN KEY (`friendId`) 
  REFERENCES `users` (`userId`) 
  ON DELETE CASCADE ON UPDATE CASCADE;
14
Bill Karwin