OK, alors commençons par le début. Par exemple, je développe un gros projet. Ce n'est pas un secret pour nous tous que de tels projets contiennent beaucoup de logique commune. Supposons, par exemple, qu'une commande de boutique en ligne doive contenir certains articles et que la somme des prix de tous les articles soit exactement 1000. Donc, j'implémente cette logique dans l'application web MVC3 et je fais la validation sur commande. S'il y a des problèmes, il informera l'utilisateur des problèmes et lui demandera de republier le formulaire.Une bonne validation de la logique métier
Mais le projet a une autre partie importante. C'est DB. Ici, je peux également envelopper cette logique de validation dans une procédure stockée et ajouter des commandes uniquement à travers ce proc pour être sûr qu'il n'y a pas d'incohérence. (Ou devrais-je utiliser des contrôles sur la table pour être sûr?)
Voici le coincé que je cours. Il est nécessaire de dupliquer la logique à deux endroits pour obtenir l'intégrité des données. Bien sûr, je peux stocker la logique de validation uniquement du côté DB. Mais je doute qu'il va diminuer les performances de l'application.
Je suis sûr que les gars plus expérimentés ont une solution complète et élégante pour cette question. Alors, comment puis-je implémenter la logique uniquement à un endroit?
À propos de la quatrième raison. Je voulais seulement dire que la logique de validation, que vous ne pouvez pas implémenter en utilisant la fonctionnalité RDBMS comme les clés étrangères, les contraintes et ainsi de suite. Donc, en effet, il n'y a pas d'autre moyen que de changer de logique à deux endroits quand ça change? – kseen
@kseen: pas d'une manière pratique (je suis sûr que vous pourriez avoir SQL appeler un service Web ou une telle absurdité). Cependant, je vais mettre à jour – gbn
Je sais ce qu'il faut faire avec la logique ce qui est simple sur les tables croisées ou les vérifications d'agrégation. le sujet de la question est quoi faire avec la logique, qui diffère de mentionné ci-dessus. Donc, par exemple, est-il possible de vérifier que la somme des prix des articles de commande est égale à 1000? – kseen