Les vues sont acceptables lorsque vous devez vous assurer qu'une logique complexe est suivie à chaque fois. Par exemple, nous avons une vue qui crée les données brutes nécessaires à tous les rapports financiers. En faisant en sorte que tous les rapports utilisent cette vue, tout le monde travaille à partir du même ensemble de données, plutôt que d'un rapport utilisant un ensemble de jointures et un autre en oubliant d'en utiliser un qui donne des résultats différents.
Les vues sont acceptables lorsque vous souhaitez restreindre les utilisateurs à un sous-ensemble particulier de données. Par exemple, si vous ne supprimez pas les enregistrements mais que vous marquez uniquement l'actuel comme actif et les anciennes versions comme inactives, vous souhaitez qu'une vue soit utilisée pour sélectionner uniquement les enregistrements actifs. Cela évite aux utilisateurs d'oublier de placer la clause where dans la requête et d'obtenir de mauvais résultats.
Les vues peuvent être utilisées pour garantir que les utilisateurs n'ont accès qu'à un ensemble d'enregistrements - par exemple, une vue des tables pour un client particulier et aucun droit de sécurité sur les tables peut signifier que les utilisateurs de ce client ne peuvent voir que les données pour ce client.
Les vues sont très utiles lors de la refactorisation des bases de données.
Les vues ne sont pas acceptables lorsque vous utilisez des vues pour appeler des vues, ce qui peut entraîner des performances horribles (au moins dans SQL Server). Nous avons presque perdu un client de plusieurs millions de dollars parce que quelqu'un a choisi de résumer la base de données de cette façon et les performances étaient horribles et les délais d'attente fréquents. Nous avons dû payer pour le correctif également, pas pour le client, car le problème de performances était entièrement de notre faute. Lorsque les vues appellent des vues, elles doivent générer complètement la vue sous-jacente. J'ai vu cela là où la vue appelait une vue qui appelait une vue et tant de millions d'enregistrements ont été générés afin de voir les trois dont l'utilisateur avait finalement besoin. Je me souviens que l'une de ces vues a pris 8 minutes pour faire un simple décompte (*) des enregistrements. Les vues appelant des vues sont une très mauvaise idée.
Les vues sont souvent une mauvaise idée à utiliser pour mettre à jour les enregistrements car vous ne pouvez généralement mettre à jour que les champs de la même table (encore une fois, il s'agit de SQL Server, les autres bases de données peuvent varier). Si tel est le cas, il est plus judicieux de mettre à jour directement les tables de toute façon afin que vous sachiez quels champs sont disponibles.