Y a-t-il une raison de créer des contraintes entre les tables (à l'intérieur de SQLserver) de nos jours? Si oui, quand? La plupart des applications dans mon domaine sont construites sur des principes d'objet et les tables sont jointes à la demande. La demande est basée sur le besoin de l'application. Je ne chargerai pas un tas de tables contraintes pour une simple recherche, qui à son tour (après action) nécessite une autre recherche simple.
Les outils ORM tels que EntityContext, Linq2Data, NHibernate gèrent également les contraintes par eux-mêmes, au moins vous savez quelles tables ont besoin les unes des autres. Faire des contraintes à l'intérieur du serveur revient à faire (forcer) les mêmes changements deux fois?
Ce n'est généralement pas une question à décider, mais cette base de données est conçue de manière très différente. La conception semble régulière, reflétant principalement les objets utilisés par les applications. Ce qui me dérange, ce sont toutes les contraintes configurées dans SQLserver avec "not cascade". Ce qui signifie que vous devez jouer "chercher et trouver" lors du codage de nouvelles requêtes de base de données. Certains cas nécessitent jusqu'à 10 niveaux d'une commande exacte pour effectuer une seule suppression.
Cela me surprend et je ne sais pas comment le gérer.
Dans mon monde simple, ce paramètre fait que les contraintes perdent l'essentiel. OK si la base de données était accessible à partir d'hôtes sans connaissance de la conception.
Comment agiriez-vous dans ce scénario?
Pourquoi ne pas simplement supprimer toutes les contraintes de db et les conserver au niveau de l'application?