Les clés étrangères sont le meilleur moyen de garantir l'intégrité référentielle d'une base de données. Éviter les cascades parce que c'est magique, c'est comme tout écrire en assemblage parce que vous ne faites pas confiance à la magie des compilateurs.
Ce qui est mauvais, c'est la mauvaise utilisation des clés étrangères, comme les créer à l'envers, par exemple.
L'exemple de Juan Manuel est l'exemple canonique, si vous utilisez du code, il y a beaucoup plus de chances de laisser de faux DocumentItems dans la base de données qui viendront vous mordre.
Les mises à jour en cascade sont utiles, par exemple, lorsque vous avez des références aux données par quelque chose qui peut changer, disons qu'une clé primaire d'une table users est le nom, la combinaison de nom. Ensuite, vous voulez que les modifications de cette combinaison se propagent là où elles sont référencées.
@Aidan, Cette clarté dont vous parlez a un coût élevé, le risque de laisser des données fausses dans votre base de données, ce qui n'est pas petit . Pour moi, c'est généralement juste un manque de familiarité avec la DB et l'incapacité de trouver quels FK sont en place avant de travailler avec la DB qui alimentent cette peur. Soit cela, soit une utilisation abusive constante de la cascade, en l'utilisant là où les entités n'étaient pas liées conceptuellement, ou là où vous devez préserver l'histoire.
sql-server
balise.