Les bases des clés étrangères dans MySQL?

Existe-t-il une bonne explication sur l’utilisation de la construction de clé étrangère de MySQL?

Je ne comprends pas tout à fait les documents MySQL eux-mêmes. Jusqu’à présent, je manipulais des choses comme des clés étrangères avec des jointures et du code de programmation.

Et la deuxième partie de la question, y a-t-il des améliorations à apporter en utilisant les clés étrangères intégrées à MySQL?

FOREIGN KEYS garantissent simplement la cohérence de vos données.

Ils n’améliorent pas les requêtes en termes d’efficacité, ils ne font qu’échouer certaines requêtes.

Si vous avez une relation comme celle-ci:

 CREATE TABLE department (id INT NOT NULL) CREATE TABLE employee (id INT NOT NULL, dept_id INT NOT NULL, FOREIGN KEY (dept_id) REFERENCES department(id)) 

, alors vous ne pouvez pas supprimer un department s’il a des employee .

Si vous fournissez ON DELETE CASCADE à la définition FOREIGN KEY , les lignes référencées seront automatiquement supprimées avec les références.

En tant que contrainte, FOREIGN KEY ralentit un peu les requêtes.

Une vérification supplémentaire doit être effectuée lors de la suppression d’une table référencée ou de l’insertion dans une table de référence.

Les principaux avantages de l’utilisation de clés étrangères réelles sont la garantie de l’intégrité des données et la possibilité de configurer des actions en cascade sur des éléments connexes lorsque quelque chose est modifié ou supprimé.

Par exemple, imaginez que vous programmez un forum. Vous avez une table “topics” avec la clé primaire topics.topic_id , et vous avez une table “posts” où les publications sont attachées aux rubriques avec la colonne posts.topic_id , qui est une clé étrangère à la table topics.

Cette relation de clé étrangère garantit que chaque publication est associée à un sujet valide. Si le seul sujet que vous avez a l’ID n ° 1, il est impossible qu’il existe un article dans la firebase database attaché au sujet n ° 2. La firebase database le garantit.

Pour l’avantage en cascade, vous pouvez le configurer de sorte que, si un sujet est supprimé de la table des rubriques, la firebase database supprime automatiquement tous les articles de la table des publications attachés à cette rubrique. C’est bien, car cela supprime une étape dont vous devez vous rappeler de faire manuellement, ce qui peut devenir assez complexe lorsque plusieurs tables sont liées entre elles. Avec les clés étrangères, toutes les relations peuvent être nettoyées automatiquement.

1. LES TOUCHES ÉTRANGÈRES assurent simplement la cohérence de vos données.

2. Si nous appliquons la suppression en cascade à la définition de la clé étrangère, la référence à la ligne sera automatiquement supprimée lorsque la ligne parente sera supprimée.

3. Si nous appliquons la mise à jour en cascade à la définition de la clé étrangère, la ligne enfant sera automatiquement mise à jour lorsque la ligne parente sera mise à jour.

Requête: ALTER TABLE enfant ADD FOREIGN KEY (parent_id) REFERENCES parent (id) ON UPDATE CASCADE ON DELETE CASCADE;

  1. vous ne pouvez pas supprimer la table parent directe, tout d’abord supprimer la clé étrangère de la table enfant que supprimer la table parent.

Le principal avantage est que vous pouvez limiter les valeurs que vous pouvez entrer dans la table; Si vous essayez d’entrer une valeur qui n’existe pas dans la table référencée, vous ne pourrez pas le faire.

En outre, si vous mettez à jour ou supprimez la valeur dans la table référencée, vous pouvez la définir pour mettre automatiquement à jour la valeur ou supprimer en cascade toute ligne contenant cette valeur.

C’est en effet une fonctionnalité intéressante qui exploite votre code.