Les vues indexes squences Les vues q Quest

  • Slides: 11
Download presentation
Les vues, indexes, séquences

Les vues, indexes, séquences

Les vues q Qu’est ce qu’une vue 1. Une vue est une vision partielle

Les vues q Qu’est ce qu’une vue 1. Une vue est une vision partielle ou particulière des données d'une ou plusieurs tables de la base. 2. La définition d'une vue est donnée par un SELECT qui indique les données de la base qui seront vues. 3. Seule la définition de la vue est enregistrée dans la base, et pas les données de la vue. On peut parler de table virtuelle. 4. Les utilisateurs peuvent alors voir une partie des données, soit la partie qui les intéresse.

Les vues q Syntaxe de création CREATE VIEW vue [(col 1, col 2. .

Les vues q Syntaxe de création CREATE VIEW vue [(col 1, col 2. . . )] AS SELECT. . . La spécification des noms des colonnes de la vue est facultative : par défaut, les colonnes de la vue ont pour nom les noms des colonnes résultat du SELECT. Si certaines colonnes résultat du SELECT sont des expressions sans nom, il faut alors obligatoirement spécifier les noms de colonnes de la vue. Vue constituant une restriction de la table EMP aux employés du département 10 : CREATE VIEW EMP 10 AS SELECT * FROM EMP WHERE deptno = 10

Les vues q Syntaxe de suppression DROP VIEW vue; Supprime la vue « vue

Les vues q Syntaxe de suppression DROP VIEW vue; Supprime la vue « vue » . q Utilisation des vues Ø Consultation Une vue est consultée comme on consulte les tables, ex: SELECT ENAME, JOB FROM EMP 10; Ø Mise à jour Il est possible de mettre à jour (INSERT, UPDATE, DELETE) des vues sous certaines conditions:

Les vues q Utilisation des vues Ø Mise à jour Il est possible de

Les vues q Utilisation des vues Ø Mise à jour Il est possible de mettre à jour (INSERT, UPDATE, DELETE) des vues sous certaines conditions: 1. Pour effectuer un DELETE, le SELECT qui définit la vue ne doit pas comporter de jointure, de GROUP BY, de DISTINCT, de fonction de groupe. 2. Pour un UPDATE, en plus des conditions précédentes, les colonnes modifiées doivent être des colonnes réelles de la table sous-jacente. 3. Pour un INSERT, en plus des conditions précédentes, toute colonne NOT NULL de la table sous-jacente doit être présente dans la vue.

Les index : utilité q Utilité d’un index Afficher les emplyoés dont le job

Les index : utilité q Utilité d’un index Afficher les emplyoés dont le job est CLERK: SELECT * FROM emp WHERE job=‘CLERK’; A l’exécution, on doit visiter chaque ligne de EMP et évaluer la condition job=‘CLERK’. Le temps d’exécution dépendra du nombre de lignes de EMP ! Si les utilisateurs de notre base consultent fréquemment EMP avec le critère de recherche JOB, il nous convient de créer un index sur la table EMP sur la colonne JOB.

Les index : concept de base Un tel index inclut une liste d’indices pour

Les index : concept de base Un tel index inclut une liste d’indices pour chaque valeur distincte de JOB. Les indices référencent les lignes de la table EMP. CLERK 1, 12, 14 ANALYST 8, 13 MANAGER 4, 6, 7 PRESIDENT 9 SALESMAN 2, 3, 5, 10 Maintenant, pour exécuter cette requête SELECT * FROM emp WHERE job=‘CLERK’; L’accès se fait directement à partir de l’index !

Les index : création q Création d’un index CREATE INDEX nom_ind ON tab(col 1,

Les index : création q Création d’un index CREATE INDEX nom_ind ON tab(col 1, col 2, …); Cette requête crée un indexe sur la table tab sur les colonnes spécifiées entre parenthèses. Exemple; CREATE INDEX emp_job ON emp(job); q Inconvénients d’un index 1. Consomme de l’espace disque 2. Nécessite une maintenance (mise à jour) à chaque fois où la table indexée est mise à jour.

Les séquences q Utilité d’une séquence Dans certains cas, nous avons besoin de générer

Les séquences q Utilité d’une séquence Dans certains cas, nous avons besoin de générer des nombres séquentiels et uniques, le plus souvent pour les insérer dans des clés primaires. Une séquence est un objet BD qui stocke une valeur qui s’incrémente à chaque fois où on la consulte. q 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]

Les séquences q Exemple: CREATE SEQUENCE emp_seq MINVALUE 100 MAXVALUE 1000 START WITH 500

Les séquences q Exemple: CREATE SEQUENCE emp_seq MINVALUE 100 MAXVALUE 1000 START WITH 500 INCREMENT BY 1 CYCLE; Pour utiliser une séquence, on utilise les pseudo-colonnes nom_seq. curval (renvoie la valeur courante de la séquence), et nom_seq. nextval (valeur suivante de la séquence). Pour insérer un nouvel employé, on peut utiliser la séquence emp_seq pour dériver une valeur séquentielle et unique de la clé primaire empno. Exemple: INSERT INTO emp(empno, ename, sal) VALUES(emp_seq. nextval, ’PATRICK’, 1200);

Bibliographie [1] Gilles Roy. «Conception de bases de données avec UML» . Presses de

Bibliographie [1] Gilles Roy. «Conception de bases de données avec UML» . Presses de l’Université du Québec, 2009. [2] Christian Soutou. «UML 2 pour les bases de données» . Eyrolles, 2007. [3] Giovanni Camponovo. « Bases de Données Avancées» . Université de Lausanne, HEC, 2006. [4] Georges Gardarin. « Bases de Données » . Eyrolles, 6è édition, 2005.