Les vues, indexes, séquences
Ce document présente les concepts fondamentaux des vues, des index et des séquences en bases de données relationnelles. Il s’adresse aux étudiants et professionnels souhaitant comprendre leur utilité, leur création, ainsi que leurs conditions d’utilisation. Les vues Une vue est une représentation partielle ou spécifique des données issues d’une ou plusieurs tables d’une base de données.
D'après le document Les vues, indexes, séquences
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source
Database Management · PPTX · 11 pages · 2009
Ce document présente les concepts fondamentaux des vues, des index et des séquences en bases de données relationnelles. Il s’adresse aux étudiants et professionnels souhaitant comprendre leur utilité, leur création, ainsi que leurs conditions d’utilisation.
Les vues
Une vue est une représentation partielle ou spécifique des données issues d’une ou plusieurs tables d’une base de données. Elle est définie par une requête SELECT qui précise quelles données seront visibles. La vue ne stocke pas les données elles-mêmes, mais uniquement sa définition, ce qui en fait une sorte de table virtuelle.
Les utilisateurs peuvent ainsi accéder uniquement à une portion des données qui les intéresse, sans manipuler directement les tables sous-jacentes.
Syntaxe de création
CREATE VIEW vue [(col1, col2...)] AS SELECT ...
La spécification des noms des colonnes de la vue est facultative. Par défaut, les colonnes portent les noms des colonnes résultant du SELECT. Cependant, si certaines colonnes résultantes sont des expressions sans nom, il est obligatoire de spécifier les noms des colonnes de la vue.
Exemple : création d’une vue restreignant la table EMP aux employés du département 10 :
CREATE VIEW EMP10 AS
SELECT * FROM EMP
WHERE deptno = 10
Syntaxe de suppression
DROP VIEW vue;
Cette commande supprime la vue nommée « vue ».
Utilisation des vues
Une vue se consulte comme une table classique :
SELECT ENAME, JOB FROM EMP10;
Il est possible de mettre à jour (INSERT, UPDATE, DELETE) une vue sous certaines conditions :
- Pour un DELETE, la requête SELECT définissant la vue ne doit pas contenir de jointure, ni de clause GROUP BY, DISTINCT ou fonction d’agrégation.
- Pour un UPDATE, en plus des conditions précédentes, les colonnes modifiées doivent correspondre à des colonnes réelles de la table sous-jacente.
- Pour un INSERT, en plus des conditions précédentes, toutes les colonnes NOT NULL de la table sous-jacente doivent être présentes dans la vue.
Les index
Utilité d’un index
Un index accélère les recherches dans une table en évitant de parcourir toutes les lignes. Par exemple, pour afficher les employés dont le poste est « CLERK » :
SELECT * FROM emp
WHERE job = 'CLERK';
Sans index, chaque ligne de la table EMP est examinée, ce qui peut être long si la table est volumineuse. Si cette requête est fréquente, il est pertinent de créer un index sur la colonne JOB.
Concept de base
Un index contient une liste d’indices pour chaque valeur distincte de la colonne indexée. Ces indices pointent vers les lignes correspondantes dans la table.
Par exemple, un index sur la colonne JOB pourrait ressembler à :
| Valeur JOB | Indices des lignes |
|---|---|
| CLERK | 1, 11, 12, 14 |
| ANALYST | 8, 13 |
| MANAGER | 4, 6, 7 |
| PRESIDENT | 9 |
| SALESMAN | 2, 3, 5, 10 |
La requête d’exemple peut alors accéder directement aux lignes concernées via l’index, améliorant considérablement la performance.
Création d’un index
CREATE INDEX nom_ind ON tab(col1, col2, ...);
Cette commande crée un index nommé nom_ind sur la table tab pour les colonnes spécifiées.
Exemple :
CREATE INDEX emp_job ON emp(job);
Inconvénients d’un index
- Consommation d’espace disque supplémentaire.
- Nécessite une maintenance à chaque modification (INSERT, UPDATE, DELETE) de la table indexée, ce qui peut ralentir ces opérations.
Les séquences
Utilité d’une séquence
Une séquence est un objet de base de données permettant de générer des nombres séquentiels et uniques, souvent utilisés pour les clés primaires.
Elle stocke une valeur qui s’incrémente à chaque consultation.
Création d’une séquence
CREATE SEQUENCE nom_seq
MINVALUE min_val MAXVALUE max_val
START WITH val INCREMENT BY val_inc
[CYCLE | NOCYCLE]
Exemple
CREATE SEQUENCE emp_seq
MINVALUE 100 MAXVALUE 1000
START WITH 500 INCREMENT BY 1 CYCLE;
Pour utiliser une séquence, on emploie les pseudo-colonnes nom_seq.curval (valeur courante) et nom_seq.nextval (valeur suivante).
Exemple d’insertion d’un nouvel employé avec une clé primaire générée par la séquence :
INSERT INTO emp(empno, ename, sal)
VALUES(emp_seq.nextval, 'PATRICK', 1200);
Glossaire des termes clés
- Vue : Table virtuelle définie par une requête SELECT, ne stockant pas les données mais leur définition.
- Index : Structure de données qui accélère l’accès aux lignes d’une table en fonction de la valeur d’une ou plusieurs colonnes.
- Séquence : Objet générant des nombres entiers uniques et séquentiels, souvent utilisés pour les clés primaires.
- CREATE VIEW : Commande SQL pour créer une vue.
- DROP VIEW : Commande SQL pour supprimer une vue.
- CREATE INDEX : Commande SQL pour créer un index sur une table.
- CREATE SEQUENCE : Commande SQL pour créer une séquence.
- curval : Pseudo-colonne retournant la valeur courante d’une séquence.
- nextval : Pseudo-colonne retournant la prochaine valeur d’une séquence.
Points clés à retenir
- Une vue est une table virtuelle définie par une requête SELECT, permettant de restreindre ou de présenter les données sous une forme spécifique.
- Les vues peuvent être mises à jour sous certaines conditions liées à la simplicité de leur définition et à la présence des colonnes nécessaires.
- Un index améliore considérablement la vitesse des requêtes de recherche mais consomme de l’espace et nécessite une maintenance.
- Une séquence génère des valeurs numériques uniques et séquentielles, très utiles pour les clés primaires.
- Les commandes SQL CREATE VIEW, DROP VIEW, CREATE INDEX et CREATE SEQUENCE sont essentielles pour manipuler ces objets.
Commentaires
Aucun commentaire pour le moment. Posez la première question.