SYSTEMES DE GESTION DES BASES DE DONNEES HENRY F.KORTH / ABRAHAM SILBERSCHATZ RESUME Les systèmes informatiques actuels comportent, pour la plupart des bases de données dont l étude constitue désormais un chapitre bien à part de la science des logiciels. Cet ouvrage à pour but d initier le lecteur débutant ou l'universitaire à l'élaboration des systèmes de base de données. Il vise, en définitive, à résoudre les problèmes rencontrés lors de la création et de l utilisation des systèmes de bases de données, indépendamment du logiciel employé et du matériel sur lequel il est Implanté. 1. Introduction TABLE DES MATIERES 1.1. Objectif des systèmes de bases de données 1 1.2. Degré d'abstraction des données 4 1.3. Structuration des données 6 1.3.1. Structures logiques objets 6 1.3.2. Structures logiques orientées enregistrements 8 1.3.3. Structures physiques 10 1.4. Instanciation et schéma 10 1.5. Autonomie des données 11 1.6. Langage de définition des données 12 1.7. Langages de manipulation de données 12 1.8. Le gestionnaire de base de données 13 1.9. Administrateur de la base de données 15 1.10. Utilisateurs de la base de données 16 1.11. Structure globale d'un système 17 1.12. Résumé 18 Exercices 20 Notes bibliographiques 21 2. Modèle entités-relations 2.1. Entités et classes d'entités 23 2.2. Relations et classes de relations 25 2.3. Contraintes de correspondance 27 2.4. Identifieur (ou clé) primaire 30 2.5. Diagramme entités-relations 32 2.6. Réduction d'un diagramme E-R à un ensemble de tableaux 36 2.6.1. Représentation des classes d'entités fortes. 36 2.6.2. Représentation des classes d'entités faibles 38 2.6.3. Représentation des classes de relations 39 2.7. Extension et restriction 40 2.8. Agrégation 43 2.9. Résumé 45 Exercices 46 Notes bibliographiques 47 3. Modèle relationnel
3. Modèle relationnel 3.1. Structure des bases de données relationnelles 49 3.2. Langage formel de consultation 54 3.2.1. Algèbre relationnelle 54 3.2.2. Calcul relationnel 67 3.3. Langages de consultation commerciaux 74 3.3.1. SQL 74 3.3.2. Quel 84 3.3.3. Query-by-example 90 3.4. Modification de la base de données. 95 3.4.1. Effacement 95 3.4.2. Insertion 96 3.4.3. Mise à jour 97 3.5. Représentations externes 98 3.6. Résumé 103 Exercices 104 Notes bibliographiques 107 4. Modèle réseau 4.1. Concepts de base 109 4.2. Diagramme de données structurées 110 4.2.1. Relations binaires 110 4.2.2. Relations générales 114 4.3. Le modèle CODASYL DBTG 117 4.3.1. Restriction concernant les liens 117 4.3.2. Ensembles DBTG 119 4.3.3. Groupes répétitifs 122 4.4. Extraction des données DBTG 124 4.4.1. Zone de travail (area) 124 4.4.2. Instructions find et get 126 4.4.3. Accès individuel aux enregistrements 128 4.4.4. Accès aux enregistrements d'un ensemble 129 4.4.5. Prédicats 131 4.5. Mise à jour DBTG 132 4.5.1. Création de nouveaux enregistrements 132 4.5.2. Modification d'un enregistrement 132 4.5.3. Suppression d'un enregistrement 133 4.6. Traitement des ensembles DBTG 134 4.6.1. L'instruction connect 134 4.6.2. L'instruction disconnect 135 4.6.3. L'instruction reconnect 136 4.6.4. Insertion et rétention dans un ensemble 136 4.6.5. Effacement 138 4.6.6. Mise en ordre d'un ensemble 138 4.7. Résumé 140 Exercices 141 Notes bibliographiques 144 5. Modèle hiérarchique 5.1. Concepts de base 147 5.2. Structure d'arbre 148 5.2.1. Relation unique 149 5.2.2. Plusieurs relations 157 5.3. Extraction des données 160 5.3.1. Zone programme utilisateur 162 5.3.2. Instruction get 163 5.3.3. Accès au sein d'un arbre 164 5.4. Mise à jour 166 5.4.1. Création de nouveaux enregistrements 166 5.4.2. Modification d'un enregistrement 168 5.4.3. Suppression d'un enregistrement 168 5.5. Enregistrements virtuels 169 5.6. Résumé 170 Exercices 172 Notes bibliographiques 175 6. Elaboration d'une base de données relationnelle 6.1. Difficultés liées au caractère «relationnel» 177 6.1.1. Répétition des informations 178 6.1.2. Représentation des informations 180 6.1.3. Perte d'informations 181 6.2. Normalisation sur dépendance fonctionnelle 185 6.2.1. Dépendance fonctionnelle 185
6.2.1. Dépendance fonctionnelle 185 6.2.2. Théorie des dépendances fonctionnelles 188 6.2.3. Propriétés souhaitables d'une décomposition 191 6.2.4. Forme normale de Boyce-Codd 195 6.2.5. Troisième forme normale (3NF) 200 6.2.6. Comparaison entre BCNF et 3NF 202 6.3. Normalisation en multidépendances 203 6.3.1. Multidépendances (ou dépendances multivaluées). 203 6.3.2. Théorie des multidépendances 206 6.3.3. Quatrième forme normale 207 6.4. Normalisation par dépendances jonctionnelles 212 6.4.1. Dépendances jonctionnelles 212 6.4.2. Forme normale à projections jointives 216 6.5. Forme normale à domaines-clés 216 6.6. Valeurs atomiques 218 6.7. Structures de rechange pour bases de données. 221 6.8. Résumé 224 Exercices 225 Notes bibliographiques 231 7. Structure des fichiers et du système 7.1. Structure d'ensemble du système 233 7.2. Support physique des données. 236 7.3. Organisation des fichiers 239 7.3.1. Enregistrements de longueur fixe 240 7.3.2. Enregistrements de longueur variable 243 7.4. Gestion de la mémoire tampon disque 250 7.5. Répartition des relations en fichiers. 254 7.6. Répartition de réseaux en fichiers 258 7.7. Répartition sur fichiers d'une base hiérarchique 264 7.8. Résumé 266 Exercices 267 Notes bibliographiques 269 8. Indexage et hachage 8.1. Notions de base 271 8.2. Fichier séquentiel indexé. 272 8.2.1. Fichier séquentiel.. 272 8.2.2. Fichier index. 274 8.2.3. Index secondaires 279 8.3. Fichier indexé par arbre B + 282 8.4. Fichier indexé par arbre B 289 8.5. Fonction de hachage statique 290 8.6. Fonction de hachage dynamique 294 8.7. Comparaison de l'indexage et du hachage 299 8.8. Accès multiclés 301 8.9. Résumé. 305 Exercices 306 Notes bibliographiques 308 9. Processus d'interrogation 9.1. Interprétation des requêtes 309 9.2. Expressions équivalentes 310 9.2.1. Opération de sélection 311 9.2.2. Jonction naturelle 313 9.2.3. Opération de projection 314 9.2.4. Autres opérations 315 9.3. Estimation du coût de traitement d'une requête 316 9.4. Estimation des coûts d'accès disque au moyen d'index 318 9.5. Stratégie de jonction 320 9.5.1. Itération simple 320 9.5.2. Itération orientée-bloc 322 9.5.3. Jonction-fusion 322 9.5.4. Utilisation d'un index 323 9.5.5. Jonction triple 323 9.6. Structure de l'optimiseur de requêtes 326 9.7. Résumé 326 Exercices 327 Notes bibliographiques 329 10. Récupération en cas d'avarie 10.1. Classification des avaries 331
10.1. Classification des avaries 331 10.1.1. Types de supports 331 10.1.2. Types d'avaries 332 10.1.3. Structure et opérations de stockage 333 10.1.4. Application bancaire 334 10.2. Transactions 337 10.3. Journal incrémental à mise à jour différée 340 10.4. Journal incrémentai à mise à jour immédiate 344 10.5. Points de contrôle 347 10.6. Gestionnaire de mémoire tampon 348 10.7. Pages d'ombre 349 10.8. Avarie avec perte de mémoire non volatile 354 10.9. Réalisation d'une mémoire sure 354 10.10. Résumé 355 Exercices 357 Notes bibliographiques 358 11. Gestion des traitements concurrents 11.1. Sérialisation 361 11.2. Test de sérialisabilité 366 11.2.1. Lecture avant écriture 367 11.2.2. Ecritures arbitraires 369 11.3. Verrouillage 376 11.3.1. Protocole de verrouillage deux-phases 380 11.3.2. Protocoles orientes-graphe 382 11.3.3. Récupération 384 11.4. Estampille temporelle 386 11.5. Techniques de certification 389 11.6. Granularité multiple 390 11.7. Schémas multiversion 394 11.8. Traitement des interblocages 396 11.8.1. Prévention des interblocages 396 11.8.2. Détection des interblocages et récupération 398 11.9. Résumé 401 Exercices 403 Notes bibliographiques 407 12. Les bases de données reparties 12.1. Structure des bases de données reparties 409 12.2. Compromis de répartition d'une base 412 12.2.1. Avantages de la répartition des données 412 12.2.2. Inconvénients de la répartition des données 413 12.3. Architecture des bases reparties 413 12.3.1. Réplications des données 414 12.3.2. Fragmentation des données 415 12.3.3. Réplication et fragmentation des données 419 12.4. Transparence et autonomie 419 12.4.1. Désignation des articles et autonomie locale 420 12.4.2. Transparence des répliques de fragments 421 12.4.3. Transparence de localisation 421 12.4.4. Schéma complet de désignation d'articles 422 12.4.5. Transparence et mise à jour des données répliquées 422 12.5. Traitement des requêtes sur base repartie 423 12.5.1. Réplication et fragmentation 424 12.5.2. Traitement par jonction naturelle 424 12.5.3. Stratégie de jonction exploitant le parallélisme 425 12.5.4. Stratégie de semi-jonction 426 12.6. Récupération d'un système reparti 427 12.6.1. Structure du système 427 12.6.2. Résistance aux pannes 429 12.6.3. Protocole de validation 431 12.7. Traitement des transactions simultanées 433 12.7.1. Protocoles de verrouillage 434 12.7.2. Estampillage temporel 437 12.8. Traitement des verrous mortels 439 12.8.1. Approche de type centralise 440 12.8.2. Répartition totale 442 12.9. Choix d'un coordinateur 445 12.9.1. Coordinateur de réserve 446 12.9.2. Algorithmes d'élection 447 12.10 Résumé 448 Exercices 449 Notes bibliographiques 453 13. Sécurité et intégrité
13. Sécurité et intégrité 13.1. Violation de la sécurité et de l'intégrité 455 13.2. Autorisation et vues 457 13.3. Contraintes d'intégrité 461 13.4. Cryptage des données 464 13.5. Extraction d'informations statistiques 466 13.6. Résumé. 467 Exercices 468 Notes bibliographiques 470 14. Applications nouvelles des bases de données 14.1. Introduction 471 14.2. Ingénierie assistée par ordinateur 472 14.2.1. Implantation en mémoire des objets conçus par ordinateur 473 14.2.2. Versions d'un modèle 476 14.2.3. Transactions sur les bases de données de conception 477 14.3. Bases de connaissances 480 14.3.1. Connaissance 480 14.3.2. Systèmes experts 481 14.3.3. Mise en œuvre d'une base de connaissances 483 14.4. Résumé. 485 Exercices 485 Notes bibliographiques 486 15. Etude de cas 15.1. Systèmes relationnels 489 15.1.1. System R 489 15.1.2. SQ L/Data System 495 15.1.3. Database 2 496 15.1.4. Oracle 497 15.1.5. Ingres 498 15.2. Systèmes réseau 501 15.2.1. Total 501 15.2.2. IDMS 501 15.3. Systèmes hiérarchiques 502 15.3.1. IMS 502 15.3.2. System 2000 504 15.4. Bases pour micro-ordinateurs 505 15.4.1. d Base III 506 15.4.2. Feuilles de calcul et tableurs 508 Notes bibliographiques 511 Bibliographie 513 Index 543 TOP