Le modèle relationnel : relations, clés et contrainte d'intégrité référentielle
À retenir
Cadre programme : DCG, programme 2025 (arrêté du 4 août 2025, première session 2027), UE 8 « Systèmes d'information de gestion », partie 2 « Gérer des données du système d'information », sous-partie 2.1 « Structurer et manipuler des données via les bases de données », rubrique 2.1.1 « Structurer une base de données ».
Pourquoi c'est central à l'examen : l'épreuve écrite de 4 h donne presque toujours un schéma relationnel avant de poser des questions de requêtes ou de processus. Savoir lire ce schéma (clés, liens entre tables, règles de gestion cachées derrière une clé étrangère) conditionne la réussite de tout le reste de l'UE : une jointure fausse vient presque toujours d'un schéma mal lu.
01Pourquoi une base de données relationnelle
1.1 Le problème des données dispersées
Dans une petite entreprise, les clients sont souvent notés dans un fichier, les commandes dans un deuxième et les factures dans un troisième. Trois difficultés apparaissent vite.
- Redondance : l'adresse d'un client est recopiée dans chaque fichier.
- Incohérence : l'adresse est corrigée à un endroit et pas aux autres.
- Partage impossible : deux services ne peuvent pas travailler en même temps sur la même donnée sans risquer de s'écraser mutuellement.
Une base de données regroupe les données de l'organisation en un ensemble structuré, partagé et géré par un système de gestion de bases de données relationnelles (SGBDR). Le SGBDR est le logiciel qui stocke les données, applique les règles de cohérence et répond aux requêtes. « Relationnelle » désigne la manière d'organiser les données : en tables reliées par des valeurs communes.
1.2 Ce que le programme demande
Le programme n'utilise que le modèle relationnel : relation, clé primaire, clé étrangère, dépendances fonctionnelles, normalisation (cours 14) et contrainte d'intégrité référentielle. Aucune autre technique de conception n'est attendue : le schéma est fourni ou se déduit directement des règles de gestion.
02Le vocabulaire du modèle relationnel
Une base relationnelle est un ensemble de relations, que l'on représente sous forme de tableaux à deux dimensions.
| Terme du modèle | Dans le tableau | Exemple |
|---|---|---|
| Relation | La table entière | CLIENT |
| Attribut | Une colonne | NomClient |
| Domaine | L'ensemble des valeurs permises pour un attribut | Ville : un texte ; Quantite : un entier positif |
| Tuple (ou enregistrement) | Une ligne | (1, Boulangerie Lemoine, Lyon, ...) |
| Valeur nulle (NULL) | Une case sans valeur : information inconnue ou sans objet | Courriel non renseigné |
Voici la relation CLIENT d'une entreprise de fournitures de bureau, qui servira de fil rouge à tout le kit.
| NumClient | NomClient | Ville | Courriel |
|---|---|---|---|
| 1 | Boulangerie Lemoine | Lyon | contact@lemoine.example |
| 2 | Cabinet Aubert | Nantes | NULL |
| 3 | Garage Perrin | Lille | perrin@garage.example |
| 4 | Mairie de Tours | Tours | achats@tours.example |
| 5 | Atelier Duval | Lyon | NULL |
| 6 | Lycée Michelet | Rennes | intendance@michelet.example |
| 7 | Pharmacie Roux | Nantes | roux@pharma.example |
Propriétés à connaître :
- une relation est un ensemble de tuples : deux lignes ne peuvent pas être identiques ;
- l'ordre des lignes et des colonnes n'a pas de signification ;
- chaque case contient une seule valeur (pas de liste dans une case) ;
- toutes les valeurs d'une colonne appartiennent au même domaine.
À retenir
Le mot « table » est le terme courant des SGBDR et du langage de requêtes ; « relation » est le terme du modèle. Les deux désignent la même chose à l'examen.
03Le schéma relationnel et sa notation
Le schéma relationnel décrit la structure de la base sans les données : le nom de chaque relation et la liste de ses attributs. Le sujet utilise une notation proche de la suivante.
- Le nom de la relation s'écrit en majuscules, suivi de ses attributs entre parenthèses.
- La clé primaire est soulignée sur une copie ; dans ce cours, elle est écrite en gras.
- Une clé étrangère est précédée du signe #.
Le schéma de la base du fil rouge :
À retenir
CATEGORIE (CodeCat, LibCat)
PRODUIT (RefProduit, Designation, PrixHT, Stock, #CodeCat)
CLIENT (NumClient, NomClient, Ville, Courriel)
COMMANDE (NumCommande, DateCommande, #NumClient)
LIGNE_COMMANDE (#NumCommande, #RefProduit, Quantite)
Pour LIGNE_COMMANDE, les deux attributs sont à la fois en gras (ils forment ensemble la clé primaire) et précédés de
(chacun est une clé étrangère). C'est une situation très fréquente : on écrit #NumCommande, #RefProduit.
Le sujet peut aussi donner le schéma sous forme graphique (rectangles reliés par des flèches de la clé étrangère vers la clé primaire référencée). La lecture est la même : suivre la flèche, c'est suivre la clé étrangère.
04La clé primaire
4.1 Définition et qualités
La clé primaire d'une relation est l'attribut (ou le groupe d'attributs) qui identifie chaque tuple de façon unique. Elle respecte quatre qualités.
- Unicité : deux tuples n'ont jamais la même valeur de clé.
- Non-nullité : la clé est toujours renseignée. C'est la contrainte d'entité.
- Minimalité : on ne retient que les attributs nécessaires à l'identification ; si on peut en retirer un sans perdre l'unicité, il n'appartient pas à la clé.
- Stabilité : la valeur ne change pas pendant la vie du tuple.
4.2 Clé simple et clé composée
| Clé simple | Clé composée | |
|---|---|---|
| Nombre d'attributs | Un seul | Deux ou plus |
| Exemple | NumClient identifie un client | (NumCommande, RefProduit) identifie une ligne de commande |
| Raison | Un numéro suffit | Une commande contient plusieurs produits et un produit figure dans plusieurs commandes : seule la combinaison est unique |
4.3 Choisir une bonne clé
Le nom du client est un mauvais choix : deux clients peuvent avoir le même nom, un nom peut être modifié. On préfère un identifiant artificiel (numéro, code) attribué par l'organisation : c'est ce que montrent NumClient, RefProduit ou NumCommande.
05La clé étrangère
Une clé étrangère est un attribut (ou un groupe d'attributs) d'une relation dont les valeurs référencent la clé primaire d'une autre relation (ou parfois de la même). Elle matérialise le lien entre deux tables.
Exemple : dans COMMANDE, l'attribut #NumClient référence CLIENT. La commande 101 porte la valeur 1 : elle a été passée par le client numéro 1.
| NumCommande | DateCommande | NumClient |
|---|---|---|
| 101 | 2026-01-12 | 1 |
| 102 | 2026-01-20 | 3 |
| 103 | 2026-02-03 | 1 |
| 104 | 2026-02-10 | 4 |
| 105 | 2026-02-25 | 2 |
| 106 | 2026-03-04 | 6 |
| 107 | 2026-03-15 | 4 |
| 108 | 2026-03-28 | 1 |
5.1 Lire une règle de gestion dans une clé étrangère
La place de la clé étrangère révèle la règle de gestion.
| Schéma | Règle de gestion lue |
|---|---|
| COMMANDE (..., #NumClient) | Une commande est passée par un seul client ; un client peut passer plusieurs commandes |
| PRODUIT (..., #CodeCat) | Un produit appartient à une seule catégorie ; une catégorie regroupe plusieurs produits |
| LIGNE_COMMANDE (#NumCommande, #RefProduit, Quantite) | Une commande contient plusieurs produits, un produit peut figurer dans plusieurs commandes, avec une quantité pour chaque couple |
La règle générale : pour un lien « un à plusieurs », la clé étrangère se place dans la table du côté « plusieurs ». Pour un lien « plusieurs à plusieurs », on crée une table de liaison dont la clé primaire est formée des clés étrangères vers les deux tables liées.
5.2 Clé étrangère facultative et clé étrangère réflexive
Une clé étrangère peut accepter la valeur nulle quand le lien est facultatif. Dans EMPLOYE (NumEmploye, NomEmploye, Fonction, #NumResponsable), la directrice n'a pas de responsable : son NumResponsable est nul. La clé étrangère référence ici la même relation : on parle de clé étrangère réflexive (cours 16).