2011-03-26 2 views
2

J'ai lu à propos de la syntaxe CREATE VIEW de MySQL, mais je ne l'ai jamais utilisé en pratique.Quels sont de bons exemples d'application de VIEW dans MySQL?

Veuillez me montrer quelques exemples de ses applications. Nonobstant le SGBDR, une vue est utilisée pour simplifier ou restreindre l'accès aux tables sous-jacentes.

+0

Et comme plus des réponses que je voudrais montrer un article: http://www.oraclesolved.com/general/Q_25482999-Reasons-for-using-views.jsp PS: quand je lis cet article et ajouté à mes signets, il était disponible à lire sans aucune inscription: -S – zerkms

Répondre

4

Une vue non matérialisée est effectivement une macro - faisant référence à une vue signifie que la requête qu'il contient est utilisé dans la vue lieu de références. IE:

CREATE VIEW your_vw AS 
    SELECT * 
    FROM EMPLOYEES 

Ce:

SELECT * FROM your_vw 

... retourne un jeu de résultats correspondant à ce que vous obtiendriez d'utiliser:

SELECT x.* 
    FROM (SELECT * 
      FROM EMPLOYEES) x 

je l'ai mentionné non matérialisées, mais MySQL ne supporte pas les vues matérialisées. D'autres bases de données (Oracle, SQL Server les appelle "vues indexées", DB2) prennent en charge les vues matérialisées, mais ce n'est pas la question. À partir de maintenant, je ne parlerai que des vues non matérialisées lorsque j'écrirai des vues.

Les vues sont utilisées pour l'encapsulation/abstraction - à moins que l'utilisateur a accès, ils ne peuvent pas voir ce que la requête sous-jacente pour une vue est. C'est bon/mauvais selon la situation - bien si vous vous inquiétez de donner des informations sur le modèle de données; mauvais dans la plupart des autres cas. L'utilisation d'un ORDER BY dans une vue est mauvaise car il faut des ressources pour appliquer l'ordre, ce qui peut être dû à l'encapsulation/abstraction de quelqu'un d'autre qui peut passer un ordre - c'est un gaspillage de ressources. La superposition de vues (vues créées sur des vues) est également une autre mauvaise pratique - vous n'obtiendrez pas d'erreur tant que la vue n'est pas exécutée.

Vues utilisées pour fournir un accès aux données sans avoir besoin d'accorder l'accès à la table, mais ils ont évolué pour soutenir la mise à jour de la table sous-jacente. Je préfère accorder l'accès à la table pour de telles situations.

2

Un exemple est en train de changer les noms des colonnes pour les rendre plus faciles à consommer et uderstand par les utilisateurs finaux, et dénormaliser rejoint.

autre est d'empêcher l'accès à des informations sensibles (telles que la paie): toutes les autorisations sont retirées de tables et un accès contrôlé fourni à travers des vues.

+0

Les vues peuvent être mises à jour - [MySQL] (http://dev.mysql.com/doc/refman/5.0/fr/create-view.html), Oracle et SQL Server prennent en charge la fonctionnalité. –

+0

@OMG Poneys: Bien sûr. J'espère ne pas donner l'impression qu'ils ne pourraient pas être. J'ai fourni un exemple où ils pourraient ne pas être. –

Questions connexes