Ce sont des vues de bon?
Je suis juste essayer d'obtenir une idée générale de ce que les points de vue sont utilisés pour RDBMSes. C'est-à-dire, je sais quel point de vue est et comment en faire un. Je sais aussi ce que j'ai utilisé dans le passé.
Mais je veux m'assurer d'avoir une compréhension approfondie de ce point de vue est utile et ce qu'une vue ne devrait pas être utile pour. Plus précisément:
- Ce qui est un point de vue utile pour?
- Sont là des situations dans lesquelles il est tentant d'utiliser un point de vue lorsque vous ne devriez pas les utiliser?
- Pourquoi voudriez-vous utiliser une vue à la place de quelque chose comme une fonction table ou vice-versa?
- Sont, dans certains cas, que d'un point de vue pourrait être utile que n'est pas visible au premier coup d'œil?
(Et pour l'enregistrement, certaines de ces questions sont volontairement naïf. C'est en partie un concept.)
- similaire à la question posté ici: stackoverflow.com/questions/1278521/...
Vous devez vous connecter pour publier un commentaire.
1) Ce qui est un point de vue utile pour?
2) existe-il des situations dans lesquelles il est tentant d'utiliser un point de vue lorsque vous ne devriez pas les utiliser?
3) Pourquoi voudriez-vous utiliser une vue à la place de quelque chose comme une fonction table ou vice-versa?
4) existe-il des circonstances que d'un point de vue pourrait être utile que n'est pas visible au premier coup d'œil?
Dans un sens, d'un point de vue est comme une interface. Vous pouvez modifier la table sous-jacente de la structure de tout ce que vous voulez, mais le point de vue donne une manière pour le code pour ne pas avoir à changer.
Points de vue sont une belle façon d'offrir quelque chose de simple à faire rapport des écrivains. Si votre entreprise les utilisateurs veulent avoir accès aux données à partir de quelque chose comme Crystal Reports, vous pouvez leur donner quelques points de vue dans leur compte de simplifier les données-peut-être même éliminer pour eux.
Vues peuvent être utilisées pour assurer la sécurité (c'est à dire: les utilisateurs peuvent avoir accès à des points de vue que seul l'accès à certaines colonnes dans un tableau), les opinions peuvent fournir une sécurité supplémentaire pour les mises à jour, des inserts, etc. Vues fournissent également un moyen de faire un alias de noms de colonnes (comme le ps), mais les vues sont de plus en plus une isolation de la table.
En un sens, des vues de dénormaliser. La dénormalisation est parfois nécessaire de fournir des données de manière significative. C'est ce que beaucoup d'applications ne sont de toute façon par la voie de la domaine de la modélisation de leurs objets. Ils aident à présenter les données d'une manière qui correspond de plus près à une activité de " point de vue.
Vues cacher la base de données de la complexité. Ils sont grands pour beaucoup de raisons, et sont utiles dans beaucoup de situations, mais si vous avez des utilisateurs qui sont autorisés à écrire leurs propres requêtes et des rapports, vous pouvez les utiliser comme une sauvegarde pour s'assurer qu'ils ne se soumettent pas mal requêtes avec nasty cartésien jointures prendre vers le bas de votre serveur de base de données.
En plus de ce que les autres ont dit, les vues peuvent également être utiles pour la suppression de plus de complecated des requêtes SQL à partir de l'application.
Comme un exemple, au lieu d'une application:
Vous pourriez résumé de vue:
et dans le code de l'application, il suffit d'avoir:
Également si les structures de données changera jamais, vous n'aurez pas à modifier le code de l'application, de recompiler et de redéployer. vous serait-il suffit de changer le point de vue dans la db.
L'OP a demandé s'il y avait des situations où il pourrait être tentant d'utiliser un point de vue, mais il n'est pas approprié.
Ce que vous ne voulez pas utiliser de vue est un substitut pour des jointures complexes. Qui est, ne laissez pas votre programmation procédurale habitude de rompre un problème en petits morceaux vous conduire vers l'utilisation de plusieurs points de vue réunis au lieu d'une jointure supérieure. Cela permettra de tuer le moteur de base de données de l'efficacité puisqu'il s'agit essentiellement de faire plusieurs requêtes distinctes plutôt qu'une seule grosse.
Par exemple, disons que vous avez joindre les tables A, B, C, et D, ainsi que. Vous pourriez être tentés de faire une vue de tables A & B et une vue de C & D, puis joindre les deux vues ensemble. C'est beaucoup mieux de simplement se joindre A, B, C et D dans une requête.
Points de vue permet de centraliser ou de consolider des données. Là où j'en suis, nous avons un certain nombre de différentes bases de données sur plusieurs serveurs liés. Chaque base de données contient des données pour une application différente. Un couple de ces bases de données contiennent des informations sont relavent à un certain nombre de différentes applications. Ce que nous allons faire dans ces circonstances est de créer une vue dans cette application de base de données qui tire juste des données à partir de la base de données où les données ne sont stockées, ainsi que les requêtes de nous écrire ne regardent pas comme ils vont à travers différentes bases de données.
Les réponses sont correctes -- points de vue sont bons pour assurer la sécurité, la dénormalisation (bien qu'il y est beaucoup de douleur en bas de la route de si fait de mal), le modèle de données de l'abstraction, etc.
En outre, les vues sont couramment utilisés pour implémenter la logique métier (déchéance de l'utilisateur est un utilisateur qui ne s'est pas connecté dans les 40 derniers jours, ce genre de chose).
Vue d'économiser beaucoup d'répété JOINTURE complexe déclarations dans vos scripts SQL. Vous pouvez simplement encapsuler des JOINTURE complexe dans certains de la vue et de l'appeler dans votre instruction SELECT chaque fois que nécessaire. Ce serait parfois être pratique, simple et plus facile que d'écrire les instructions join dans chaque requête.
Vue est tout simplement une stockés, nommé instruction SELECT. Pensez vues comme des fonctions de la bibliothèque.
Je voulais mettre en évidence l'utilisation de vues pour le reporting. Souvent, il y a un conflit entre la normalisation des tables de base de données pour accélérer les performances, en particulier pour l'édition et l'insertion de données (OLTP utilise), et la dénormalisation de réduire le nombre de jointures de table pour des requêtes de reporting et d'analyse (OLAP utilise). De nécessité, OLTP gagne d'habitude, parce que les données d'entrée doivent avoir des performances optimales. Création de points de vue, alors, pour optimiser les rapports de performance, peut aider à satisfaire à la fois les catégories d'utilisateurs (données d'entrée et de rapport de téléspectateurs).
Je me souviens d'un très long SÉLECTIONNEZ dans laquelle interviennent plusieurs Syndicats. Chaque UNION inclus une jointure d'une table des prix qui a été créé à la volée par une sélection qui a été lui-même est assez long et difficile à comprendre. Je pense que cela aurait été une bonne idée d'avoir une vue à créer le tableau de prix. Il aurait raccourcissement de l'ensemble de la sélection par environ la moitié.
Je ne sais pas si le DB d'évaluer l'affichage une fois, ou une fois à chaque fois à a été invoquée. Tout le monde sait? Si l'ancienne, à l'aide d'un point de vue amélioration de la performance.
Quand vous en avez besoin [my_interface] != [user_interface].
Exemple:
TABLEAU A:
VUE de TABLEAU A:
c'est une façon de masquer l'id du client et de renommer l'info à un plus prolixe nom les deux à la fois.
La vue va utiliser l'index de clé primaire id, de sorte que vous ne verrez pas une perte de performances, juste une meilleure abstraction de la requête select.