Cours de bases de données – Modèles et langages
Version 2017-2019 V1.0
Philippe Rigaux
sept. 25, 2018
Table des matières
1 Introduction 3
1.1 Contenu et plan du cours . . . 3
1.2 Apprendre avec ce cours . . . 4
1.3 S1 : notions de base . . . 4
1.3.1 Données, bases de données et SGBD . . . 5
1.3.2 Modèle et couches d’abstraction . . . 8
1.3.3 Les langages . . . 9
1.3.4 Quiz . . . 11
1.4 Atelier : installation d’un SGBD . . . 11
1.4.1 MySQL . . . 11
1.4.2 Autres . . . 11
2 Le modèle relationnel 13 2.1 S1 : relations et nuplets. . . 13
2.1.1 Qu’est-ce qu’une relation ? . . . 14
2.1.2 Les nuplets . . . 15
2.1.3 Le schéma . . . 15
2.1.4 Mais que représente une relation ? . . . 17
2.1.5 Quiz . . . 17
2.2 S2 : clés, dépendances et normalisation . . . 17
2.2.1 Qualité d’un schéma relationnel . . . 17
2.2.2 Schémas normalisés. . . 19
2.2.3 La notion de dépendance fonctionnelle . . . 19
2.2.4 Clés . . . 22
2.2.5 Clé étrangères . . . 23
2.2.6 Quiz . . . 24
2.2.7 Exercices . . . 24
2.3 S3 : deux exemples de schémas normalisés . . . 24
2.3.1 La base des voyageurs . . . 25
2.3.2 La base des films . . . 27
2.3.3 Quiz . . . 28
2.4 Exercices . . . 28
i
3 SQL, langage déclaratif 29
3.1 S1 : Un peu de logique . . . 30
3.1.1 Le calcul propositionnel . . . 31
3.1.2 Prédicats . . . 32
3.1.3 Collections et quantificateurs . . . 33
3.1.4 Logique et bases de données . . . 35
3.1.5 Quiz . . . 36
3.1.6 Exercices . . . 36
3.2 S2 : SQL conjonctif . . . 37
3.2.1 Requête mono-variable . . . 37
3.2.2 Requêtes multi-variables . . . 41
3.2.3 Quiz . . . 44
3.2.4 Exercices . . . 44
3.3 S3 : Quantificateurs et négation . . . 44
3.3.1 Le quantificateurexists . . . 44
3.3.2 Quantificateurs et négation . . . 46
3.3.3 Quiz . . . 47
3.3.4 Exercices . . . 47
4 SQL, langage algébrique 49 4.1 S1 : Les opérateurs de l’algèbre . . . 49
4.1.1 La projection,π . . . 50
4.1.2 La sélection,σ . . . 51
4.1.3 Le produit cartésien,× . . . 51
4.1.4 Renommage . . . 53
4.1.5 L’union,∪. . . 55
4.1.6 La différence,−. . . 56
4.1.7 Quiz . . . 56
4.1.8 Exercices . . . 56
4.2 S2 : la jointure . . . 56
4.2.1 L’opérateur⋊⋉ . . . 57
4.2.2 Résolution des ambiguités . . . 59
4.2.3 Quiz . . . 61
4.3 S3 : Expressions algébriques . . . 61
4.3.1 Sélection généralisée . . . 61
4.3.2 Requêtes conjonctives . . . 62
4.3.3 Requêtes avec∪et− . . . 64
4.3.4 Complément d’un ensemble . . . 64
4.3.5 Quantification universelle . . . 65
4.4 Exercices . . . 65
4.4.1 Atelier : évaluation et optimisation de requêtes . . . 65
5 SQL, récapitulatif 69 5.1 S1 : le blocselect-from-where . . . 71
5.1.1 La clausefrom . . . 71
5.1.2 La clausewhere . . . 74
5.1.3 Valeurs manquantes : lenull . . . 75
5.1.4 La clauseselect . . . 77
5.1.5 Jointure interne, jointure externe . . . 79
5.1.6 Tri et élimination de doublons . . . 82
5.1.7 Quiz . . . 84
5.2 S2 : Requêtes et sous-requêtes . . . 84
5.2.1 Requêtes imbriquées . . . 84
5.2.2 Requêtes correlées . . . 86
5.2.3 Requêtes avec négation . . . 88
5.2.4 Quiz . . . 89
5.3 S3 : Agrégats . . . 89
5.3.1 La clausegroup by. . . 90
5.3.2 La clausehaving . . . 92
5.3.3 Quiz . . . 92
5.4 S4 : Mises à jour . . . 92
5.4.1 Insertion . . . 93
5.4.2 Destruction . . . 93
5.4.3 Modification . . . 93
6 Conception d’une base de données 95 6.1 S1 : La normalisation. . . 95
6.1.1 La décomposition d’un schéma . . . 96
6.1.2 Algorithme de normalisation . . . 98
6.1.3 Une approche globale . . . 98
6.1.4 Quiz . . . 100
6.2 S2 : Le modèle Entité-Association . . . 100
6.2.1 Le schéma de la baseFilms . . . 101
6.2.2 Entités, attributs et identifiants . . . 103
6.2.3 Types d’entités . . . 104
6.2.4 Associations binaires . . . 106
6.2.5 Quiz . . . 110
6.2.6 Exercices . . . 110
6.3 S3 : Concepts avancés . . . 110
6.3.1 Entités faibles . . . 110
6.3.2 Associations généralisées . . . 111
6.3.3 Spécialisation . . . 113
6.3.4 Bilan . . . 114
6.3.5 Quiz . . . 114
6.4 S4 : Du schéma E/A au schéma relationnel . . . 114
6.4.1 Application de la normalisation. . . 115
6.4.2 Illustration avec la base des films . . . 117
6.4.3 Associations avec type d’entité faible . . . 119
6.4.4 Spécialisation . . . 119
6.4.5 Quiz . . . 121
6.4.6 Exercices . . . 121
7 Schémas relationnel 123 7.1 S1 : Création d’un schéma SQL . . . 123
7.1.1 Types SQL . . . 124
7.1.2 Création des tables . . . 125
iii