Terminale · Bases de données et SQL

Comprendre le modèle relationnel

Un tableau peut contenir des inscriptions, mais une base relationnelle décrit aussi ce que signifie chaque colonne et quelles données sont admissibles. Comprendre ce modèle permet d’interroger des informations cohérentes au lieu d’assembler des lignes au hasard.

SofienAvec SofienIngénieur et enseignant en informatique
Dans ce chapitre

Un cap pour ce chapitre

Ce que vous saurez faire

  • Identifier relation, attribut et domaine.
  • Lire un schéma relationnel et une occurrence de relation.
  • Distinguer organisation des données et contenu courant.
Les bases utiles pour commencer

Une relation décrit un ensemble de faits

Une relation regroupe des données ayant les mêmes attributs. Considérons Club(id_club, nom, salle). Une ligne comme (1, Robotique, B12) affirme qu’un club identifié par 1 porte ce nom et occupe cette salle. Une autre relation Membre(id_membre, prenom, niveau, id_club) décrit des personnes et leur inscription dans notre modèle simplifié.

Les termes ligne et colonne aident à visualiser une table. Le modèle relationnel apporte un vocabulaire plus précis : les attributs nomment les informations, les domaines définissent les valeurs autorisées et les tuples représentent les faits enregistrés. Les relations sont ensuite reliées par des clés étudiées dans le chapitre suivant.

Un tuple rassemble les valeurs d’un seul fait selon l’ordre et les noms d’attributs du schéma. Les valeurs Robotique et B12 ne se remplacent pas librement même si elles sont toutes deux des chaînes. Leur sens vient de l’attribut correspondant. Nommer les colonnes rend la description compréhensible et prépare des requêtes qui désignent explicitement les informations recherchées.

Donner un domaine à chaque attribut

Un domaine précise les valeurs admissibles pour un attribut. id_club peut être un entier positif, nom une chaîne non vide et niveau une valeur parmi Première et Terminale. Le type technique ne suffit pas toujours : le nombre -8 est un entier, mais peut être interdit par la règle de l’identifiant.

La cohérence dépend du domaine choisi. Écrire 2 dans une colonne prévue pour le prénom ne devient pas correct parce que le tableau accepte visuellement cette saisie. À l’inverse, une salle telle que B12 doit être représentée comme une chaîne : ce n’est pas une quantité sur laquelle une addition aurait un sens.

Le schéma reste, le contenu évolue

Le schéma décrit le nom d’une relation, ses attributs, leurs domaines et les contraintes associées. Son contenu est l’ensemble des lignes présentes à un instant donné. Ajouter un nouveau club modifie le contenu sans ajouter une nouvelle colonne. Ajouter un attribut capacité modifie le schéma et oblige à décider comment renseigner cette information.

Une base relationnelle rassemble plusieurs schémas et leurs contenus. Une relation vide possède encore un schéma : on sait quelles lignes pourraient y être insérées. L’absence de données et l’absence de définition sont donc deux situations différentes.

On peut comparer le schéma à une description des formulaires possibles et le contenu aux formulaires effectivement remplis. Cette analogie n’impose pas une interface graphique : une base peut être alimentée par un programme. Elle montre seulement qu’une modification de structure concerne tous les tuples, tandis qu’une nouvelle ligne ajoute un fait dans une structure déjà définie.

Ne pas attribuer un sens implicite à l’ordre

Dans le modèle relationnel, les faits ne sont pas définis par leur position d’affichage. Déplacer une ligne sur l’écran ne change pas l’identité du club qu’elle décrit. Une requête SQL sans tri explicite ne garantit pas un ordre particulier de restitution. Pour obtenir un ordre, on doit l’exprimer.

Le modèle ne consiste pas non plus à ranger plusieurs informations indépendantes dans une seule case contenant une liste de texte difficile à traiter. Si l’on veut suivre plusieurs inscriptions par personne, il faut réfléchir à une relation d’inscription adaptée. Le modèle de cette page suppose volontairement un club par membre afin de rendre ses premières règles lisibles.

Exemple suivi : lire une relation sans confondre les niveaux

La relation Club(id_club,nom,salle) contient (1,Robotique,B12) et (2,Astronomie,C04). Elle possède trois attributs et deux tuples. La valeur B12 occupe l’attribut salle du club identifié par 1. Ajouter (3,Photo,B12) porte le contenu à trois tuples, sans changer les trois attributs. Deux clubs peuvent partager une salle si aucune contrainte du domaine ne l’interdit.

Ajouter l’attribut capacite change au contraire la structure. Il faut préciser son domaine, par exemple les entiers de 1 à 40, puis fournir ou définir une politique pour les valeurs des tuples existants. Une capacité 12 donnée à tous les clubs est une hypothèse de l’atelier, pas une conséquence automatique du nouveau schéma. Une bonne description distingue ainsi la structure, les contraintes et les valeurs initialement choisies.

Préparer des données cohérentes avec le domaine

Un attribut salle peut contenir B12 ou C04 sans être une quantité numérique. Un identifiant peut être un entier, mais sa fonction est de désigner et non d’être additionné à un autre identifiant. Un niveau scolaire peut être limité à une liste de valeurs autorisées. Le domaine associe donc représentation technique et restrictions utiles au modèle.

Supposons qu’un membre puisse participer à plusieurs clubs. Conserver « Robotique,Photo » dans une seule chaîne rend les recherches et les références difficiles. On peut représenter les membres séparément puis enregistrer une relation d’inscription reliant un membre à un club pour chaque participation. Ce changement dépend d’une règle du besoin réel. Le modèle simplifié à un club par membre n’est pas faux dans son périmètre, mais il ne doit pas être prolongé silencieusement lorsque le besoin change.

À vous de faire varier les choses

Changez la structure ou les faits

Ajoutez un club et, séparément, une capacité. Observez ce qui change dans le nombre de lignes et d’attributs.

Lire le résultat de l’expérience initiale

2 lignes et 3 attributs.

Le club ajouté modifie le contenu. La capacité ajoute un attribut au schéma. La valeur commune est une hypothèse de démonstration.

id_clubnomsalle
1RobotiqueB12
2AstronomieC04

Deux ajouts visuellement proches peuvent modifier soit les faits, soit la définition de ce que chaque fait contient.

De la compréhension à l’autonomie

À vous de résoudre

Cherchez d’abord par vous-même. Vérifiez les résultats demandés, utilisez les indices si nécessaire, puis comparez votre méthode à la correction.

Exercice 1 · Comprendre#

Nommer les éléments du modèle

Dans Club(id_club, nom, salle), la ligne (2, Astronomie, C04) est enregistrée. Identifiez la relation, un attribut et une valeur.

Indice 1

Le nom devant les parenthèses désigne la relation.

Indice 2

Un attribut nomme une information ; une valeur la renseigne.

Comprendre la correction

Club est la relation. salle est un attribut, et C04 est la valeur de cet attribut dans la ligne donnée. Astronomie est une autre valeur, associée à nom. Confondre le nom d’une colonne avec son contenu rend les requêtes difficiles à interpréter.

Exercice 2 · Appliquer#

Schéma ou contenu ?

On ajoute le club (3, Photo, B12), puis on ajoute l’attribut capacite à Club. Classez les deux modifications.

Indice 1

Une nouvelle ligne ne change pas les informations demandées à chaque ligne.

Indice 2

Un nouvel attribut change la structure.

Comprendre la correction

L’ajout du club modifie le contenu de Club. L’ajout de capacite modifie son schéma. Il faut alors définir le domaine de capacité et la manière de renseigner les clubs déjà présents. Ces opérations n’ont donc pas les mêmes conséquences.

Exercice 3 · Corriger#

Un entier hors domaine

Le domaine de id_club est l’ensemble des entiers strictement positifs. Un élève accepte -3 parce que Python le reconnaît comme int. Corrigez son critère.

Indice 1

Le type ne décrit qu’une partie de la contrainte.

Indice 2

Strictement positif exclut zéro et les négatifs.

Comprendre la correction

Il faut vérifier que la valeur est entière et strictement supérieure à zéro. -3 respecte le type entier mais pas le domaine déclaré. Les règles métier peuvent donc ajouter des restrictions au type technique utilisé pour stocker les données.

Exercice 4 · Justifier#

Une table vide existe encore

La relation Membre ne contient encore aucun inscrit. Peut-on tout de même connaître ses attributs et préparer une insertion valide ?

Indice 1

La définition ne dépend pas de la première ligne.

Indice 2

Le schéma et les contraintes restent disponibles.

Comprendre la correction

Oui. Son schéma définit id_membre, prenom, niveau et id_club ainsi que leurs contraintes. On peut donc vérifier la forme et les domaines d’une future ligne avant toute inscription. Une relation vide n’est pas une relation sans structure.

Exercice 5 · Approfondir et transférer#

Compter structure et contenu

Club contient deux tuples et les attributs id_club,nom,salle. On ajoute deux clubs, puis l’attribut capacite, puis on modifie la salle du premier club. Donnez les nombres finaux de tuples et d’attributs, et classez chaque opération.

Indice 1

Modifier une valeur ne crée pas une colonne.

Indice 2

Une nouvelle ligne respecte le schéma existant.

Comprendre la correction

Les nombres finaux sont quatre tuples et quatre attributs. Les deux ajouts de clubs modifient le contenu ; l’ajout de capacité modifie le schéma ; le changement de salle modifie seulement une valeur du contenu. L’identité du premier club reste la même si son identifiant est conservé.

Exercice 6 · Approfondir et transférer#

Un domaine plus précis qu’un type

L’attribut capacite admet les entiers de 1 à 40 inclus. Examinez 0,1,12,40,41 et 12,5. Donnez les valeurs valides et expliquez les différents motifs de rejet.

Indice 1

Les bornes sont incluses.

Indice 2

La capacité doit aussi être entière.

Comprendre la correction

Les valeurs 1,12 et 40 sont valides. Zéro est inférieur au minimum, 41 dépasse le maximum et 12,5 n’est pas entier. Vérifier seulement le type entier laisserait passer 0 et 41 ; vérifier seulement l’intervalle laisserait passer 12,5.

Exercice 7 · Approfondir et transférer#

Deux inscriptions pour une personne

Lina, identifiant 101, rejoint les clubs 1 et 3 ; Noé, identifiant 102, rejoint le club 1. Proposez une relation Inscription contenant un tuple par participation. Combien de tuples faut-il ? Pourquoi ne pas donner deux identifiants de club dans une même case ?

Indice 1

Une participation relie exactement un membre à un club.

Indice 2

Les informations des membres et des clubs peuvent rester dans leurs relations propres.

Comprendre la correction

Inscription contient (101,1), (101,3), (102,1), soit trois tuples. Chaque ligne décrit une participation, ce qui permet de filtrer et de vérifier chaque référence. Une chaîne regroupant plusieurs clubs nécessiterait un découpage de texte et rendrait les contraintes plus difficiles à exprimer.

Les erreurs qui méritent un détour

Déduire le domaine à partir d’une seule valeur observée.
Le schéma définit ce qui est autorisé ; le contenu n’en présente que quelques exemples.
Utiliser l’ordre d’affichage pour identifier les lignes.
Une identité durable doit être portée par les données et leurs contraintes, pas par une position d’écran.

La fiche à garder

L’essentiel à retenir

  • Une relation contient des tuples décrits par les mêmes attributs.
  • Le domaine précise les valeurs autorisées.
  • Le schéma et le contenu sont deux niveaux distincts.

Cette notion au bac

Retrouvez ces idées dans un sujet complet, avec des indices, une correction expliquée et des ateliers.

Le prochain pas

Retrouver le catalogue de Terminale

Ce chapitre s’appuie sur le programme officiel de Terminale (PDF, nouvel onglet). Les explications et exercices sont proposés pour l’apprentissage.