Cours en Devlopement Informatique

  • SQL SEVER

Les vues et les index



 I. Les Vues

1.1 Présentation
  • Une vue est une table virtuelle dont le contenu est défini par une requête SELECT. Comme une table réelle, la vue possède des colonnes nommées et des lignes de données, mais elle n’est pas stockée dans la base de données, et n’a pas d’existence propre, indépendamment des tables.
  • Les vues améliorent la sécurité en permettant de contrôler les données que les utilisateurs peuvent visualiser, et l’ergonomie, en présentant les données sous une forme familière, indépendamment de la structure interne de la base.
  • Une vue peut être manipulée exactement comme une table : lorsqu’on modifie une vue, on modifie en fait les tables sur lesquelles elle s’appuie. Inversement, si on modifie les tables, les modifications sont reportées automatiquement dans toutes les vues qui leur font référence. La suppression d’une vue n’influe pas sur le contenu de la table associée. Par contre la suppression d’une table supprime toutes les vues qui lui font référence.

  1.  
1.2 Création d'une vue

Syntaxe :

CREATE VIEW  view_name

[ WITH <view_attribute> [ ,...n ] ] 

AS select_statement 

[ WITH CHECK OPTION ] [ ; ]

view_name : Nom de la vue. Les noms des vues doivent se conformer aux règles applicables aux identificateurs. 

AS : Actions que la vue doit réaliser.

select_statement : Instruction SELECT qui définit la vue. Elle peut utiliser plusieurs tables et d'autres vues. 

Les autorisations nécessaires à la sélection à partir d'objets référencés dans la clause SELECT de la vue créée doivent être définies.

Les clauses SELECT faisant partie d'une définition de vue ne peuvent inclure les paramètres suivants : 

  • Une clause ORDER BY, sauf si une clause TOP figure également dans la liste de sélection de l'instruction SELECT ;
  • Le mot clé INTO ;
  • Une référence à une table temporaire ou à une variable de type table.

WITH CHECK OPTION : Cette option impose que toutes les instructions de modification de données exécutées sur la vue respectent le critère défini dans select_statement .

Lorsqu'une ligne est modifiée par l'intermédiaire d'une vue, WITH CHECK OPTION vérifie que les données resteront visibles dans la vue après validation de la modification (voir Exemple 3 et 4).

Si vous remplissez une vue par une instruction SELECT, vous n’avez en général pas besoin de donner les noms des colonnes, qui seront ceux du SELECT, sauf dans les cas suivants :

  • Colonnes dérivées d'une expression arithmétique, d'une fonction ou d'une constante. 
  • Plusieurs colonnes issues de tables différentes auraient le même nom.
  • On veut donner un nom à la colonne de la vue, différent du nom de la colonne dans la table (présentation pour l’utilisateur de la base de données)
1.3 Vues pouvant être mises à jour

Vous modifier par UPDATE, INSERT ou DELETE les données en utilisant une vue sous réserve que les conditions suivantes soient vraies : 

  • Les vues qui dérivent de plusieurs tables par jointure : Toute modification, doit faire référence aux colonnes d'une seule et même table de base (voir Exemple 2).
  • La vue contient tous les attributs obligatoires de la table (déclaré NOT NULL).
  • Les colonnes étant modifiées dans la vue doivent faire référence directement aux données sous-jacentes se trouvant dans les colonnes des tables. Les colonnes ne peuvent être dérivées de quelque autre façon, telle que par : 
    • Une fonction d'agrégation, comme AVG, COUNT, SUM, MIN, MAX, … ; o Un calcul, car la colonne ne peut être calculée à partir d'une expression utilisant d'autres colonnes ;
    • Les colonnes formées par le biais des opérateurs UNION, UNION ALL, EXCEPT et INTERSECT équivalent à une somme de calculs et ne peuvent donc pas être mises à jour.
    • Les colonnes en cours de modification ne sont pas affectées par l'utilisation des clauses GROUP BY, HAVING ou DISTINCT.

Exemple 2:

Exemple 3:

select * from VoyageV3 

INSERT INTO voyagev3 
values ('OUARZAZATE','MARRAKECH',200) 

Avec cette vue on peut insérer des voyages qui ne partent pas de casa, comme dans l’exemple

D’où le rôle de WITH CHECK OPTION

Exemple 4:

Lorsqu'une ligne est modifiée par l'intermédiaire d'une vue, WITH CHECK OPTION vérifie que les données resteront visibles dans la vue après validation de la modification.

 

  1.  
1.4 Suppression d'une Vue

L'ordre DROP VIEW permet de supprimer une vue. 

  • La définition de la vue est ainsi supprimée de la base de données. 
  • La suppression d'une vue n'a aucun effet sur les tables sur lesquelles la vue est basée.  

 

II. Les index

2.1 Présentation 
  • Les index permettent d’optimiser le fonctionnement d’une base de données : ils accélèrent les opérations SELECT, INSERT, UPDATE et DELETE en fournissant un accès direct sur certaines colonnes ou ensembles de colonnes.
  • Un index ordonné (option CLUSTERED) fournit un accès direct aux lignes physiques de la table, sur le disque. La création d’un index ordonné modifie l'ordre physique des lignes : il faut donc le créer avant les index non ordonnés, et il ne peut y avoir qu’un index ordonné par table (souvent sur la clé primaire).
  • Un index non ordonné (sans l’option CLUSTERED) est un index qui s’appuie sur l'ordre logique de la table, en mémoire. Une table peut contenir plusieurs index non ordonnés. Employez un index non ordonné pour : o Des colonnes qui contiennent un nombre élevé de valeurs uniques ; o Des requêtes qui renvoient de petits ensembles de résultats 

 

  1.  
2.2 Création d'index

Syntaxe :

CREATE INDEX  index_name

ON  table_name (column1_name, column1_name,…)

Exemple 1: Index simple sur la colonne id_chauffeur de la table voyage.

Exemple 2: Index composé sur les colonnes id chauffeur et Matricule véhicule de la table voyage.

Exemple 2: (Cet exemple ne s’exécute pas si on a crée la clé primaire de la table !!!) Index ordonné unique   sur la colonne id chauffeur la table chauffeur.

Unique pour assurer l'unicité des données. Et L'option CLUSTERED étant spécifiée, cet index classera physiquement les données sur le disque. 

2.3 Atelier pratique
  1. Création des vues dans la base de données “Compagnie de transport” 1. Faites les exemples du cours

                1.Créer la vue suivante : 

    1. Créer la vue qui affiche la liste des billets pour le voyage numéro 2

    1. 3.Créer la vue qui affiche la liste des billets et la ville de départ pour le voyage numéro 2

  1. Création des vues dans la base de données Séminaire de formation OFPPT ”
    1. Créer une vue nom, prénom, nom établissement et nom région pour le formateur ayant le matricule 263-AS-928327
    2. Créer une vue qui affiche nom, prénom des participants pour un séminaire numéro 263
  2. Création des index dans la base de données “Compagnie de transport”
    1. Faites les exemples du cours
    2. Créer un Index non ordonné simple sur le champ type réparation de la table réparation 
    3. Créer un Index non ordonné composé sur les champs Nom et Prénom de la table chauffeur   

Ajouter un commentaire

Veuillez vous connecter pour ajouter un commentaire.

Pas encore de commentaires.