La clé étrangère définit une relation parent - enfant entre deux tables. La clé primaire de la table parent est la clé étrangère des n lignes de la table enfant.
Maintenant, si cette clé primaire de la table parent obtient UPDATE, la RÈGLE DE MISE À JOUR entre en jeu. Soit toutes les lignes enfants sont également mises à jour, définies sur NULL ou autre. Cependant, la meilleure pratique consiste à avoir une clé primaire qui ne change JAMAIS (un ID fixe ou quelque chose du genre), c'est donc la règle la moins importante.
La plus importante est la règle DELETE - que se passe-t-il si la ligne parente est supprimée (par exemple, la commande est supprimée) ? Vous pouvez également supprimer toutes les lignes enfants (tous les éléments de la ligne de commande) avec CASCADE DELETE, ou vous pouvez définir leur clé étrangère sur NULL (ils n'ont plus de parent) - cela dépend entièrement de votre scénario concret.
Dans le scénario Commande/Lignes de commande, il peut être totalement utile de supprimer les lignes de commande lorsque la commande complète est supprimée, mais vous ne souhaitez probablement pas supprimer un produit, simplement parce qu'une commande qui y fait référence a été supprimée - il n'y a pas une seule réponse CORRECTE - cela dépend de votre scénario et de votre application.
Marc