Cours de bases de données
Philippe Rigaux
20 février 2002
2
TABLE DES MATIRES
Table des matières
1 Introduction
2 Présentation générale
3
7
9
2.1 Données, Bases de données et SGBD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Que doit-on savoir pour utiliser un SGBD ? . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.1 nition du schéma de données . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.2 Les opérations sur les données . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.3 Optimisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.4 Concurrence daccès . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Le plan du cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
I Modèles et langages
3 Le modèle Entité/Association
15
17
3.1 Principes généraux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.1.1 Bons et mauvais schémas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.1.2 La bonne méthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2 Le modèle E/A : Présentation informelle . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3 Le modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.3.1 Entités, attributs et identiants . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.3.2 Associations binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3.3 Entités faibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3.4 Associations généralisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4 Avantage et inconvénients du modèle E/A . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4 Le modèle relationnel
35
4.1 nition dun schéma relationnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2 Passage dun schéma E/A à un schéma relationnel . . . . . . . . . . . . . . . . . . . . . . 37
4.2.1 Règles générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.2.2 Retour sur le choix des identiants . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.2.3 Dénormalisation du modèle logique . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3 Le langage de dénition de données SQL2 . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.1 Types SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.2 Création des tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.3.3 Contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.3.4 Modication du schéma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4
5 Lalgèbre relationnelle
TABLE DES MATIRES
55
5.1 Les opérateurs de lalgèbre relationnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.1.1 La sélection, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.1.2 La projection, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.1.3 Le produit cartésien, ¢ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.1.4 Lunion, £ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.1.5 La différence, ¤ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.1.6 Jointure, ¥ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.2 Expression de requêtes avec lalgèbre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.2.1 Sélection généralisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.2.2 Requêtes conjonctives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.2.3 Requêtes avec £ et ¤ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.3 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6 Le langage SQL
67
6.1 Requêtes simples SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.1.1 Sélections simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.1.2 La clause WHERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.1.3 Valeurs nulles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.2 Requêtes sur plusieurs tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.2.1 Jointures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.2.2 Union, intersection et différence . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.3 Requêtes imbriquées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.3.1 Conditions portant sur des relations . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.3.2 Sous-requêtes correllées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.4 Agrégration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.4.1 Fonctions dagrégation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.4.2 La clause GROUP BY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.4.3 La clause HAVING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.5 Mises-à-jour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.5.1 Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.5.2 Destruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.5.3 Modication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
7 Schémas relationnels
81
7.1 Schémas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
7.1.1 nition dun schéma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
7.1.2 Utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
7.2 Contraintes et assertions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
7.3 Vues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7.3.1 Création et interrogation dune vue . . . . . . . . . . . . . . . . . . . . . . . . . 85
7.3.2 Mise à jour dune vue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
7.4 Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
7.4.1 Principes des triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
7.4.2 Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
7.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8 Programmation avec SQL
91
8.1 Interfaçage avec le langage C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
8.1.1 Un exemple complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
8.1.2 Développement en C/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
8.1.3 Autres commandes SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
8.2 Linterface Java/JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
TABLE DES MATIRES
5
8.2.1 Principes de JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
8.2.2 Le plus simple des programmes JDBC . . . . . . . . . . . . . . . . . . . . . . . . 99
8.2.3 Exemple dune applet avec JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . 100
II Aspects systèmes
9 Techniques de stockage
105
107
9.1 Stockage de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
9.1.1 Supports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
9.1.2 Fonctionnement dun disque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
9.1.3 Optimisations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
9.1.4 Technologie RAID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
9.2 Fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
9.2.1 Enregistrements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
9.2.2 Blocs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
9.2.3 Organisation dun chier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
9.3 Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
9.3.1 Fichiers et blocs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
9.3.2 Les tablespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
9.3.3 Création des tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
10 Indexation
133
10.1 Indexation de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
10.1.1 Index non-dense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
10.1.2 Index dense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
10.1.3 Index multi-niveaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
10.2 Larbre-B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
10.2.1 Présentation intuitive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
10.2.2 Recherches avec un arbre-B+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
10.3 Hachage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
10.3.1 Principes de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
10.3.2 Hachage extensible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
10.4 Les index bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
10.5 Indexation dans Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
10.5.1 Arbres B+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
10.5.2 Arbres B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
10.5.3 Indexation de documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
10.5.4 Tables de hachage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
10.5.5 Index bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
11 ةvaluation de requêtes
155
11.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
11.2 Evaluation dune requête . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
11.2.1 Evaluation de requêtes efcace . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
11.2.2 Mesure du coût dune opération . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
11.2.3 Techniques daccès et prétraitement . . . . . . . . . . . . . . . . . . . . . . . . . 158
11.2.4 Le Tri externe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
11.2.5 La Sélection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
11.2.6 Projection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
11.2.7 Jointure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
11.3 Compilation dune requête et optimisation . . . . . . . . . . . . . . . . . . . . . . . . . . 173
11.3.1 Traduction de la requête en un plan dexécution logique . . . . . . . . . . . . . . 173
11.3.2 Lois algébriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
1 / 215 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !