Cours 8 : Séquences, vues et index



Documents pareils
Administration des bases de données. Jean-Yves Antoine

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Le Langage De Description De Données(LDD)

Bases de Données relationnelles et leurs systèmes de Gestion

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Cours Bases de données 2ème année IUT

Les bases de données

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Le Langage SQL version Oracle

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Master Exploration Informatique des données DataWareHouse

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Création et Gestion des tables

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Introduction au Système de Gestion de Base de Données et aux Base de Données

Langage SQL : créer et interroger une base

Bases de Données Avancées

Compétences Business Objects

Gestion des utilisateurs et de leurs droits

Olivier Mondet

Partie 0 : Gestion des tablespace et des utilisateurs... 3

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

Cours Bases de données 2ème année IUT

Le langage SQL (première partie) c Olivier Caron

TP Contraintes - Triggers

SQL Historique

Auto-évaluation Oracle: cours de base

Bases de données et sites WEB

La présente publication est protégée par les droits d auteur. Tous droits réservés.

Devoir Data WareHouse

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Cours Bases de données 2ème année IUT

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public.

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

TP3 : Creation de tables 1 seance

CHAPITRE 4 POLITIQUES DE CONTRÔLES DES ACCÈS SOUS ORACLE ADMINISTRATION ET TUNING DE BASES DE DONNÉES 10/05/2015 RESPONSABLE DR K.

Encryptions, compression et partitionnement des données

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Intégrité sémantique dans les bases de données relationnelles

Partie II Cours 3 (suite) : Sécurité de bases de données

Notes de cours : bases de données distribuées et repliquées

MySQL / SQL EXEMPLES

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Corrigés détaillés des exercices

CREATION WEB DYNAMIQUE

Bases de données relationnelles

Groupe 11 TABLE DES MATIERES

Optimisation SQL. Quelques règles de bases

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Intégrité des données

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

TP11 - Administration/Tuning

A QUOI SERVENT LES BASES DE DONNÉES?

Introduction aux Bases de Données 2004/2005

FileMaker 13. Guide de référence SQL

Administration des bases de données relationnelles Part I

Cours SQL. Base du langage SQL et des bases de données

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Bases de données avancées

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

I4 : Bases de Données

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

WEB DEVELOPER SGBD SYSTEME DE GESTION DE BASES DE DONNEES L étudiant sera capable :

TD n 10 : Ma première Base de Données

Bases de Données Avancées PL/SQL

Bases de données Cours 4 : Le langage SQL pour ORACLE

Optimisations des SGBDR. Étude de cas : MySQL

Introduction aux SGBDR

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Le langage SQL Rappels

Durée : 4 heures Le sujet se présente sous la forme de deux dossiers indépendants

Systèmes de Gestion de Bases de Données

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

16H Cours / 18H TD / 20H TP

Quelques aspects du Relationnel-Objet du SGBD Oracle

Les BASES de DONNEES dans WampServer

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Oracle : SQL. Denis Roegel roegel@loria.fr IUT Nancy / Introduction 2

Procédure serveur : gestion des environnements X3 et bases de données ORACLE

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

SUPPORT SQL. Thierry GRANDADAM

Présentation du module Base de données spatio-temporelles

Les bases fondamentales du langage Transact SQL

Du 10 Fév. au 14 Mars 2014

Chapitre III Architecture de Base de Données Oracle

1 Introduction et installation

TP Administration Oracle

Gestion des transactions et accès concurrents dans les bases de données relationnelles

PHP 5. La base de données MySql. A. Belaïd 1

Présentation Windows Azure Hadoop Big Data - BI

BTS/CGO P10 SYSTEME INFORMATION Année

Résumé S Q L. Auteur: Alexandre PATIN Edition: 22 février alexandre.patin@free.fr URL :

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Systèmesdegestionde. basesdedonnées

A QUOI SERVENT LES BASES DE DONNÉES?

Transcription:

Cours 8 : Séquences, vues et index

Les séquences Générer des valeurs (numériques) Par exemple de clés primaires Coordonner les valeurs de clés dans plusieurs lignes ou tables 2014-2015 Bases de données 2

Création : syntaxe CREATE SEQUENCE nom-séquence [INCREMENT BY ( 1 valeur )] [START WITH valeur ] [ MAXVALUE valeur NOMAXVALUE ] [ MINVALUE valeur NOMINVALUE ] [ CYCLE NOCYCLE ] [ CACHE ( valeur 20 ) NOCACHE ] Prégénération des valeurs (nombre des valeurs stockées en mémoire)

Suppression : syntaxe DROP SEQUENCE nom-séquence 2014-2015 Bases de données 4

Exemple CREATE SEQUENCE masequence START WITH 1000 INCREMENT BY 30 NOMAXVALUE NOCYCLE 2014-2015 Bases de données 5

Exemple (suite) INSERT INTO voyage (numvoyage, nomvoyage) VALUES(masequence.NEXTVAL, 'Voyage en Italie') INSERT INTO tarif VALUES (masequence.currval, SYSDATE+30, 1700) 2014-2015 Bases de données 6

Les vues Les vues en deux mots : des tables virtuelles Les vues en une phrase : une vue est une table qui est le résultat d une requête (SELECT) à laquelle on a donné un nom Le nom d une vue peut être utilisé partout où on peut mettre le nom d une table : SELECT, UPDATE, DELETE, INSERT, GRANT 2014-2015 Bases de données 7

Création d une vue : syntaxe CREATE [OR REPLACE] [FORCE NOFORCE] VIEW nom-de-vue [(attr 1,, attr n )] AS requête [WITH CHECK OPTION [CONSTRAINT nom-contrainte]] [WITH READ ONLY] 2014-2015 Bases de données 8

Utilisation d une vue : comme si elle était une table SELECT... FROM nom-de-vue WHERE... 2014-2015 Bases de données 9

Suppression d une vue DROP VIEW nom-de-vue La suppression d une vue n entraîne pas la suppression des données Les vues figurent dans les tables systèmes ALL_CATALOG, USER_VIEWS et ALL_VIEWS 2014-2015 Bases de données 10

Renommer une vue RENAME ancien-nom TO nouveau-nom 2014-2015 Bases de données 11

Film numfilm titre realisateur Exemple Exemplaire numexemplaire numfilm codesupport vo probleme detailsupport Client login nomclient prenomclient motdepasse adresse Individu numindividu nomindividu prenomindividu Location login numexemplaire datelocation dateenvoi dateretour 2014-2015 Bases de données 12

Exemple (2) CREATE OR REPLACE VIEW exemplaireplus (num, vo, titre, real, support) AS SELECT numexemplaire, vo, titre, nomindividu, codesupport FROM Exemplaire E, Film F, Individu WHERE E.numFilm = F.numFilm AND realisateur = numindividu AND probleme IS NULL; 2014-2015 Bases de données 13

Exemple (3) SELECT num, titre, datelocation, login FROM exemplaireplus, Location WHERE num = numexemplaire AND real = 'SAUTET' AND dateretour IS NULL; 2014-2015 Bases de données 14

Exemple (4) INSERT INTO exemplaireplus (num, support) VALUES (150346, 'DVD'); DROP VIEW exemplaireplus; 2014-2015 Bases de données 15

Quatre raisons d utiliser des vues 1) Effet macro : remplacer une requête compliquée par des requêtes plus simples 2) Confidentialité 3) Contraintes d intégrité 4) Augmenter l indépendance logique 2014-2015 Bases de données 16

1) Effet macro Remplacer une requête compliquée par des requêtes plus simples 2014-2015 Bases de données 17

2) Confidentialité : exemple CREATE VIEW emprunteurrestreint AS SELECT login, nomclient, prenomclient FROM Client 2014-2015 Bases de données 18

3) Contraintes d intégrité (CHECK OPTION) : exemple CREATE VIEW anciensexemplaires AS SELECT * FROM Exemplaire WHERE numexemplaire < 2000 WITH CHECK OPTION; UPDATE anciensexemplaires SET numexemplaire = 3812 WHERE numexemplaire = 1318; Sans 'WITH CHECK OPTION', c est possible. Avec 'WITH CHECK OPTION', c est impossible. 2014-2015 Bases de données 19

4) Augmenter l indépendance logique Les applications utilisant les tables de la base ne doivent pas être modifiées si on change le schéma de la base 2014-2015 Bases de données 20

Conditions de mise à jour pour les vues Pour UPDATE, DELETE, INSERT la vue ne doit pas contenir : Un opérateur ensembliste (UNION, MINUS, INTERSECT) Un opérateur DISTINCT Une fonction d agrégation comme attribut Une clause GROUP BY Une jointure (la vue doit être construite sur une seule table) 2014-2015 Bases de données 21

Conditions de mise à jour pour les vues (2) Pour UPDATE, DELETE, INSERT : Les colonnes résultats de l ordre SELECT doivent être des colonnes réelles d une table de la base et non des expressions Si la vue est construite à partir d une autre vue, cette dernière doit elle-même vérifier les conditions ci-dessus 2014-2015 Bases de données 22

Cas particulier d Oracle Une table T préserve la clé dans une vue V si la clé primaire de la table T désigne une seule ligne de la vue (elle pourrait être une clé de la vue si celle-ci était une vraie table) On peut faire une mise à jour si les colonnes référencées dans la mise à jour appartiennent toutes à la même table et si cette table préserve la clé dans la vue 2014-2015 Bases de données 23

Cas particulier d Oracle : exemple CREATE VIEW locationbis AS SELECT E.numExemplaire, nomclient, prenomclient, dateenvoi, dateretour, numfilm FROM Exemplaire E, Location L, Client C WHERE E.numExemplaire = L.numExemplaire AND L.login = C.login; La table location préserve la clé dans la vue locationbis Les tables client et exemplaire ne préservent pas la clé dans la vue locationbis 2014-2015 Bases de données 24

Cas particulier d Oracle : exemple (2) UPDATE locationbis SET dateretour = SYSDATE WHERE nomclient = 'Martin' AND numfilm = 1; Mise à jour possible 2014-2015 Bases de données 25

Cas particulier d Oracle : exemple (3) UPDATE locationbis SET numfilm = 4 WHERE nomclient = 'Duval'; Mise à jour impossible 2014-2015 Bases de données 26

Cas particulier d Oracle : exemple (4) INSERT INTO locationbis ( numexemplaire, dateenvoi, nomclient, prenomclient) VALUES(4578, SYSDATE, 'FIORENZI', 'FRANCESCA'); Insertion impossible 2014-2015 Bases de données 27

Rappels La définition de la vue est enregistrée dans la base de données, mais les lignes correspondant à la vue ne le sont pas A deux instants distincts, le «contenu» d une vue peut changer (si le contenu des tables qui entrent dans la description de la vue a évolué). En effet, le contenu d une vue est recalculé à chaque utilisation de la vue par SQL 2014-2015 Bases de données 28

Les index Un index est un objet associé à une table pour accélérer les requêtes sur cette table Un index, sous Oracle, peut avoir deux type d organisation : Un arbre équilibré (B-tree) Une bitmap 2014-2015 Bases de données 29

Organisation en arbre : exemple numfilm titre realisateur 22...... 15...... 58...... 44...... 29...... 53...... 8...... 2014-2015 Bases de données 30

ROWID Exemple (2) 0 1 2 3 4 5 6... 22 15 58 44 29 53 8 1 15,1 0 (racine) 29,4 position dans l arbre clé pointeur dans la table (ROWID) 4 53,5 2 8,6 3 22,0 5 44,3 6 58,2 Arbre binaire de recherche 2014-2015 31

Exemple (3) 0 (racine) 29,4 1 15,1 4 53,5 2 8,6 3 22,0 5 44,3 6 58,2 pointeur fils gauche pointeur fils droit clé pointeur dans la table (ROWID) 1,4,29,4 2,3,15,1-1, -1, 8, 6-1, -1, 22, 0 5, 6, 53, 5-1, -1, 44, 3-1, -1, 58, 2... 0 1 2 3 4 5 6 2014-2015 Bases de données 32

Les index (suite) Plusieurs index peuvent être associés à une même table Un index peut être créé à tout moment sur une table. Il est ensuite mise à jour automatiquement à chaque modification de la table Un index peut être créé sur un ou plusieurs attributs d une table (maximum 16). Si l index porte sur plusieurs attributs, on parle alors d index composé 33

B-arbre Toutes les branches ont la même longueur Les nœuds internes ont des arités bornées, par exemple, un nœud contiendra n clés avec 63 < n < 128 et la racine contiendra m clés avec 0 < m < 128 On considère que la racine est à profondeur 1, ses fils à profondeur 2, etc 2014-2015 Bases de données 34

B-arbre (suite) Si l arbre est complet (tous les nœuds ont 127 clés) et s il a pour profondeur p, alors il contiendra 128 p 1 clés Par exemple p = 1 127 clés p = 2 16383 clés p = 3 2097151 clés p = 4 268 millions de clés 2014-2015 Bases de données 35

B-arbre (suite et fin) Un nœud autre que la racine (arité n+1) clé 1 clé 2 clé 3 clé n clé 1 clé<clé 2 clé 3 clé<clé 4 clé n clé clé<clé 1 clé 2 clé<clé 3 clé n-1 clé<clé n 2014-2015 Bases de données 36

Bitmap Un index stocké sous forme de bitmap comporte une chaîne de bits (0 ou 1) pour chaque valeur de la colonne indexée La valeur bitmap est stockée en mode compressé, ce qui rend la place occupée par l index inférieure à celle requise par un index de type B-arbre 2014-2015 Bases de données 37

Bitmap : exemple numeleve classe 54 1 18 2 26 1 30 3 15 3 12 2 61 2 44 1 Index sur l attribut classe numeleve classe=1 classe=2 classe=3 54 1 0 0 18 0 1 0 26 1 0 0 30 0 0 1 15 0 0 1 12 0 1 0 61 0 1 0 44 1 0 0 BITMAP DE LA CLASSE 1 BITMAP DE LA CLASSE 2 BITMAP DE LA CLASSE 3 2014-2015 Bases de données 38

Création d index Un index est créé Soit automatiquement par le noyau (indexation implicite) Soit à la demande du développeur (indexation explicite) 2014-2015 Bases de données 39

Indexation implicite L indexation implicite est mise en œuvre lorsqu une clé primaire ou une contrainte d unicité est définie sur une table 2014-2015 Bases de données 40

Indexation explicite On interdit que deux lignes aient la même valeur pour l index CREATE [UNIQUE BITMAP] INDEX nom-index ON nom-table (nom-attribut [ASC DESC],... ) [PCTFREE nombre] Pourcentage de place à laisser libre dans chaque bloc de l index [TABLESPACE nom-tablespace] [NOSORT] On évite la phase de tri des lignes (si les lignes sont physiquement rangés par valeur) 2014-2015 Bases de données 41

Suppression et recréation Suppression d un index DROP INDEX nom-index Recréer un index ALTER INDEX nom-index REBUILD [PCTFREE nombre] [TABLESPACE nom-tablespace] 2014-2015 Bases de données 42

Les index (suite et fin) Dans le cas où il existe plusieurs index pour une table, l optimiseur de requête sait choisir le meilleur index en fonction de la requête à exécuter L adjonction d un index à une table ralentit les mises à jour, mais accélère beaucoup la recherche des lignes L adjonction d un index à une table augmente la place prise par la base de données sur le disque Les valeurs NULL ne sont pas stockées dans l index de façon à minimiser son volume 2014-2015 Bases de données 43

Il est conseillé de créer un index : Sur les attributs utilisés comme critère de jointure Sur les attributs servant souvent de critère de sélection Sur une table de gros volume dont la majorité des interrogations sélectionne moins de 15% des lignes Bitmap lorsque l attribut comporte peu de valeurs distinctes B-tree lorsque l attribut comporte une majorité de valeurs distinctes 2014-2015 Bases de données 44

Il est conseillé de ne pas créer d index : Sur les attributs souvent modifiés Sur les attributs qui sont toujours sollicités dans une clause WHERE par l intermédiaire d une expression Lorsqu une table comporte peu de lignes 2014-2015 Bases de données 45

Tables organisées en index Ce sont des tables qui possèdent un index sur leur clé primaire Cet index contient les clés primaires mais aussi les lignes de la table qui correspondent à ces clés. Donc l index contient la table elle-même On économise ainsi de la place (et du temps en rendant inutile le ROWID) L index doit être un B-tree 2014-2015 Bases de données 46

Syntaxe CREATE TABLE nom-table (... ) ORGANIZATION INDEX TABLESPACE nom-tablespace; 2014-2015 Bases de données 47

Dictionnaire de données USER_INDEXES USER_IND_COLUMNS ALL_INDEXES ALL_IND_COLUMNS DBA_INDEXES 2014-2015 Bases de données 48

TABLESPACES Une base peut être décomposée en tablespaces : partitions logiques contenant un ou plusieurs fichiers Un fichier appartient à 1 et 1 seul tablespace Un tablespace peut s étendre soit par ajout (on-line) d un fichier, soit par auto-extension du fichier du tablespace Par défaut il existe toujours un tablespace baptisé SYSTEM qui contient le dictionnaire de données et le rollback segment 2014-2015 Bases de données 49