Les vues sont acceptables lorsque vous devez vous assurer que la logique complexe est respectée à chaque fois. Par exemple, nous avons une vue qui crée les données brutes nécessaires pour 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, au lieu qu'un rapport utilise un ensemble de jointures et qu'un autre oublie d'en utiliser un, ce 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 d'enregistrements mais que vous marquez seulement les enregistrements actuels comme actifs et les anciennes versions comme inactives, vous voulez une vue à utiliser pour sélectionner uniquement les enregistrements actifs. Cela permet d'éviter que les utilisateurs oublient de mettre la clause where dans la requête et obtiennent de mauvais résultats.
Les vues peuvent être utilisées pour s'assurer 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 peuvent signifier que les utilisateurs de ce client ne peuvent jamais voir que les données de ce client.
Les vues sont très utiles lors du remaniement 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 (du moins dans SQL Server). Nous avons presque perdu un client de plusieurs millions de dollars parce que quelqu'un a choisi d'abstraire la base de données de cette façon et que les performances étaient épouvantables et les dépassements de temps fréquents. C'est nous qui avons dû payer pour la réparation, et non le client, car le problème de performances était entièrement de notre faute. Lorsque des vues appellent des vues, elles doivent générer complètement la vue sous-jacente. J'ai vu cela où la vue appelait une vue qui appelait une vue et plusieurs millions d'enregistrements étaient générés afin de voir les trois dont l'utilisateur avait finalement besoin. Je me souviens qu'une de ces vues a pris 8 minutes pour faire un simple comptage (*) des enregistrements. Les vues qui appellent des vues sont une idée extrêmement mauvaise.
Les vues sont souvent une mauvaise idée pour la mise à jour des enregistrements car, en général, vous ne pouvez 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 c'est le cas, il est plus logique de mettre à jour directement les tables de toute façon, afin de savoir quels champs sont disponibles.