Les versions ultérieures de SQL (2005+) semblent mieux optimiser l’utilisation des vues. Les vues sont les meilleures pour consolider les règles métier. EG: où je travaille, nous avons une base de données de produits de télécommunications. Chaque produit est affecté à un plan tarifaire, qui peut être échangé et les tarifs du plan tarifaire peuvent être activés / désactivés à mesure que les taux augmentent ou sont modifiés.
Pour faciliter les choses, nous pouvons créer des vues imbriquées. La 1ère vue ne fait que relier les taux tarifaires à leurs taux en utilisant les tables nécessaires et en renvoyant les données nécessaires aux niveaux de vues suivants. La 2e vue (s) peut uniquement isoler les plans de taux actifs et leurs taux actifs. Ou simplement les tarifs clients. Ou les taux des employés (pour la réduction des employés). Ou les tarifs des clients professionnels par rapport aux clients résidentiels. (les plans tarifaires peuvent être compliqués). Le fait est que la vue de base garantit que notre logique métier globale pour les plans tarifaires et les tarifs sont correctement regroupés au même endroit. La couche suivante de vues nous permet de nous concentrer davantage sur des plans de taux spécifiques (types, actif / inactif, etc.).
Je conviens que les vues peuvent gêner le débogage si vous créez des requêtes et des vues en même temps. Toutefois, si vous utilisez une vue éprouvée, cela facilite le débogage. Vous savez que la sonnerie a déjà été passée en revue, vous savez donc que le problème n’est probablement pas à l'origine du problème.
Les problèmes peuvent cependant venir avec votre point de vue. "Que se passe-t-il si un produit est associé uniquement à un plan tarifaire inactif?" ou "et si un plan tarifaire ne comporte que des taux inactifs?" Eh bien, cela peut être bloqué au niveau frontal avec une logique qui détecte les erreurs des utilisateurs. "Erreur, le produit est sur un plan tarifaire inactif ... veuillez corriger". Nous pouvons également exécuter des audits de requête pour le revérifier avant un cycle de facturation. (sélectionnez tous les forfaits et rejoignez la vue de plan de taux actif, renvoyez uniquement les plans pour lesquels un plan de taux actif n'est pas considéré comme un problème à résoudre).
L'avantage est que les vues vous permettent de condenser considérablement les requêtes de rapport, de facturation, etc. Vous pouvez avoir une vue de compte client, puis une vue de second niveau des clients actifs uniquement. Équipe qui avec une vue de l'adresse du client. Equipe qui a une vue du (des) produit (s) (joint (e) à quel (s) produit (s) le client a). Faites en sorte que l’équipe visualise le plan tarifaire du ou des produits. Faites équipe avec la vue des caractéristiques du produit. Voir, voir, voir, chaque essai-n-errored pour assurer l'intégrité. Votre requête de fin utilisant les vues est très compacte.
modifier:
Comme exemple illustrant à quel point la vue aurait été meilleure qu'une simple requête de tables à plat ... nous avons fait appel à un sous-traitant intérimaire pour apporter des modifications. Ils lui ont dit qu'il y avait des points de vue, mais il a décidé d'écraser toutes ses questions. Billing a eu raison de certaines de ses questions. Ils ont continué à obtenir plusieurs plans de taux et des taux sur des choses. Il s'avère que ses requêtes manquaient de critères pour autoriser les tarifs à facturer s'ils étaient entre les dates de début et de fin auxquelles le plan tarifaire était censé utiliser ce / ces tarifs pendant. Oops. S'il avait utilisé la vue, il aurait déjà pris en compte cette logique.
Fondamentalement, vous devez peser performance / santé mentale. Peut-être que vous pouvez faire toutes sortes de choses sophistiquées pour augmenter les performances d'une base de données. Mais, si cela signifie que c'est un cauchemar pour une nouvelle personne à prendre en charge / à entretenir, en vaut-il vraiment la peine? Vaut-il vraiment la peine que le nouveau gars doive jouer à whack-a-mole chercher toutes les questions qui doivent changer de logique (et risquer de l’oublier / de les doigter grossièrement) parce que quelqu'un a décidé que ses opinions sont "mauvaises" et n'a pas consolidé une logique métier de base en une logique pouvant être utilisée dans des centaines d'autres requêtes? Cela dépend vraiment de votre entreprise et de votre équipe informatique / informatique / base de données. Mais, je préférerais la clarté et la consolidation d'une source unique à la performance.