Système de gestion de bases de données par l`exemple

publicité
Table des matières
Avant-propos
Table des matières
1
Introduction aux systèmes de gestion de bases de données
1.1
Donnée et type de données
1.2
Donnée et information
1.3
Donnée simple et complexe
1.4
Différentes facettes du terme base de données
1.5
Système de gestion de bases de données
1.6
Principales architectures de bases de données
1.7
Des systèmes de gestion de fichiers aux SGBD
1.8
Perspective historique
1.9
Exemple introductif d'utilisation d'un SGBD
1.10 Conception du schéma d'une base de données
1.11 Architecture à trois niveaux des schémas
Exercices
Notes bibliographiques
Références
v
xi
1
2
2
3
4
4
9
14
20
22
36
38
40
40
41
2
Processus de conception de bases de données
2.1
Planification
2.2
Analyse : modèle conceptuel de données
2.3
Diagrammes de classes UML
2.4
Modèle entité-association : ERD de Oracle Designer
Exercices
Références
43
46
49
50
80
83
84
3
Introduction au modèle relationnel
3.1
Concepts de base
3.2
Contraintes d'intégrité fondamentales du modèle relationnel
3.3
Conception logique : traduction du modèle conceptuel de données en schéma conceptuel relationnel
3.4
Algèbre relationnelle
Exercices
Notes bibliographiques
Références
85
86
90
94
122
138
140
140
4
Le langage SQL
4.1
Spécification du schéma relationnel avec SQL (LDD SQL)
4.2
Requêtes SQL (SELECT)
4.3
Opérations de mise à jour en SQL
4.4
Niveau externe du schéma en SQL
4.5
Schéma interne
4.6
Sommaire des SQL2, SQL:1999 et SQL:2003
Exercices
Projets à réaliser
Notes bibliographiques
Références
141
144
156
193
196
215
215
217
218
218
219
xii
Systèmes de gestion de bases de données par l'exemple
5
Interface entre SQL et un programme
5.1
SQL enchâssé
5.2
Introduction à l'extension procédurale PL/SQL d'Oracle
5.3
JDBC
5.4
SQLJ
Exercices
Projets à réaliser
Notes bibliographiques
Références
220
223
229
243
279
294
296
296
296
6
Gestion des contraintes d'intégrité en SQL
6.1
Contrainte de domaine (NOT NULL, CHECK, CREATE DOMAIN)
6.2
Contrainte de clé primaire (PRIMARY KEY)
6.3
Autres clés uniques (UNIQUE)
6.4
Contrainte d'intégrité référentielle (FOREIGN KEY REFERENCES)
6.5
Autres cas contraintes (CHECK complexe et ASSERTION)
6.6
Implémentation de la vérification des contraintes d'intégrité
6.7
Cohérence des contraintes d'intégrité
6.8
Nom de contrainte (clause CONSTRAINT)
6.9
Contraintes déférées (SET CONSTRAINTS DEFERRED)
6.10 Gâchettes (TRIGGER)
Exercices
Projets à réaliser
Notes bibliographiques
Références
297
299
301
301
302
307
309
310
310
310
312
324
324
325
325
7
Gestion des données en mémoire secondaire
7.1
Principales caractéristiques des disques
7.2
Fichiers et répertoires
7.3
Organisation par bloc
7.4
Concepts de base du traitement de fichiers en Java
7.5
Organisation par enregistrement
7.6
Allocation sérielle d'espace pour les enregistrements de taille fixe et l'adressage relatif
7.7
Allocation d'espace pour les enregistrements de taille variable
7.8
Allocation sérielle par grappe homogène
7.9
Fichiers séquentiels
7.10 Gestion d'enregistrements en Java
Exercices
Projets à réaliser
Notes bibliographiques
Références
326
328
335
338
353
373
383
386
394
398
400
415
416
416
416
8
Organisations unidimensionnelles : indexage et hachage
8.1
Organisations unidimensionnelles : indexage et hachage
8.2
Arbre digital
8.3
Hachage
8.4
Tableau comparatif des organisations
Exercices
Projets à réaliser
Notes bibliographiques
Références
418
420
448
449
464
466
468
469
469
Table des matières
xiii
9
Méthodes multidimensionnelles et représentation d'associations
9.1
Méthodes multidimensionnelles
9.2
Représentation des associations
Notes bibliographiques
Références
471
472
489
497
498
10
Évaluation des requêtes relationnelles
10.1 Concepts de base
10.2 Décomposition
10.3 Estimation du coût des opérations physiques
10.4 Optimisation
Exercices
Notes bibliographiques
Références
499
501
506
507
550
568
572
572
11
Théorie de la normalisation
11.1 Décomposition sans perte
11.2 Dépendance fonctionnelle
11.3 Normalisation
Exercices
Notes bibliographiques
Références
573
576
577
586
605
609
609
12
Cas d'utilisation détaillés et processus d'élaboration du modèle conceptuel de données
12.1 Cas d'utilisation détaillés
12.2 Concepts avancés de diagrammes de classes UML
12.3 Processus d'élaboration du modèle conceptuel de données
12.4 Estimation des volumes de données
Exercices
Références
610
611
622
633
661
662
664
13
Conception dans un contexte relationnel
13.1 Mise en œuvre des contraintes d'intégrité en SQL
13.2 Conception du schéma relationnel au niveau externe
13.3 Niveau interne de schéma relationnel : conception physique
13.4 Paramètres du mécanisme d'allocation d'espace : cas de Oracle
13.5 Mise au point de la configuration du SGBD : cas de Oracle
13.6 Choix de l'architecture et bancs d'essais TPC
Exercices
Projets à réaliser
Notes bibliographiques
Références
665
668
695
697
723
729
731
732
734
734
734
14
Intégrité et gestion des transactions
14.1 Concept de transaction
14.2 Propriétés d'une transaction
14.3 État d'une transaction
14.4 Architecture générale pour la gestion des transactions
14.5 Contrôle de concurrence
14.6 Fiabilité et récupération
14.7 Modèles avancés de transaction
735
737
739
742
744
745
783
798
xiv
Systèmes de gestion de bases de données par l'exemple
Exercices
Notes bibliographiques
Références
802
810
810
15
Développement d'application de bases de données en Java
15.1 Application Java/JDBC client-serveur
15.2 Développement d'applications Web par servlet Java
15.3 Architecture pour la persistance transparente
15.4 Norme EJB de J2EE
Projets à réaliser
Notes bibliographiques
Références
811
812
849
869
870
900
902
902
16
Bases de données objet et persistance transparente
16.1 Le langage de définition de données ODL
16.2 Mécanismes de gestion des objets persistants
16.3 Le langage de requête OQL
16.4 Le langage de manipulation de données OML
16.5 Persistance transparente avec la norme JDO
Notes bibliographiques
Références
903
906
918
920
929
940
948
948
17
Relationnel-Objet
17.1 Type défini par l'utilisateur (UDT)
17.2 Extensions au langage de manipulation de données SQL
17.3 Accès aux extensions objets en Java
Notes bibliographiques
Références
949
950
960
965
975
975
18
Bases de données parallèles et réparties
18.1 Base de données répartie
18.2 Base de données parallèle
Notes bibliographiques
Références
976
977
990
999
999
19
Entrepôts de données et analyse de données
19.1 Schéma en étoile pour le OLAP
19.2 Regroupements multidimensionnels (CUBE et ROLLUP SQL:1999)
19.3 Statistiques d'ordonnancement
19.4 Regroupements par fenêtrage
19.5 Implémentation OLAP
19.6 Fouille de données
19.7 Règles d'association
19.8 Algorithmes de regroupement
19.9 Classification
Notes bibliographiques
Références
1000
1003
1006
1012
1014
1018
1020
1021
1058
1064
1072
1075
20
Données semi-structurées et XML
20.1 Introduction à XML
20.2 Espace de nom XML (XML namespace)
20.3 Schéma XML
20.4 Langage de requête XPath
1079
1081
1088
1090
1098
Table des matières
20.5 XPointer
20.6 Contraintes de clé
20.7 Langage de requête XML Query (XQuery)
20.8 Traitement d'un document XML avec JAXP
20.9 Système de Gestion de XML
20.10 Oracle et XML
Exercices
Notes bibliographiques
Références
xv
1101
1101
1104
1105
1108
1109
1114
1115
1115
21
Repérage de l’information
21.1 Mesures d'évaluation (rappel et précision)
21.2 Indexation
21.3 Indexation automatique de documents textuels
21.4 Listes inversées
21.5 Recherche plein texte
21.6 Modèle booléen
21.7 Modèle vectoriel
21.8 Intégration du degré de pertinence au Booléen
21.9 Intégration d'un mécanisme d'apprentissage par rétroaction (feedback)
21.10 Méthodes avancées
21.11 Intégration à un SGBD : le cas d'Oracle
Notes bibliographiques
Références
1116
1119
1121
1123
1124
1124
1124
1126
1127
1128
1129
1132
1136
1136
22
Logique et bases de données
22.1 Calculs des prédicats du premier ordre
22.2 Calculs des prédicats en bases de données
22.3 Bases de données déductives : Datalog et sémantique du point fixe
Notes bibliographiques
Références
1138
1139
1140
1148
1154
1154
Annexe Utilisation du logiciel Access de Microsoft
A.1
Création d'un schéma de base de données
A.2
Manipulation de données sous Access
A.3
Formulation de requêtes à la manière de QBE
A.4
Création d'un formulaire
Références
1155
1156
1167
1168
1176
1186
Index
1187
1
Introduction aux systèmes de
gestion de bases de données
L'art de douter est le meilleur secret pour apprendre.
Marcel Prévost
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10
1.11
Donnée et type de données
Donnée et information
Donnée simple et complexe
Différentes facettes du terme base de données
Système de gestion de bases de données (SGBD)
Principales architectures de bases de données
Des systèmes de gestion de fichiers aux SGBD
2
2
3
4
4
9
14
Redondance et incohérence des données
Mécanismes d'organisation de données limités des SGF
Intégrité sémantique
Contrôle de concurrence
Fiabilité
Sécurité
Gestion des transactions
Indépendance des données
15
16
16
17
18
18
18
19
Perspective historique
Exemple introductif d'utilisation d'un SGBD
20
22
Création du schéma avec l'outil SQL*plus d'Oracle
Manipulation de données avec l'outil SQL*plus
INSERT SQL
Transaction (COMMIT SQL)
Respect des contraintes d'intégrité
SELECT SQL
Exécution d'un SELECT dans une application client-serveur Java
SELECT sur plusieurs tables
UPDATE SQL
DELETE SQL
Organisation physique des données
Dictionnaire de données
24
25
26
26
29
29
30
32
33
34
34
35
Conception du schéma d'une base de données
Architecture à trois niveaux des schémas
Exercices
Notes bibliographiques
Références
36
38
40
40
41
2
Systèmes de gestion de bases de données par l'exemple
Les bases de données (BD) jouent un rôle fondamental dans la plupart des applications de
l'informatique. Elles sont utilisées dans une grande variété de domaines tels que la gestion des
organisations, l'ingénierie, la médecine, le contrôle de processus, etc. Le terme base de données prend
des significations différentes selon les contextes et l'évolution du domaine de l'informatique. Cette
instabilité au niveau de la terminologie est un phénomène inévitable des disciplines jeunes. Les
prochaines sections tentent de clarifier les principaux usages de ce terme en faisant ressortir les
facettes plus particulièrement traitées dans cet ouvrage. En même temps, plusieurs concepts de base
sont introduits. Comme dans toute introduction, plusieurs concepts sont présentés de manière
sommaire et seront étudiés de manière plus élaborée dans les chapitres subséquents.
1.1
DONNÉE ET TYPE DE DONNÉES
Avant d'aborder les bases de données, il est utile d'éclaircir la notion de donnée telle qu'utilisée dans
le contexte de cet ouvrage.
Donnée (data)
Une donnée au sens informatique est une représentation d'un fait à l'aide d'un code binaire stocké dans la mémoire de
l'ordinateur.
Le mécanisme de codage doit être connu par le programme qui traite la donnée.
Type de données (data type )
Le type de données détermine la nature du codage utilisé pour représenter une donnée et les opérations applicables à la
donnée.
Exemple Une donnée de type entier est normalement représentée par un entier codé en binaire d'une longueur prédéterminée, par
exemple, 32 bits. Un bit est réservé pour le signe dans le cas d'un entier signé. Une donnée de type réel utilise un codage plus complexe
composé de la mantisse, de l'exposant et d'un bit de signe. Une donnée de type caractère est souvent représentée par le code ASCII ou
Unicode du caractère. Une chaîne de caractères peut être représentée par un tableau de caractères.
Pour chaque type de données, il y a un ensemble d'opérations applicables aux données de ce type.
Exemple Il est possible d'effectuer des opérations arithmétiques sur les données de type entier. Normalement, il y a aussi des opérations
permettant de lire ou d'afficher un entier sous forme d'une chaîne de caractères.
1.2
DONNÉE ET INFORMATION
Il peut être important de distinguer entre une donnée et une information. Une donnée ne prend un
sens que lorsqu'elle est interprétée. Pour un programme, cette interprétation est de nature plutôt
rudimentaire et se borne à la connaissance des opérations sur le type de la donnée. Par exemple,
dans une base de données, la note d'un étudiant pourrait être représentée par une donnée de type
réel. Le programme ne comprend pas qu'il s'agit d'une note. Sa compréhension se limite à pouvoir
effectuer certaines opérations sur le nombre réel telles que le calcul de la moyenne d'un ensemble de
notes. Une interprétation plus raffinée sera effectuée habituellement par un humain. Le contexte
permet à l'humain d'interpréter la donnée. Une donnée devient une information lorsqu'elle enrichit
les connaissances de cet humain. Par exemple, le contexte de la donnée permettra à l'humain de
savoir que la donnée de type réel représente sa note. Lorsque le contexte est connu, l'humain peut
alors interpréter la donnée et en tirer une information au sens où ses connaissances seront enrichies
suite à la réception de la donnée. En consultant sa note, l'étudiant devient plus informé. Pour lui, la
donnée devient une information.
1 Introduction aux systèmes de gestion de bases de données
3
Shannon et Weaver (1959) ont proposé une théorie formelle de l'information dans le but de mesurer
la quantité d'information pouvant être communiquée dans un canal de communication. Selon cette
théorie, la quantité d'information d'un message d'une source à un destinataire se mesure comme une
diminution de l'incertitude au niveau du destinataire du message. Cette vision des choses fait
ressortir un point crucial de la notion d'information. Le fait qu'un message (ou donnée) soit perçu
comme une information est relatif au destinataire du message. La donnée informe si elle change
quelque chose au niveau de l'état du destinataire. L'information est le résultat de ce changement au
niveau de l'état du destinataire.
Comme le niveau d'interprétation d'une donnée par un programme est très rudimentaire, le terme
donnée sera habituellement préféré au terme information dans le contexte informatique. Cependant,
les deux termes sont souvent utilisés comme synonymes lorsque de telles nuances sémantiques
deviennent une préoccupation secondaire.
1.3
DONNÉE SIMPLE ET COMPLEXE
Donnée simple ou complexe
Une donnée de type simple, ou donnée simple (entier, réel, caractère), est indécomposable du point de vue du système qui la
manipule alors qu'une donnée de type complexe, ou donnée complexe, est composée de données simples ou complexes.
Exemple Une note représentée par un entier sera vue comme une donnée de type simple et l'ensemble des données relatives à un
étudiant, incluant son code permanent, son prénom, son nom et la liste de ses notes peut être vue comme une donnée de type
complexe.
Type de données complexe
Un type de données complexe est défini en composant des types simples ou complexes à l'aide de constructeurs de types
(enregistrement, ensemble, tableau, etc.).
La distinction entre ce qui est simple et ce qui est complexe est relative au contexte. Il n'y a donc pas
de notion absolue de simple et complexe.
Exemple Une chaîne de caractères pourra être considérée comme un type simple ou complexe selon le contexte.
Dans les premières applications des bases de données, les types simples étaient limités à des entiers,
des réels et des chaînes de caractères d'une taille limitée. L'évolution technologique permet de
considérer aujourd'hui le traitement de données beaucoup plus élaborées et volumineuses telles que
les données multimédias.
Donnée multimédia (multimedia data)
Une donnée qui représente un texte, une image, un son ou une séquence vidéo est appelée donnée multimédia.
Une donnée de type image peut avoir une taille de 1 M (mégaoctet), par exemple. Néanmoins, du
point de vue de la base de données, cette donnée peut être considérée comme une donnée de type
simple si le système qui manipule cette donnée la voit toujours comme un élément atomique non
décomposable.
Du point de vue des bases de données, l'important est de retenir qu'il y a des types de données
simples supportés par le système et qu'il est possible de construire des types plus complexes, à partir
des types simples, à l'aide de constructeurs de types. Ce qui est simple ou complexe peut varier d'un
système à l'autre.
4
Systèmes de gestion de bases de données par l'exemple
1.4
DIFFÉRENTES FACETTES DU TERME BASE DE DONNÉES
Le terme base de données est devenu très commun. Plusieurs sens parfois contradictoires sont
attribués à ce terme dans le langage courant et même dans le jargon de l'informatique.
Base de données (BD) (database )
Au sens large, une base de données est n’importe quelle collection de données.
À une extrémité du spectre, par exemple, certains vont utiliser le terme base de données pour
désigner un fichier de texte contenant une liste de noms et de numéros de téléphone dans un format
plus ou moins arbitraire. C’est une base de données au sens minimaliste du terme. Le mode
d’utilisation de cette base de données est très primitif et passe par un logiciel de traitement de texte
qui peut être utilisé pour consulter le contenu du fichier. La structure des données est, dans ce cas,
inconnue du logiciel et l’interprétation est totalement de la responsabilité de l’utilisateur humain. Le
logiciel ne sait pas qu’il y a, dans la séquence de caractères du texte, des sous-séquences qui
représentent des noms et des numéros de téléphone. Pour lui, il s’agit d’une séquence ennuyante de
caractères quelconques.
Un ensemble de fichiers de textes peut aussi être qualifié de base de données. On retrouve cette
interprétation dans les applications de gestion documentaire, par exemple. Un ensemble de fichiers
d’enregistrements supportant une application est aussi souvent appelé une base de données.
Certains logiciels désignent par base de données un seul fichier d'enregistrements et, en
conséquence, il faut définir plusieurs bases de données pour supporter une application. Pour
d'autres logiciels, une base de données peut en fait contenir plusieurs sous-bases de données
indépendantes les unes des autres. Quelle confusion ! À l’extrême limite, la Toile (World Wide Web WWW) peut aussi être vue comme une base de données lourde, de nature hétérogène et répartie.
Un aspect qui ajoute à la confusion au niveau de la terminologie est la nuance entre une base de
données et une collection de bases de données. Par exemple, dans une organisation, on pourrait
parler de plusieurs bases de données, chacune étant consacrée à une fonction spécifique. Ainsi, il
pourrait y avoir une base de données pour supporter les fonctions d’inventaire et de ventes, une autre
pour la comptabilité et une autre pour les ressources humaines. Ce phénomène fréquent de
multiplication de bases de données est dû au fait que différentes applications sont développées de
façon indépendantes parfois sur des plates-formes technologiques différentes. Cependant, d’un point
de vue plus abstrait, le tout peut être considéré comme une seule base de données logique qui est
implantée par un ensemble de bases de données physiques. Selon le contexte du discours, ces deux
interprétations pourront être utilisées.
Dans la prochaine section, l'interprétation du terme base de données favorisée dans cet ouvrage sera
précisée.
1.5
SYSTÈME DE GESTION DE BASES DE DONNÉES (SGBD)
Base de données (BD) (database )
Dans un sens plus strict, une base de données est un ensemble de données, possédant les caractéristiques suivantes :
1. Elles sont fortement structurées.
2. Elles sont persistantes.
3. Leur structure est définie dans un schéma.
4. Elles sont gérées par un logiciel appelé système de gestion de bases de données qui en gère aussi le schéma.
1 Introduction aux systèmes de gestion de bases de données
C’est cette interprétation du terme base de données qui est le sujet principal de cet ouvrage.
Système de gestion de bases de données (SGBD) (database management system - DBMS)
Un système de gestion de bases de données est un logiciel spécialisé pour la gestion de bases de données.
Le premier point (1) implique que la structure des données est clairement identifiée et très élaborée.
Programme source
avec LMD enchâssé
Programmeur
Programme source
incorporant des appels à
une interface
programmatique
pré-compilateur
Utilisateur expert
Utilisateur
Administrateur de base de données
(ABD)
Compilateur
Utilitaire d'édition et
d'interprétation de
commandes du LMD
Utilitaire d'édition
du schéma
Interprète du LDD
Programme
d'application
Utilitaire
convivial de
manipulation de
données
Evaluateur de requête (LMD)
Système de gestion de base de
données (SGBD)
Dictionnaire de données
(contient le schéma ou
méta-données)
Base de données
(contient les données)
Mémoire secondaire permanente
Figure 1 Composantes principales de l'environnement d'un SGBD du point de vue de l'utilisateur
5
6
Systèmes de gestion de bases de données par l'exemple
Le deuxième point (2), concernant la persistance, signifie que les données doivent survivre aux
programmes qui les manipulent. Les programmes ont une durée de vie limitée. Lorsqu'un programme
d'application est interrompu, les données contenues en mémoire centrale sont perdues.
Mémoire centrale (main memory, primary storage), principale, vive, primaire ou volatile
La mémoire centrale est directement accessible par le processeur central (ou unité centrale de traitement). Elle contient les
instructions et les données d'un programme en exécution. Cette mémoire est aussi appelée mémoire principale, vive,
primaire ou volatile. Elle est caractérisée par sa rapidité et par sa non-permanence.
Pour que les données puissent survivre aux programmes qui les manipulent, elles doivent être
conservées en mémoire secondaire.
Mémoire secondaire (secondary storage), permanente, externe, stable, non volatile ou persistante
La mémoire secondaire est accessible indirectement via des opérations d'entrée/sortie. Cette mémoire est aussi appelée
mémoire permanente, externe, stable, non volatile ou persistante. Elle est caractérisée par sa lenteur, relativement à la mémoire
vive, et par son aspect permanent.
Le médium le plus fréquemment utilisé comme mémoire secondaire est le disque magnétique. Un
SGBD comprend des mécanismes sophistiqués pour assurer la persistance des données malgré les
interruptions des programmes d'application. Non seulement faut-il pouvoir assurer la persistance des
données malgré la fin normale d'un programme d'application, mais encore faut-il également pouvoir
réagir à certains événements imprévus qui peuvent survenir (pannes matérielles, bogues, etc.). Cela
implique, qu’ultimement, les données sont stockées en mémoire secondaire et qu'en plus, diverses
formes de redondance de données sont exploitées pour améliorer la fiabilité de la BD. Souvent, les
données redondantes sont conservées dans des mémoires plus lentes et moins coûteuses que le
disque, comme la bande magnétique ou le disque optique parfois appelés mémoires tertiaires. Le
SGBD contient aussi des mécanismes sophistiqués pour gérer d’autres aspects de l’intégrité des
données tels que la sécurité, l’intégrité sémantique et l’accès concurrent.
Troisièmement (3), la structure des données est définie formellement en utilisant un langage de
définition des données (LDD).
Langage de définition des données (LDD ) (data definition language – DDL )
Le langage de définition des données est un langage spécialisé qui permet de définir les types des données qui sont
emmagasinées dans la base de données.
Schéma de la base de données (database schema )
La structure des données définie à l'aide du langage de définition des données est appelée le schéma de la base de données.
Une caractéristique importante d'un SGBD est la possibilité de définir des types complexes à partir de
types simples afin de former des structures de données très riches et interreliées. Les SGBD actuels
tendent à incorporer de plus en plus de fonctionnalités pour le traitement de types de données plus
complexes en incorporant des types standards pour la représentation de données multimédias et en
permettant de créer de nouveaux types de données non prédéfinis selon les besoins. En particulier,
les SGBD objet et relationnel-objet permettent d'étendre les types du SGBD par la définition de
nouvelles classes.
Téléchargement