Administration Base de Données 2011-2012
P.2
Séquences : objet de la base de données générant des numéros uniques pour des colonnes numériques de tables de
la base. Chaque rangée de table possède un numéro unique pour la colonne concernée.
L'ordre de création d'une séquence (
CREATE SEQUENCE)
permet de définir optionnellement: une
valeur de départ, une valeur d'incrément ou de décrément, une valeur maximum (pour une séquence
incrémenté) ou minimum (pour une séquence décrémenté), la taille du cache contenant plusieurs
valeurs d'avance, la possibilité de revenir à la valeur de départ (CYCLE) après avoir atteint la valeur
max ou min. Quand ces options ne sont pas utilisées, le SGBDR utilise ses valeurs par défaut.
On utilise une séquence en la référençant via les ordres SQL de mise à jour INSERT, UPDATE..
Exemple: Création sous PostgreSql
CREATE SEQUENCE serial START 101 ; crée la séquence "serial" commençant à 101
Utilisation sous PostgreSql
SELECT CURRVAL(serial); la fonction CURRVAL fournit la valeur courante de la séquence
INSERT INTO ……VALUES(... NEXTVAL(serial)); la fonction NEXTVAL permet d’obtenir
une nouvelle valeur dans la séquence
Création sous Oracle :
CREATE SEQUENCE serial START WITH 101 ; crée la séquence "serial" commençant à 101
Utilisation sous Oracle :
select serial.currval from dual; la pseudo-colonne "currval" fournit la valeur courante de la
séquence (la table "dual" est l'emplacement dans lequel Oracle stocke les différentes séquences)
INSERT INTO ……VALUES(... serial.NEXTVAL); la pseudo-colonne "nextval" permet
d’obtenir une nouvelle valeur dans la séquence
Procédure : ensemble nommé de commandes stockées dans la base
Fonction : ensemble nommé de commandes stockées dans la base et retournant une valeur
Triggers : programme associé à une table. C’est une procédure stockée dans la base de données qui est exécutée
soit à l’occurrence d’un événement donné, soit à l’occurrence d’une condition donnée sur la table.
L'ordre CREATE TRIGGER permet de spécifier :
- la table à laquelle est attaché le trigger
- l'instruction sur laquelle se déclenche le trigger (INSERT, UPDATE, DELETE)
- le moment, par rapport à l'instruction, d'éxécuter le code associé : avant l'instruction (BEFORE),
après l'instruction (AFTER), à la place de l'instruction (INSTEAD OF, utilisable uniquement sur des
vues)
- la condition d'exécution du trigger (WHEN expression_logique)
- le code à exécuter, soit en le spécifiant directement dans l'ordre, soit en référençant une procédure
existante
Le code à exécuter est écrit en PL/SQL, le langage procédural du SGBDR.
Index : structure contenant pour chaque ligne d’une table l’adresse physique à laquelle se trouvent les valeurs de
cette ligne. L’index permet un accès direct à l’information, donc un accès plus rapide.
Le SGBDR crée automatiquement un index associé à la clé primaire d'une table.
L'ordre CREATE INDEX permet à l'administrateur de créer explicitement de nouveau index.
Le type d’index généralement utilisé dans les SGBDR est le BTREE et ses variantes.
Principe du BTREE (Balance Tree = arbre équilibré) : il s'agit d'un arbre dont toutes les feuilles sont au
même niveau; chaque nœud contient des clés triées par ordre croissant et des pointeurs; un pointeur
interne désigne un fils dans l’arbre; un pointeur externe désigne les données (adresse physique). La
recherche se fait en partant de la racine, et en comparant la valeur recherchée aux valeurs de clé du
noeud. Si la valeur recherchée est inférieur à la première valeur du noeud on poursuit via le premier
pointeur interne, sinon, si elle est comprise entre la première valeur et la suivante, on poursuit en utilisant
le pointeur correspondant; et ainsi de suite. Cette technique permet de retrouver beaucoup plus
rapidement une clé qu'en accès séquentiel.