ISC21-1 --- Système d Information Architecture et Administration d un SGBD Compléments SQL Jean-Marie Pécatte jean-marie.pecatte@iut-tlse3.fr 16 novembre 2006 ISIS - Jean-Marie PECATTE 1
Valeur de clé unique 16 novembre 2006 ISIS - Jean-Marie PECATTE 2
Valeur de clé unique Simplifier la gestion de la valeur unique d une clé primaire (par exemple un n client) [ rien en standard] Type attribut particulier : numeroauto (Access) NClient numeroauto Propriété AutoIncrement (MySQL) NClient int AutoIncrement Gestion d une séquence de nombres (PostgreSQL, Oracle) CREATE SEQUENCE client_seq INCREMENT BY 1 START WITH 1 et utilisation de la fonction nextval() [postgresql] CREATE TABLE client (numclient int DEFAULT nextval( client_seq ), ) [oracle] uniquement lors du Insert INSERT INTO client VALUES (client_seq.nextval, ) 16 novembre 2006 ISIS - Jean-Marie PECATTE 3
INDEX 16 novembre 2006 ISIS - Jean-Marie PECATTE 4
INDEX La création des INDEX permet d augmenter les performances lors de la recherche d information Par contre, à chaque mise à jour dans la relation, il est éventuellement nécessaire de mettre à jour tous les index augmentation du temps de traitement Commande SQL : CREATE INDEX nomindex ON relation(listeattribut) Index automatique ; la majorité des SGBD associe automatiquement un index à la clé primaire Optimiser les performances lors des jointures Moyen très rapide de vérifier l unicité (vu en détail dans le cours d optimisation) 16 novembre 2006 ISIS - Jean-Marie PECATTE 5
SYNONYME 16 novembre 2006 ISIS - Jean-Marie PECATTE 6
SYNONYME Création d un autre nom pour la référence à une relation, une vue, une procédure, Améliorer l indépendance par rapport à l accès aux données (localisation, propriétaire, ) Exemple : Dupont veut accéder à la liste des sportifs mais ces données sont dans la table Sportif de l utilisateur Durand qui lui a donné le droit d accès SELECT * FROM DURAND.SPORTIF Dupont connaît l origine des données Création d un synonyme (public) CREATE PUBLIC SYNONYM SPORTIF FOR DURAND.SPORTIF Dupont a accès au synonyme SELECT * FROM SPORTIF il n a plus d information sur l origine l application développée par Dupont n est plus dépendante de la localisation de la relation dans la BD de Durand 16 novembre 2006 ISIS - Jean-Marie PECATTE 7
Les vues matérialisées 16 novembre 2006 ISIS - Jean-Marie PECATTE 8
Vues matérialisées Une vue ne comporte pas de données La recherche de données dans une vue nécessite d accéder aux données des relations qui ont servi à créer la vue Gros volumes de données : performance Solution : créer une vue en dupliquant les données (vue matérialisée) Performance Pb : comment répercuter les modifications faites dans les relations de base sur la vue (synchronisation)? choisir un mode de rafraichissement 16 novembre 2006 ISIS - Jean-Marie PECATTE 9
Vues matérialisées : Oracle Création CREATE MATERIALIZED VIEW nomvue REFRESH AS SELECT Oracle propose 3 modes de rafraîchissement Synchrone lors du commit de la relation maître REFRESH ON COMMIT Asynchrone à la demande exécution d une commande pour demander le rafraîchissement REFRESH ON DEMAND Asynchrone cyclique définition d un intervalle de temps REFRESH START WITH 16 novembre 2006 ISIS - Jean-Marie PECATTE 10
Vues matérialisées : Oracle Oracle propose 3 méthodes de rafraîchissement Complète (complete) : on effectue la requête SELECT de définition de la vue méthode coûteuse en temps Partiel (ou rapide) (fast) : on traite uniquement les données modifiées dans la table maître Obligation d avoir un journal des modifs réalisées sur la table maître création du journal de la vue matérialisée CREATE MATERIALIZED VIEW LOG ON... Force : partiel si possible sinon complète (dépend de la présence du journal associé à la table maître de la vue) 16 novembre 2006 ISIS - Jean-Marie PECATTE 11
Vues matérialisées : Oracle Exemple : Select pays from sportif where nom= Douillet France -- creation d un log sur la table sportif create materialized view log on sportif; -- creation d une vue matérialisée sur la table sportif -- avec un mode de rafraichissement rapide (FAST) et à la demande (ON DEMAND) create materialized view sportif_vm refresh fast on demand as select * from sportif 16 novembre 2006 ISIS - Jean-Marie PECATTE 12
Vues matérialisées : Oracle -- contenue de la vue matérialisée Select pays from sportif_vm where nom= Douillet France -- Modification du pays de Douillet dans la relation sportif Update sportif set pays= Suisse where nom= Douillet Commit -- Contenu de la relation Sportif Select pays from sportif where nom= Douillet Suisse -- Contenu de la vue Sportif_wm Select pays from sportif_wm where nom= Douillet France -- la modif n a pas été répercutée 16 novembre 2006 ISIS - Jean-Marie PECATTE 13
Vues matérialisées : Oracle -- Lancement de la synchronisation call dbms_mview.refresh( sportif_vm','f') -- Contenu de la vue Sportif_wm Select pays from sportif_wm where nom= Douillet Suisse -- la modif a été répercutée 16 novembre 2006 ISIS - Jean-Marie PECATTE 14