Y a-t-il une bonne explication sur la façon d'utiliser la construction de clé étrangère de MySQL?
Je ne comprends pas tout à fait les documents MySQL eux-mêmes. Jusqu'à présent, j'ai manipulé 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 de MySQL?
la source
JOIN
- jacent peut être beaucoup moins efficace que deux DELETE utilisant FULL TABLE SCAN'sLes principaux avantages de l'utilisation de véritables clés étrangères sont d'assurer l'intégrité des données et de pouvoir configurer des actions en cascade sur des éléments associés lorsqu'un élément est modifié ou supprimé.
Par exemple, imaginez que vous programmez un forum. Vous avez une table «sujets» avec une clé primaire
topics.topic_id
, et vous avez une table «articles» où les articles sont attachés aux sujets avec la colonneposts.topic_id
, qui est une clé étrangère vers le tableau des sujets.Cette relation de clé étrangère garantit que chaque message est associé à un sujet valide. Si le seul sujet que vous avez a l'ID # 1, il est impossible qu'il existe un article dans la base de données attaché au sujet # 2. La base de données garantit cela.
Pour l'avantage en cascade, vous pouvez le configurer de sorte que si une rubrique est supprimée de la table des rubriques, la base de données supprime automatiquement toutes les publications de la table des publications qui étaient attachées à cette rubrique. C'est bien car cela supprime une étape que vous devez vous rappeler de faire manuellement, ce qui peut devenir assez complexe lorsque de nombreuses tables sont liées entre elles. Avec les clés étrangères, toutes les relations peuvent être nettoyées automatiquement.
la source
1.FOREIGN KEYS assurez-vous que vos données sont cohérentes.
2. Si nous appliquons la suppression en cascade à la définition de clé étrangère, la ligne de référence sera supprimée automatiquement lorsque la ligne parente sera supprimée.
3. Si nous appliquons sur Update Cascade à la définition de clé étrangère, la ligne enfant sera mise à jour automatiquement lorsque la ligne parent sera mise à jour.
Requête: ALTER TABLE enfant ADD FOREIGN KEY (parent_id) REFERENCES parent (id) ON UPDATE CASCADE ON DELETE CASCADE;
la source
Le principal avantage est que vous pouvez limiter les valeurs que vous pouvez saisir dans le tableau; si vous essayez d'entrer une valeur qui n'existe pas dans la table référencée, vous ne pourrez pas le faire.
De plus, si vous mettez à jour ou supprimez la valeur dans la table référencée, vous pouvez la configurer pour qu'elle mette à jour automatiquement la valeur ou supprime en cascade toute ligne contenant cette valeur.
C'est en effet une excellente fonctionnalité tirant parti de votre code.
la source