Table des matières
Avant-propos v
Table des matières xi
1 Introduction aux systèmes de gestion de bases de données 1
1.1 Donnée et type de données 2
1.2 Donnée et information 2
1.3 Donnée simple et complexe 3
1.4 Différentes facettes du terme base de données 4
1.5 Système de gestion de bases de données 4
1.6 Principales architectures de bases de données 9
1.7 Des systèmes de gestion de fichiers aux SGBD 14
1.8 Perspective historique 20
1.9 Exemple introductif d'utilisation d'un SGBD 22
1.10 Conception du schéma d'une base de données 36
1.11 Architecture à trois niveaux des schémas 38
Exercices 40
Notes bibliographiques 40
Références 41
2 Processus de conception de bases de données 43
2.1 Planification 46
2.2 Analyse : modèle conceptuel de données 49
2.3 Diagrammes de classes UML 50
2.4 Modèle entité-association : ERD de Oracle Designer 80
Exercices 83
Références 84
3 Introduction au modèle relationnel 85
3.1 Concepts de base 86
3.2 Contraintes d'intégrité fondamentales du modèle relationnel 90
3.3 Conception logique : traduction du modèle conceptuel de données en schéma conceptuel relationnel 94
3.4 Algèbre relationnelle 122
Exercices 138
Notes bibliographiques 140
Références 140
4 Le langage SQL 141
4.1 Spécification du schéma relationnel avec SQL (LDD SQL) 144
4.2 Requêtes SQL (SELECT) 156
4.3 Opérations de mise à jour en SQL 193
4.4 Niveau externe du schéma en SQL 196
4.5 Schéma interne 215
4.6 Sommaire des SQL2, SQL:1999 et SQL:2003 215
Exercices 217
Projets à réaliser 218
Notes bibliographiques 218
Références 219
xii Systèmes de gestion de bases de données par l'exemple
5 Interface entre SQL et un programme 220
5.1 SQL enchâssé 223
5.2 Introduction à l'extension procédurale PL/SQL d'Oracle 229
5.3 JDBC 243
5.4 SQLJ 279
Exercices 294
Projets à réaliser 296
Notes bibliographiques 296
Références 296
6 Gestion des contraintes d'intégrité en SQL 297
6.1 Contrainte de domaine (NOT NULL, CHECK, CREATE DOMAIN) 299
6.2 Contrainte de clé primaire (PRIMARY KEY) 301
6.3 Autres clés uniques (UNIQUE) 301
6.4 Contrainte d'intégrité référentielle (FOREIGN KEY REFERENCES) 302
6.5 Autres cas contraintes (CHECK complexe et ASSERTION) 307
6.6 Implémentation de la vérification des contraintes d'intégrité 309
6.7 Cohérence des contraintes d'intégrité 310
6.8 Nom de contrainte (clause CONSTRAINT) 310
6.9 Contraintes déférées (SET CONSTRAINTS DEFERRED) 310
6.10 Gâchettes (TRIGGER) 312
Exercices 324
Projets à réaliser 324
Notes bibliographiques 325
Références 325
7 Gestion des données en mémoire secondaire 326
7.1 Principales caractéristiques des disques 328
7.2 Fichiers et répertoires 335
7.3 Organisation par bloc 338
7.4 Concepts de base du traitement de fichiers en Java 353
7.5 Organisation par enregistrement 373
7.6 Allocation sérielle d'espace pour les enregistrements de taille fixe et l'adressage relatif 383
7.7 Allocation d'espace pour les enregistrements de taille variable 386
7.8 Allocation sérielle par grappe homogène 394
7.9 Fichiers séquentiels 398
7.10 Gestion d'enregistrements en Java 400
Exercices 415
Projets à réaliser 416
Notes bibliographiques 416
Références 416
8 Organisations unidimensionnelles : indexage et hachage 418
8.1 Organisations unidimensionnelles : indexage et hachage 420
8.2 Arbre digital 448
8.3 Hachage 449
8.4 Tableau comparatif des organisations 464
Exercices 466
Projets à réaliser 468
Notes bibliographiques 469
Références 469
Table des matières xiii
9 Méthodes multidimensionnelles et représentation d'associations 471
9.1 Méthodes multidimensionnelles 472
9.2 Représentation des associations 489
Notes bibliographiques 497
Références 498
10 Évaluation des requêtes relationnelles 499
10.1 Concepts de base 501
10.2 Décomposition 506
10.3 Estimation du coût des opérations physiques 507
10.4 Optimisation 550
Exercices 568
Notes bibliographiques 572
Références 572
11 Théorie de la normalisation 573
11.1 Décomposition sans perte 576
11.2 Dépendance fonctionnelle 577
11.3 Normalisation 586
Exercices 605
Notes bibliographiques 609
Références 609
12 Cas d'utilisation détaillés et processus d'élaboration du modèle conceptuel de données 610
12.1 Cas d'utilisation détaillés 611
12.2 Concepts avancés de diagrammes de classes UML 622
12.3 Processus d'élaboration du modèle conceptuel de données 633
12.4 Estimation des volumes de données 661
Exercices 662
Références 664
13 Conception dans un contexte relationnel 665
13.1 Mise en œuvre des contraintes d'intégrité en SQL 668
13.2 Conception du schéma relationnel au niveau externe 695
13.3 Niveau interne de schéma relationnel : conception physique 697
13.4 Paramètres du mécanisme d'allocation d'espace : cas de Oracle 723
13.5 Mise au point de la configuration du SGBD : cas de Oracle 729
13.6 Choix de l'architecture et bancs d'essais TPC 731
Exercices 732
Projets à réaliser 734
Notes bibliographiques 734
Références 734
14 Intégrité et gestion des transactions 735
14.1 Concept de transaction 737
14.2 Propriétés d'une transaction 739
14.3 État d'une transaction 742
14.4 Architecture générale pour la gestion des transactions 744
14.5 Contrôle de concurrence 745
14.6 Fiabilité et récupération 783
14.7 Modèles avancés de transaction 798
xiv Systèmes de gestion de bases de données par l'exemple
Exercices 802
Notes bibliographiques 810
Références 810
15 Développement d'application de bases de données en Java 811
15.1 Application Java/JDBC client-serveur 812
15.2 Développement d'applications Web par servlet Java 849
15.3 Architecture pour la persistance transparente 869
15.4 Norme EJB de J2EE 870
Projets à réaliser 900
Notes bibliographiques 902
Références 902
16 Bases de données objet et persistance transparente 903
16.1 Le langage de définition de données ODL 906
16.2 Mécanismes de gestion des objets persistants 918
16.3 Le langage de requête OQL 920
16.4 Le langage de manipulation de données OML 929
16.5 Persistance transparente avec la norme JDO 940
Notes bibliographiques 948
Références 948
17 Relationnel-Objet 949
17.1 Type défini par l'utilisateur (UDT) 950
17.2 Extensions au langage de manipulation de données SQL 960
17.3 Accès aux extensions objets en Java 965
Notes bibliographiques 975
Références 975
18 Bases de données parallèles et réparties 976
18.1 Base de données répartie 977
18.2 Base de données parallèle 990
Notes bibliographiques 999
Références 999
19 Entrepôts de données et analyse de données 1000
19.1 Schéma en étoile pour le OLAP 1003
19.2 Regroupements multidimensionnels (CUBE et ROLLUP SQL:1999) 1006
19.3 Statistiques d'ordonnancement 1012
19.4 Regroupements par fenêtrage 1014
19.5 Implémentation OLAP 1018
19.6 Fouille de données 1020
19.7 Règles d'association 1021
19.8 Algorithmes de regroupement 1058
19.9 Classification 1064
Notes bibliographiques 1072
Références 1075
20 Données semi-structurées et XML 1079
20.1 Introduction à XML 1081
20.2 Espace de nom XML (XML namespace) 1088
20.3 Schéma XML 1090
20.4 Langage de requête XPath 1098
Table des matières xv
20.5 XPointer 1101
20.6 Contraintes de clé 1101
20.7 Langage de requête XML Query (XQuery) 1104
20.8 Traitement d'un document XML avec JAXP 1105
20.9 Système de Gestion de XML 1108
20.10 Oracle et XML 1109
Exercices 1114
Notes bibliographiques 1115
Références 1115
21 Repérage de l’information 1116
21.1 Mesures d'évaluation (rappel et précision) 1119
21.2 Indexation 1121
21.3 Indexation automatique de documents textuels 1123
21.4 Listes inversées 1124
21.5 Recherche plein texte 1124
21.6 Modèle booléen 1124
21.7 Modèle vectoriel 1126
21.8 Intégration du degré de pertinence au Booléen 1127
21.9 Intégration d'un mécanisme d'apprentissage par rétroaction (feedback) 1128
21.10 Méthodes avancées 1129
21.11 Intégration à un SGBD : le cas d'Oracle 1132
Notes bibliographiques 1136
Références 1136
22 Logique et bases de données 1138
22.1 Calculs des prédicats du premier ordre 1139
22.2 Calculs des prédicats en bases de données 1140
22.3 Bases de données déductives : Datalog et sémantique du point fixe 1148
Notes bibliographiques 1154
Références 1154
Annexe Utilisation du logiciel Access de Microsoft 1155
A.1 Création d'un schéma de base de données 1156
A.2 Manipulation de données sous Access 1167
A.3 Formulation de requêtes à la manière de QBE 1168
A.4 Création d'un formulaire 1176
Références 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 Donnée et type de données 2
1.2 Donnée et information 2
1.3 Donnée simple et complexe 3
1.4 Différentes facettes du terme base de données 4
1.5 Système de gestion de bases de données (SGBD) 4
1.6 Principales architectures de bases de données 9
1.7 Des systèmes de gestion de fichiers aux SGBD 14
Redondance et incohérence des données 15
Mécanismes d'organisation de données limités des SGF 16
Intégrité sémantique 16
Contrôle de concurrence 17
Fiabilité 18
Sécurité 18
Gestion des transactions 18
Indépendance des données 19
1.8 Perspective historique 20
1.9 Exemple introductif d'utilisation d'un SGBD 22
Création du schéma avec l'outil SQL*plus d'Oracle 24
Manipulation de données avec l'outil SQL*plus 25
INSERT SQL 26
Transaction (COMMIT SQL) 26
Respect des contraintes d'intégrité 29
SELECT SQL 29
Exécution d'un SELECT dans une application client-serveur Java 30
SELECT sur plusieurs tables 32
UPDATE SQL 33
DELETE SQL 34
Organisation physique des données 34
Dictionnaire de données 35
1.10 Conception du schéma d'une base de données 36
1.11 Architecture à trois niveaux des schémas 38
Exercices 40
Notes bibliographiques 40
Références 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 D ONNÉ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 D ONNÉ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 D ONNÉ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 D IFFÉ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 S YSTÈ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 5 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 d'application Utilitaire d'édition et
d'interprétation de commandes du LMD
Utilitaire convivial de manipulation de
données
Evaluateur de requête (LMD) Interprète du LDD
Utilitaire d'édition du schéma
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
Administrateur de base de données (ABD)
Utilisateur expert
Utilisateur Programme source
incorporant des appels à une interface programmatique
Programmeur Programme source
avec LMD enchâssé
pré-compilateur
Compilateur
Système de gestion de base de données (SGBD)
Figure 1
Composantes principales de l'environnement d'un SGBD du point de vue de l'utilisateur
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.