iv Table des matières
2.1 Une manipulation ensembliste des données . . . . . . . . . . . . . . . . . . . . . . 18
2.2 Les opérateurs de l’algèbre relationnelle . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3 Expressions de requêtes avec l’algèbre . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.4 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3 Bien concevoir une base de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1 Les dépendances fonctionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 Décomposition en formes normales . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3 Les contraintes d’intégrité structurelles . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4 Passage d’un schéma E/A à un schéma relationnel . . . . . . . . . . . . . . . . . . 31
4 Le langage relationnel SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1 Les langages relationnels complets . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2 Le langage SQL : historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.3 Le DML : Data Manipulation Language en SQL . . . . . . . . . . . . . . . . . . . 33
4.4 Le DDL (Data Description Language) en SQL . . . . . . . . . . . . . . . . . . . . 48
4 Pratique des SGBD 53
1 Exemples de SGBD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
1.1 Perspectives historiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
1.2 ORACLE ......................................... 54
1.3 Microsoft Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2 Techniques d’optimisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3 Techniques d’accès partagés : le contrôle de concurrence . . . . . . . . . . . . . . . . . . . 54
3.1 Problèmes potentiels et notions de base . . . . . . . . . . . . . . . . . . . . . . . . 54
3.2 Techniques de contrôle de concurrence . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.3 La gestion des transactions en SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.4 Le contrôle de concurrence sous Oracle . . . . . . . . . . . . . . . . . . . . . . . . . 67
4 Techniques de récupération d’erreur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.1 Les mécanismes utilisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5 Les bancs de mesure des performances ("benchmarks") . . . . . . . . . . . . . . . . . . . . 71
6 Sécurité et autorisations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
7 L’interface C/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
7.1 Un exemple complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.2 Autres commandes SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8 Les environnements de programmation d’applications sur les bases de données . . . . . . . 79
8.1 La "programmation visuelle" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
8.2 Langages de quatrième génération . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
8.3 Les interfaces au standard SQL et la portabilité . . . . . . . . . . . . . . . . . . . . 80
8.4 Les ateliers de génie logiciel (AGL / CASE) . . . . . . . . . . . . . . . . . . . . . . 81
5 Réalisation physique des bases de données 83
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
2 Techniques de stockage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
2.1 Stockage de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
2.2 Organisation des fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
2.3 Organisation primaire des fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
2.4 L’exemple du SGBD Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3 Structures de données pour optimiser les accès . . . . . . . . . . . . . . . . . . . . . . . . 87
3.1 Indexation de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.2 Hachage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.3 L’arbre-B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.4 Autres méthodes d’indexation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3.5 Bilan............................................ 101
3.6 Comparaison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
3.7 Quelques règles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
3.8 Indexation dans Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
3.9 Index en SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
3.10 Structures de données multidimensionnelles . . . . . . . . . . . . . . . . . . . . . . 105
4 Évaluation des requêtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.1 Introduction à l’optimisation des performances . . . . . . . . . . . . . . . . . . . . 105