LES CLÉS ÉTRANGÈRES
assurent simplement que vos données sont cohérentes.
Elles ne améliorent pas les requêtes en termes d'efficacité, elles font simplement échouer certaines requêtes incorrectes.
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 département
s'il y a des employés
associés.
Si vous fournissez ON DELETE CASCADE
à la définition de la CLÉ ÉTRANGÈRE
, les lignes référencées seront automatiquement supprimées avec celles référencées.
En tant que contrainte, LES CLÉS ÉTRANGÈRES
ralentissent un peu les requêtes.
Des vérifications supplémentaires doivent être effectuées lors de la suppression d'une ligne d'une table référencée ou de l'insertion dans une table référençant une autre.