Académique Documents
Professionnel Documents
Culture Documents
1. Introduction
1. Dfinitions
2. Fonctionnalits
3. Architecture logique d'un SGBD
1. Architecture Ansi/Sparc
2. Indpendance donnes - programmes
2. Le modle relationnel de donnes
1. Dfinition formelle
2. Caractristiques des relations
3. Contraintes d'intgrit
3. Les langages relationnels
1. L'algbre relationnelle
2. Les langages prdicatifs (nuplet et domaine)
1. Spcification formelle du calcul relationnel variable nuplet
2. Spcification formelle du calcul relationnel variable domaine
3. Exemple de la base des invitations
4. Le langage SQL
1. Introduction
2. Prsentation de la base exemple Cooprative
3. Le langage de dfinition des donnes
4. Le langage d'interrogation
1. Syntaxe gnrale
2. Requetes mono-relation
3. Expression de jointure
4. Oprateurs ensemblistes
5. Fonctions - Agrgats
6. Partitionnement
7. Quantificateurs
8. Synthse
5. Le langage de mise jour
6. Normalisation de SQL
7. Complments sur intgrit, vues et droits
1. Contraintes d'intgrit
1. Dfinition
2. Exemples
3. Vrification
2. Vues relationnelles
1. Principes
2. Vue relationnelle
3. Evaluation d'une vue
3. Gestion des droits
5. Conception Entit-Association
1. Introduction
2. Les concepts
3. Comparaison modles E/A et relationnel
4. Rgles de passage E/A vers relationnel
5. Des exemples pour illustrer
1. La base de gestion du personnel
2. La base cooprative
6. Avantages - Inconvnients
6. Dpendances fonctionnelles et normalisation
1. Dpendance fonctionnelle sur une relation (DF)
2. Proprits des dpendances fonctionnelles
3. Dcomposition binaire d'une relation
4. Dfinitions :
5. Normalisation des relations (formes normales)
6. Dpendances fonctionnelles et conception de schmas
7. Architecture logicielle d'un SGBD
8. Evaluation et Optimisation de requtes
1. Optimisations algbriques
1. Rgles de transformation de l'algbre relationnelle
2. Algorithme gnral d'optimisation heuristique
2. Optimisation par une fonction de cot
9. Contrle des accs concurrents et reprise
1. Introduction
2. Problmes lis aux accs concurrents
3. Mcanismes pour assurer la concurrence et la reprise
1. Transactions et journalisation
2. Concurrence par verrouillage
3. Granularit de contrle de concurrence
4. Principes gnraux de la reprise
10. Performances des systmes relationnels : benchmarks TPC
11. BIBLIOGRAPHIE
BD et SGBD : Table des Matires
Introduction
Les limites l'utilisation des fichiers
Objectifs des systmes de gestion de bases de donnes
Concepts de base
Composants des systmes de gestion de bases de donnes
Un peu d'histoire
Le modle relationnel
Dfinitions
Oprateurs relationnels
Formes normales
Langages de manipulation de donnes relationnelles
Remarques
L'optimiseur de requtes
Rcriture des requtes
Choix des chemins d'accs
Requte portant sur une seule table
Jointures sans index
Jointures avec index
ORDER BY
Cohrence des interrogations et accs concurrents
Interrogation
Mise jour
Contrle des accs la base et scurit des donnes
Droits d'accs aux tables
Stockage des donnes
Les index
Les clusters
Bibliographie
Index
Introduction
Les bases de donnes sont actuellement au cur du systme d'information des entreprises. Les systmes de
gestion de bases de donnes, initialement disponibles uniquement sur des "mainframes", peuvent maintenant tre
installs sur tous les types d'ordinateurs y compris les ordinateurs personnels. Mais attention, souvent on dsigne,
par abus de langage, sous le nom "bases de donnes" des ensembles de donnes qui n'en sont pas.
Qu'est-ce donc qu'une base de donnes? Que peut-on attendre d'un systme de gestion de bases de donnes?
C'est ces questions, entre autres, que cet ouvrage essaie d'apporter des rponses.
Dans un premier temps, et de faon informelle, on peut considrer une Base de Donnes (BD) comme une
grande quantit de donnes, centralises ou non, servant pour les besoins d'une ou plusieurs applications,
interrogeables et modifiables par un groupe d'utilisateurs travaillant en parallle. Quant au Systme de Gestion
de Bases de Donnes (SGBD), il peut tre vu comme le logiciel qui prend en charge la structuration, le stockage,
la mise jour et la maintenance des donnes ; c'est, en fait, l'interface entre la base de donnes et les utilisateurs
ou leurs programmes.
Les limites l'utilisation des fichiers
Objectifs des systmes de gestion de bases de donnes
Concepts de base
Composants des systmes de gestion de bases de donnes
Un peu d'histoire
Les limites l'utilisation des fichiers
L' utilisation de fichiers impose d'une part, l'utilisateur de connatre l'organisation (squentielle, indexe, ...)
des fichiers qu'il utilise afin de pouvoir accder aux informations dont il a besoin et, d'autre part, d'crire des
programmes pour pouvoir effectivement manipuler ces informations. Pour des applications nouvelles,
l'utilisateur devra obligatoirement crire de nouveaux programmes et il pourra tre amen crer de nouveaux
fichiers qui contiendront peut-tre des informations dj prsentes dans d'autres fichiers.
De telles applications sont :
rigides,
contraignantes,
longues et coteuses mettre en uvre.
Les donnes associes sont :
mal dfinies et mal dsignes,
redondantes,
peu accessibles de manire ponctuelle,
peu fiables.
La prise de dcision est une part importante de la vie d'une socit. Mais elle ncessite d'tre bien inform sur la
situation et donc d'avoir des informations jour et disponibles immdiatement.
Les utilisateurs, quant eux, ne veulent plus de systmes d'information constitus d'un ensemble de programmes
inflexibles et de donnes inaccessibles tout non spcialiste ; ils souhaitent des systmes d'informations globaux,
cohrents, directement accessibles (sans qu'ils aient besoin soit d'crire des programmes soit de demander un
programmeur de les crire pour eux) et des rponses immdiates aux questions qu'ils posent. On a donc
recherch des solutions tenant compte la fois des dsirs des utilisateurs et des progrs techniques. Cette
recherche a abouti au concept de base de donnes.
Dfinition (base de donnes) : Une base de donnes est un ensemble d'informations sur un sujet qui est :
exhaustif,
non redondant,
structur,
persistant.
Dfinition (systme de gestion de base de donnes) : Un systme de gestion de base de donnes est un
logiciel qui permet de :
dcrire,
modifier,
interroger,
administrer,
les donnes d'une base de donnes.
Ces langages doivent permettre d'obtenir des rponses aux interrogations en un temps
"raisonnable". Ils doivent donc tre optimiss et, entre autres, il faut un mcanisme
permettant de minimiser le nombre d'accs disques. Tout ceci, bien sur, de faon
compltement transparente pour l'utilisateur.
Administration centralise des donnes
Des visions diffrentes des donnes (entre autres) se rsolvent plus facilement si les
donnes sont administres de faon centralise.
Non-redondance des donnes
Afin d'viter les problmes lors des mises jour, chaque donne ne doit tre prsente
qu'une seule fois dans la base.
permettre deux (ou plus) utilisateurs de modifier la mme donne "en mme
temps" ;
Les donnes doivent pouvoir tre protges contre les accs non autoriss. Pour cela, il
faut pouvoir associer chaque utilisateur des droits d'accs aux donnes.
Rsistance aux pannes
Que se passe-t-il si une panne survient au milieu d'une modification, si certains fichiers
contenant les donnes deviennent illisibles? Les pannes, bien qu'tant assez rares, se
produisent quand mme de temps en temps. Il faut pouvoir, lorsque l'une d'elles arrive,
rcuprer une base dans un tat "sain". Ainsi, aprs une panne intervenant au milieu d'une
modification deux solutions sont possibles : soit rcuprer les donnes dans l'tat dans
lequel elles taient avant la modification, soit terminer l'opration interrompue.
Malheureusement, ces objectifs ne sont pas toujours atteints.
Concepts de base
Pour assurer ces objectifs (surtout les deux premiers), trois niveaux de description des donnes ont t dfinis par
la norme ANSI/SPARC.
Niveau interne
Description du stockage des donnes au niveau des units de stockage, des fichiers, ... On
appelle cette description le schma interne.
Niveau conceptuel
Description de la structure de toutes les donnes qui existent dans la base, description de
leurs proprits (relations qui existent entre elles) c'est--dire de leur smantique
inhrente, sans soucis d'implmentation physique ni de la faon dont chaque groupe de
travail voudra s'en servir. On appelle cette description le schma conceptuel.
Niveau externe
Description pour chaque utilisateur de sa perception des donnes. On appelle cette
description le schma externe ou vue.
Le rsultat de la conception d'une base de donnes sera une description des donnes. Par description on entend
dfinir les proprits d'ensembles d'objets modliss dans la base de donnes et non pas d'objets particuliers. Les
objets particuliers sont dfinis par les programmes d'applications lors des insertions et des mises jour des
donnes. Ils doivent alors vrifier les proprits des ensembles auxquels ils appartiennent.
Cette description des donnes sera effectue en utilisant un modle de donnes. Ce dernier est un outil
intellectuel utilis pour comprendre l'organisation logique des donnes. C'est un ensemble de concepts et de
rgles pour les utiliser, permettant de construire avec des types de donnes une reprsentation de la ralit.
Un systme de gestion de bases de donnes est caractris par le modle de description des donnes qu'il
supporte. Les donnes sont dcrites sous la forme de ce modle, grce un langage de description des donnes.
Cette description est appele schma. Les modles utiliss sont : rseau, relationnel, objet, ...
Une fois la base de donnes spcifie, on peut y insrer des donnes, les rcuprer, les modifier et les dtruire.
C'est ce qu'on appelle manipuler les donnes. Les donnes peuvent tre manipules non seulement par un
langage spcifique de manipulation des donnes mais aussi par des langages de programmation "classiques".
Cette partie sera constitue des outils (en gros des langages) permettant de dcrire la
vision des donnes de chaque utilisateur et l'intgration dans une vision globale. On y
trouve aussi les outils permettant de dcrire le stockage physique des donnes.
Un peu d'histoire
1960
Uniquement des systmes de gestion de fichiers plus ou moins sophistiqus.
1970
Dbut des systmes de gestion de bases de donnes rseaux et hirarchiques proches des
systmes de gestion de fichiers. Ces systmes de gestion de bases de donnes avaient
rempli certains des objectifs prcdents mais on ne pouvait pas interroger une base sans
savoir o tait l'information recherche (on "naviguait") et sans crire de programmes.
Sortie du papier de CODD sur la thorie des relations, fondement de la thorie des bases
de donnes relationnelles.
1980
Le modle relationnel
Le modle relationnel a t formalis par CODD en 1970. Quelques exemples de ralisation en sont :
DB2(IBM), INFORMIX, INGRES, ORACLE.
Dans ce modle, les donnes sont stockes dans des tables, sans prjuger de la faon dont les informations sont
stockes dans la machine. Un ensemble de donnes sera donc modlis par un ensemble de tables.
Le succs du modle relationnel auprs des chercheurs, concepteurs et utilisateurs est d la puissance et la
simplicit de ses concepts. En outre, contrairement certains autres modles, il repose sur des bases thoriques
solides, notamment la thorie des ensembles et la logique mathmatique( thorie des prdicats d'ordre 1).
Les objectifs du modle relationnel :
proposer des schmas de donnes faciles utiliser,
amliorer l'indpendance logique et physique,
mettre la disposition des utilisateurs des langages de haut niveau pouvant ventuellement tre utiliss
par des non informaticiens,
optimiser les accs la base de donnes,
amliorer l'intgrit et la confidentialit,
fournir une approche mthodologique dans la construction des schmas.
De faon informelle, on peut dfinir le modle relationnel de la manire suivante :
Les donnes sont organises sous forme de tables deux dimensions, encore appeles relations et
chaque ligne n-uplet ou tuple,
les donnes sont manipules par des oprateurs de l'algbre relationnelle,
l'tat cohrent de la base est dfini par un ensemble de contraintes d'intgrit.
Au modle relationnel est associe la thorie de la normalisation des relations qui permet de se dbarrasser des
incohrences au moment de la conception d'une base de donnes.
Dfinitions
Oprateurs relationnels
Formes normales
Dpendance fonctionnelle
Notion de cl
Formes normales
Langages de manipulation de donnes relationnelles
Remarques
Dfinitions
Dfinition (Domaine) : Ensemble de valeurs.
Dfinition (Relation) : Sous-ensemble du produit cartsien d'une liste de domaines caractris par un nom.
En d'autres termes, une relation n'est ni plus ni moins qu'une table dans laquelle chaque colonne correspond un
domaine et porte un nom ce qui rend leur ordre sans aucune importance.
Dfinition (Attribut) : Colonne d'une relation caractrise par un nom.
Dfinition (Schma de relation) : Nom de la relation, suivi de la liste des attributs avec leurs domaines.
Dfinition (Base de donnes relationnelles) : Base de donnes dont le schma est un ensemble de schmas de
relations et dont les occurrences sont les tuples de ces relations.
Dfinition (Systme de gestion de bases de donnes relationnel) : C'est un logiciel supportant le modle
relationnel, et qui peut manipuler les donnes avec des oprateurs relationnels.
Oprateurs relationnels
Dfinition (Projection) : Opration qui consiste supprimer des attributs d'une relation et liminer les tuples
en double apparaissant dans la nouvelle relation. Cette opration est note Π.
Dfinition (Restriction) : Opration qui consiste supprimer les tuples d'une relation ne satisfaisant pas la
condition prcise.
Dfinition (Jointure) : Opration qui consiste faire le produit cartsien de deux relations, puis supprimer
les tuples ne satisfaisant pas une condition portant sur un attribut de la premire relation et sur un attribut de la
seconde.
Dfinition (Union) : Opration portant sur deux relations ayant le mme schma et construisant une troisime
relation constitue des tuples appartenant chaque relation. Les tuples en double sont limins.
Dfinition (Diffrence relationnelle) : Opration portant sur deux relations ayant le mme schma et
construisant une troisime relation dont les tuples sont constitus de ceux ne se trouvant que dans une seule
relation.
Dfinition (Intersection) : Opration portant sur deux relations ayant le mme schma et construisant une
troisime relation dont les tuples sont constitus de ceux appartenant aux deux relations.
Formes normales
Dpendance fonctionnelle
Dfinition (dpendance fonctionnelle) : Soit R(A1,A2,...An) un schma de relation, et X et Y des sous-
ensembles de {A1,A2,...An}. On dit que X dtermine Y ou que Y dpend fonctionnellement de X si, et seulement
si, des valeurs identiques de X impliquent des valeurs identiques de Y. On le note : X -> Y
Dfinition (dpendance fonctionnelle lmentaire) : C'est une dpendance fonctionnelle de la forme X -> Y,
o A est un attribut unique n'appartenant pas X et o il n'existe pas X' inclus dans X tel que X -> Y.
Notion de cl
Dfinition (cl de relation) : Soit R(A1, A2, ..., An) un schma de relation, et X un sous-ensemble de (A1, A2, ...,
An), X est une cl si, et seulement si, :
X -> (A1, A2, ..., An)
X est minimal
Formes normales
Dfinition (Premire forme normale) : Une relation est en premire forme normale si et seulement si tout
attribut contient une valeur atomique.
Dfinition (Deuxime forme normale) : Une relation est en deuxime forme normale si et seulement si :
elle est en premire forme normale ;
tout attribut n'appartenant pas une cl ne dpend pas que d'une partie de cette cl.
Dfinition (Troisime forme normale) : Une relation est en troisime forme normale si et seulement si :
elle est en deuxime forme normale ;
tout attribut n'appartenant pas une cl ne dpend pas d'un attribut non-cl.
Dfinition (Forme normale de BOYCE-CODD) : Une relation est en Forme normale de BOYCE-CODD
(BCNF) si, et seulement si, les seules dpendances fonctionnelles lmentaires sont celles dans lesquelles une cl
dtermine un attribut.
l'insertion
ajouter des tuples,
la suppression
enlever des tuples vrifiant certains critres,
la modification
modifier des tuples vrifiant certains critres.
Un langage de manipulation de donnes n'est pas utilisable lui seul, il doit aussi pouvoir tre incorporable dans
un langage de programmation classique.
On peut distinguer trois grandes classes de langages :
Les langages algbriques bass sur l'algbre relationnelle de CODD dans lesquels les requtes sont
exprimes comme l'application des oprateurs relationnels sur des relations. C'est dans cette catgorie
que l'on trouve le langage sql(structured query language), standard pour l'interrogation de bases de
donnes.
Les langages bass sur le calcul relationnel de tuples construits partir de la logique des prdicats dans
lesquels les variables manipules sont des tuples.
Les langages bass sur le calcul relationnel de domaines, construit aussi partir de la logique des
prdicats mais en faisant varier les variables sur les domaines des relations.
Le langage sql (Structured Query Language) comprend lui seul l'ensemble des instructions ncessaires la
spcification et l'utilisation d'une base de donnes relationnelle. C'est un langage de type dclaratif c'est--dire
que l'on spcifie les proprits des donnes que l'on recherche et pas, comme dans un langage impratif,
comment les retrouver.
Le langage sql est un langage normalis, la dernire version de la norme date de 92 et, souvent, on y fait
rfrence en parlant de sql-92. La prochaine version de la norme est en cours de rdaction afin d'intgrer, entre
autres, la notion de types abstraits algbriques, on la dsigne sous le nom de sql3.
C'est la fois :
un langage d'interrogation de donnes (LID) : SELECT ;
un langage de manipulation de donnes (LMD) : UPDATE, INSERT, DELETE ;
un langage de dfinition des donnes (LDD) : ALTER, CREATE, DROP;
un langage de contrle des donnes et des utilisateurs (LCD) : GRANT, REVOKE.
Remarques
Beaucoup de systmes de gestion de donnes (et non pas de gestion de bases de donnes ) sont vendus comme
tant relationnels, souvent parce qu'ils prsentent les donnes sous forme de tables.
Un systme est dit minimalement relationnel s'il satisfait aux conditions suivantes :
toute information dans la base est reprsente par des valeurs dans des tables,
il n'y a pas de pointeurs visibles par l'utilisateur entre les tables,
le systme doit supporter au moins les oprateurs relationnels de restriction, projection, jointure
naturelle.
Un systme est dit compltement relationnel s'il satisfait, en plus, aux conditions suivantes :
il supporte tous les oprateurs de l'algbre relationnelle,
il supporte la contrainte d'unicit de cl d'une relation,
il supporte les contraintes rfrentielles qui permettent de s'assurer que la valeur d'une donne d'une
relation existe dans une autre relation (notion de foreign key).
En dpit de sa simplicit et de son lgance le modle relationnel n'apporte pas une rponse satisfaisante tous
les problmes des applications. Il faut :
Pouvoir prendre en compte des "objets" structurs ainsi que les oprations qui leur sont associes (bases
de donnes orientes objet).
Prendre en compte des donnes peu structures : textes, sons, images, graphiques (bases de donnes
multimdia).
Faire le pont avec l'intelligence artificielle afin de pouvoir dduire de nouvelles donnes partir de
celles existant dj (bases de donnes dductives)
L'optimiseur de requtes
Avec des langages tels que sql, l'utilisateur prcise les proprits des donnes qui l'intressent sans fournir
d'algorithme d'accs. Les optimiseurs de requte sont l pour cela, leurs objectifs sont de :
vrifier la correction syntaxique de la question,
rechercher des questions quivalentes plus simples,
dterminer l'ordre des oprations lmentaires d'accs en vue de :
rduire le nombre d'entres/sorties,
rduire le temps cpu,
rduire la taille des ressources mmoires ncessaires,
optimiser en premier les questions les plus frquentes.
Chaque sgbd contient un optimiseur de requtes qui peut tre lgrement diffrent d'un sgbd l'autre. Les
algorithmes utiliss sont rarement connus en dtail mais les grandes tapes de l'optimisation sont en gnral :
1. Reprsenter la requte sous une forme interne et la dcomposer en une squence d'oprations
lmentaires.
2. Transformer la requte par :
simplification : remplacement d'une question par une question quivalente plus simple,
ordonnancement des oprations lmentaires.
3. Construire un ensemble de plans d'excution candidats.
4. Calculer le cot de chaque plan et choisir le meilleur.
5. Excuter la requte.
Rcriture des requtes
ORDER BY
SELECT *
FROM emp
WHERE nom = 'MARTIN'
AND n_dept = 20;
De mme un SELECT avec plusieurs prdicats lis par OR sera excut comme une union du rsultat de
plusieurs SELECT bnficiant chacun d'un index. Dans ce cas, il faut que tous les prdicats bnficient d'un
index.
Exemple :
SELECT *
FROM emp
WHERE nom = 'MARTIN'
OR n_dept = 20 ;
Dans ces cas il se peut que l'utilisation de l'un des index soit pnalisante. Ce peut tre le cas d'un index peu
slectif, alors que les autres index utilisables sont trs slectifs. Dans ce cas l'on peut empcher oracle d'utiliser
les index inadquats, en formulant les conditions de telle faon que le critre de recherche soit une fonction de la
colonne indexe et non pas la colonne indexe elle-mme (dans ce cas oracle n'utilise pas l'index).
Exemple :
SELECT *
FROM emp
WHERE nom = 'MARTIN'
AND n_dept + 0 = 20;
o les champs nom et n_dept sont indexs. Le fait d'ajouter 0 la colonne n_dept empche d'utiliser l'index
sur n_dept, qui ne ferait que ralentir la requte car il est peu slectif. L'index sur nom, qui est trs slectif,
suffit.
De la mme faon, l'on peut concatner une chane vide une colonne de type caractre pour empcher oracle
d'utiliser l'index sur cette colonne :
SELECT *
FROM emp
WHERE nom = 'MARTIN'
AND fonction ||''= 'directeur' ;
SELECT *
FROM emp, dept
WHERE emp.n_dept = dept.n_dept
AND dept.nom = 'vente'
AND fonction ='directeur' ;
ORDER BY
L'optimiseur d'interrogation d'oracle dcidera dans certains cas de passer par l'index pour slectionner les lignes
d'une table selon un certain ordre. Pour cela il faut que :
le critre de classement soit le contenu d'une colonne indexe
cette colonne ait l'attribut not null (obligatoire)
la slection porte sur toute la table (pas de WHERE)
Exemple : Le SELECT suivant utilisera l'index sur la colonne salaire si cette colonne ne contient pas de
valeurs NULL.
Mise jour
Pour s'assurer l'accs exclusif en modification une table, l'on peut verrouiller cette table en mode exclusif par la
commande :
Les systmes de gestion de bases de donnes permettent plusieurs utilisateurs de travailler en toute scurit sur
la mme base ou sur des bases diffrentes.
Chaque donne peut tre dfinie, soit comme confidentielle et accessible un seul utilisateur, soit comme tant
partageable entre plusieurs utilisateurs.
Les ordres GRANT et REVOKE du langage sql permettent de dfinir les droits de chaque utilisateur sur les objets
de la base.
Tout utilisateur doit possder un nom d'utilisateur et un mot de passe pour pouvoir accder la base. C'est ce
nom d'utilisateur qui dterminera les droits d'accs aux objets de la base.
Droits d'accs aux tables
consultation
INSERT
Les index
Utilisation des index
Valeurs NULL
Conversions
Choix des index
Index comprim et non comprim
Index concatn
Les clusters
Buts
Les index
Selon le modle relationnel les slections peuvent tre faites en utilisant le contenu de n'importe quelle colonne
et les lignes sont stockes dans n'importe quel ordre.
Considrons le SELECT suivant :
SELECT *
FROM emp
WHERE nom = 'MARTIN'
Un moyen de retrouver la ou les lignes pour lesquelles nom est gal MARTIN est de balayer toute la table.
Un tel moyen d'accs conduit des temps de rponse prohibitifs pour des tables dpassant quelques centaines de
lignes.
Une solution offerte par tous les systmes de gestion de bases de donnes est la cration d'index, qui permettra
de satisfaire aux requtes les plus frquentes avec des temps de rponse acceptables.
Un index sera matrialis par la cration de blocs disque contenant des couples (valeurs d'index, numro de bloc)
donnant le numro de bloc disque dans lequel se trouvent les lignes correspondant chaque valeur d'index.
SELECT *
FROM emp
WHERE nom LIKE 'M
Par contre si le dbut de la cl n'est pas connu, l'index est inutilisable.
Exemple : La requte suivante ne bnficiera pas d'un index sur le champ nom.
SELECT *
FROM emp
WHERE ename LIKE '
Valeurs NULL
Elles ne sont pas reprsentes dans l'index, ceci afin de minimiser le volume ncessaire pour stocker l'index. En
contrepartie, l'index ne sera d'aucune utilit pour retrouver les valeurs NULL lorsque le critre de recherche est
du type IS NULL.
Conversions
L'index n'est utilisable que si le critre de slection est le contenu de la colonne indexe, sans aucune
transformation. Par exemple un index sur salaire ne sera pas utilis pour la requte suivante :
CREATE INDEX x
ON emp (num, nom)
nocompress ;
permettra de rpondre la question :
SELECT nom
FROM emp
WHERE num > 17217 ;
sans lire la table puisque toutes les informations se trouvent dans l'index et que l'index est non concatn.
Index concatn
Un index concatn est un index portant sur plusieurs colonnes.
Exemple :
SELECT nom
FROM emp
WHERE n_dept = 20 ;
Les clusters
Buts
Le cluster est une organisation physique des donnes qui consiste regrouper physiquement (dans un mme bloc
disque) les lignes d'une ou plusieurs tables ayant une caractristique commune (une mme valeur dans une ou
plusieurs colonnes) constituant la cl du cluster.
La mise en cluster a trois objectifs :
acclrer la jointure selon la cl de cluster des tables mises en cluster,
acclrer la slection des lignes d'une table ayant mme valeur de cl, par le fait que ces lignes sont
regroupes physiquement,
conomiser de la place, du fait que chaque valeur de la cl du cluster ne sera stocke qu'une seule fois.
Le regroupement en cluster est totalement transparent l'utilisateur : des tables mises en cluster sont toujours
vues comme des tables indpendantes.
Par exemple on pourrait mettre en cluster les tables emp et dept selon n_dept. Ces tables seraient
rorganises de la faon suivante : un bloc de cluster serait cr pour chaque numro de dpartement, ce bloc
contenant la fois les lignes de la table emp et de la table dept correspondant ce numro de dpartement. La
jointure entre les tables emp et dept selon n_dept deviendrait alors beaucoup plus rapide, puisqu'elle serait
dj ralise dans l'organisation physique des tables.
Pour que l'on puisse mettre une table en cluster il faut que l'une au moins des colonnes faisant partie du cluster
soit dfinie comme obligatoire (NOT NULL).
On peut indexer les colonnes d'une table en cluster, y compris les colonnes correspondant la cl ou une partie
de la cl du cluster. La cl elle-mme est automatiquement indexe, on peut ventuellement la rindexer pour
crer un index unique servant contrler son unicit.