Clés étrangères
appliquer l'intégrité référentielle
. Ces contraintes garantissent qu'une ligne dans une table order_details
avec un champ order_id
faisant référence à une orders
la table n'aura jamais de order_id
valeur qui n'existe pas dans les orders
table.
Les clés étrangères ne sont pas obligées d'avoir une base de données relationnelle fonctionnelle (en fait le stockage par défaut de MySQL moteur ne prend pas en charge les FK), mais ils sont absolument essentiels pour éviter les relations brisées et les lignes orphelines (c'est-à-dire l'intégrité référentielle). La capacité à appliquer l'intégrité référentielle au niveau de la base de données est requise pour le C dans ACID se tenir debout.
En ce qui concerne vos préoccupations concernant les performances, il y a en général un coût de performance, mais qui sera probablement négligeable. Je suggère de mettre toutes vos contraintes de clé étrangère, et de n'expérimenter sans elles que si vous avez de réels problèmes de performances que vous ne pouvez pas résoudre autrement.