J'ai lu beaucoup de articles pour savoir pourquoi nous ne devrions pas avoir de logique métier à plusieurs endroits, mais essayez de le conserver en code BLL. Je comprends le point de la maintenance facile, et une meilleure compréhension de ce que le code fait.La logique métier dans la procédure stockée - toujours confus
Cependant, je n'ai jamais trouvé d'explication que devrions-nous faire dans les cas où l'application (répétition) de certaines règles métier à la procédure stockée réduirait considérablement le transfert de données de la base de données à l'application cliente? Par exemple, je travaille actuellement sur une présentation de données statis- tiques sur une période de temps plus longue. Actuellement, toutes les règles/règles métier sont dans la couche Logique d'entreprise (dll). Un utilisateur a une option pour afficher certains résultats au niveau du mois pour une année. Cela signifierait que, si je ne dois pas utiliser de règles métier dans une procédure stockée, je devrais renvoyer environ 1 000 000 enregistrements, puis appliquer des règles métier à ces enregistrements du côté client. Cependant, si je suis d'appliquer des règles d'affaires à la procédure stockée, il réduirait le nombre d'enregistrements renvoyés à 12.
ressemblerait à quelque chose comme un exemple d'application des règles métier ceci:
AVG(CASE WHEN Field1 IS NULL
THEN CASE WHEN c.Field2 = 1
THEN (cap1.Field3/cap1.Field4) * 60
ELSE CASE
..... etc
il n'est pas une logique simple, mais complexe. Et puisque ce type de logique pourrait répéter dans de nombreuses procédures stockées différentes, ce serait un candidat pour une fonction distincte dans la base de données, pour éviter le code répétitif.
Alors, quelle est la méthode recommandée ici? Et pourquoi?