Quand faut-il réellement utiliser une vue sur une table réelle? Quels gains dois-je m'attendre à ce que cela produise?
Globalement, quels sont les avantages d'utiliser une vue sur une table? Est-ce que je ne devrais pas concevoir la table de la façon dont la vue devrait ressembler en premier lieu?
Oh, il faut tenir compte de nombreuses différences
Vues pour la sélection:
Vues pour insertion/mises à jour:
Inconvénients
Les vues peuvent:
Et vous ne devez pas concevoir de tables pour correspondre aux vues. Votre modèle de base doit s’intéresser au stockage et à la récupération efficaces des données. Les vues constituent en partie un outil permettant d'atténuer les complexités d'un modèle normalisé efficace en vous permettant d'abstraire cette complexité.
Aussi, demander "quels sont les avantages d'utiliser une vue sur une table?" N'est pas une bonne comparaison. Vous ne pouvez pas vous passer de tables, mais vous pouvez vous passer de vues. Ils existent chacun pour une raison très différente. Les tableaux sont le modèle concret et les vues sont abstraites, ainsi.
Les vues sont acceptables lorsque vous devez vous assurer que la 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 qu'un rapport utilisant un ensemble de jointures et un autre, oubliant d'en utiliser un qui donne des résultats différents.
Les vues sont acceptables lorsque vous souhaitez limiter les utilisateurs à un sous-ensemble de données particulier. Par exemple, si vous ne supprimez pas d'enregistrements mais marquez seulement l'actuel en tant que actif et les anciennes versions comme inactives, vous souhaitez qu'une vue sélectionne uniquement les enregistrements actifs. Cela empêche les utilisateurs d'oublier de mettre 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 ont uniquement accès à un ensemble d'enregistrements - par exemple, une vue des tables pour un client particulier et l'absence de droits de sécurité sur les tables peuvent signifier que les utilisateurs de ce client peuvent uniquement voir les données. pour ce client.
Les vues sont très utiles lors du refactoring de 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 médiocres (du moins dans SQL Server). Nous avons presque perdu un client de plusieurs millions de dollars, car quelqu'un a choisi d'abréger la base de données de cette façon, les performances étaient épouvantables et les délais d'attente fréquents. Nous avons également dû payer le correctif, pas le client, car le problème de performances était totalement de notre faute. Lorsque des vues appellent des vues, elles doivent générer complètement la vue sous-jacente. J'ai vu ceci où la vue appelée vue appelait vue et autant de millions d'enregistrements étaient générés afin de voir les trois dont l'utilisateur avait finalement besoin. Je me souviens qu’un de ces points de vue prenait 8 minutes pour faire un simple décompte (*) des enregistrements. Les vues appelant des vues sont une idée extrêmement pauvre.
Les vues sont souvent une mauvaise idée à utiliser pour mettre à jour des enregistrements, car vous ne pouvez généralement mettre à jour que des champs de la même table (là encore, il s'agit de SQL Server, les autres bases de données peuvent varier). Si tel est le cas, il est plus logique de mettre à jour directement les tables afin que vous sachiez quels champs sont disponibles.
Une pratique courante consiste à masquer les jointures dans une vue afin de présenter à l'utilisateur un modèle de données plus dénormalisé. D'autres utilisations impliquent la sécurité (par exemple en masquant certaines colonnes et/ou lignes) ou la performance (dans le cas de vues matérialisées)
Les vues sont pratiques lorsque vous devez sélectionner plusieurs tables ou simplement obtenir un sous-ensemble de table.
Vous devriez concevoir vos tables de telle sorte que votre base de données soit bien normalisée (duplication minimale). Cela peut rendre les interrogations quelque peu difficiles.
Les vues sont un peu séparées, vous permettant de voir les données dans les tables différemment de ce qu'elles sont stockées.
Vous devez concevoir votre table SANS tenir compte des vues.
Outre la sauvegarde des jointures et des conditions, les vues offrent un avantage en termes de performances: SQL Server peut calculer et enregistrer son plan d'exécution dans la vue, et donc le rendre plus rapide que les instructions SQL "à la volée".
La vue peut également faciliter votre travail en ce qui concerne l’accès des utilisateurs au niveau du terrain.
Tout d'abord, comme son nom l'indique, une vue est immuable. c’est qu’une vue n’est autre qu’une table virtuelle créée à partir d’une requête stockée dans la base de données. Pour cette raison, vous avez certaines caractéristiques des vues:
il existe donc une multitude de cas d'utilisation pour lesquels les vues sont mieux ajustées que les tableaux, il suffit de penser à l'affichage des utilisateurs actifs sur un site Web. une vue serait préférable car vous n'opérez que sur un sous-ensemble des données qui se trouvent réellement dans votre base de données (utilisateurs actifs et inactifs)
découvrez ceci article
espérons que cela a aidé ..
Selon Wikipedia,
Les vues peuvent limiter le degré d'exposition des tables sous-jacentes au monde extérieur: un utilisateur donné peut être autorisé à interroger la vue sans pouvoir accéder à la vue. reste de la table de base.
Les vues peuvent rejoindre et simplifier plusieurs tables dans une seule table virtuelle.
Les vues peuvent agir en tant que tableaux agrégés , dans lesquels le moteur de base de données agrège les données (somme, moyenne, etc.) et présente les résultats calculés dans le cadre des données.
Les vues peuvent masquer la complexité des données. Par exemple, une vue peut apparaître sous le nom Sales2000 ou Sales2001, en partitionnant de manière transparente la table sous-jacente réelle.
Les vues prennent très peu de place pour être stockées ; la base de données contient uniquement la définition d'une vue, pas une copie de toutes les données qu'elle présente.
Les vues peuvent fournir une sécurité supplémentaire , en fonction du moteur SQL utilisé.