Adloun

Les bases de données : le modèle relationnel et les premières requêtes

Cours · informatique (tronc commun des prépas scientifiques), chapitre 15 · prépas scientifiques, tronc commun · le début du chapitre, la suite sur Adloun

Le modèle relationnel : deux tables reliées par une clé étrangère, que l'on combine par une jointure.

15.1 Introduction et motivation

Le chapitre 4 savait lire un fichier de mesures : une table, des lignes, des colonnes — et tout le travail à la charge de notre programme Python. Mais les données du monde réel ne vivent pas dans un fichier : la médiathèque municipale connaît ses livres, ses auteurs, ses usagers et les emprunts qui les relient ; l'hôpital, ses patients, ses médecins et leurs rendez-vous ; le lycée, ses élèves, ses classes et ses options. Plusieurs familles d'objets, des liens entre elles, des milliers de mises à jour par jour, et des questions qui traversent tout : « quels usagers de Lyon ont emprunté un livre de Verne en octobre ? ».

Pour cela, l'informatique a construit l'un de ses plus beaux édifices : la base de données relationnelle, où les données sont rangées en tables reliées par des clés, et qu'on interroge dans un langage déclaratif, SQL — on y écrit ce qu'on veut, pas comment le calculer : le moteur de la base se charge de l'algorithme. C'est un changement de posture complet par rapport aux deux premières années de ce livre, et une expérience à vivre : la requête qui aurait demandé trente lignes de Python s'écrit en trois lignes de SQL. Ce chapitre pose le modèle — tables, clés primaires et étrangères, entités et associations — et les requêtes sur une table ; le chapitre 16 fera parler les tables entre elles.

15.2 Le vocabulaire des bases de données

15.2.1 Tables, attributs, enregistrements

Définition 15.1Table, attribut, enregistrement, domaine, schéma

Une table (ou relation) est un ensemble de données organisé en lignes et colonnes :

  • chaque colonne est un attribut, doté d'un nom et d'un domaine — le type de ses valeurs : entier, flottant ou chaîne de caractères (nous nous en tiendrons à ces trois-là) ;
  • chaque ligne est un enregistrement : une valeur par attribut, décrivant un objet ;
  • le schéma de la table est la donnée de son nom et de la liste de ses attributs avec leurs domaines — la carte d'identité de la table, indépendante de son contenu.

On note le schéma sous la forme : livre(id_livre, titre, id_auteur, annee, pages).

Exemple 15.2La base « médiathèque », fil rouge des deux chapitres

Quatre tables. Les deux premières décrivent les objets :

auteur
id_auteurnomnaissance
1Verne1828
2Austen1775
3Tolstoï1828
4Colette1873
    
livre
id_livretitreid_auteuranneepages
1Vingt mille lieues sous les mers11870448
2De la Terre à la Lune11865320
3Orgueil et préjugés21813480
4Guerre et paix318691536
5Anna Karénine31877864
6Le Blé en herbe41923192
7Michel Strogoff11876512
8Les Vrilles de la vigne41908256

Les deux suivantes décrivent les personnes et les liens :

usager
id_usagernomville
1AliceLyon
2BrunoParis
3ChloéLyon
4DavidNantes
5EmmaParis
6FaridNantes
    
emprunt
id_usagerid_livrejour
112025-09-03
142025-09-10
232025-09-05
312025-09-12
422025-09-20
362025-10-01
352025-10-02
272025-10-05
542025-10-06
132025-10-08

Domaines : id_*, naissance, annee, pages sont des entiers ; nom, titre, ville, jour des chaînes. Noter jour : une chaîne au format AAAA-MM-JJ — choix délibéré, car l'ordre alphabétique de ces chaînes coïncide alors avec l'ordre chronologique (exercice 10) ; aucune notion de type « date » n'est au programme.

Exercices du chapitre

La suite du cours · Tous les exercices du chapitre