Chapitre 2 - Partie 2 : Le modèle relationnel
1. Des tables aux bases de données
Section intitulée « 1. Des tables aux bases de données »1.1 Limites des fichiers CSV
Section intitulée « 1.1 Limites des fichiers CSV »En classe de première, on a travaillé avec des tables stockées dans des fichiers CSV. Cette approche convient pour de petits volumes de données, mais présente vite des limites :
- Redondance : les mêmes informations sont répétées dans plusieurs lignes ;
- Incohérence : une modification oubliée dans une ligne crée des contradictions ;
- Accès concurrent : plusieurs utilisateurs ne peuvent pas modifier le fichier en même temps ;
- Volume : le fichier entier doit être chargé en mémoire pour être exploité.
1.2 Le modèle relationnel
Section intitulée « 1.2 Le modèle relationnel »Le modèle relationnel, proposé par Edgar F. Codd en 1970, répond à ces problèmes. Il organise les données en relations (tables) liées entre elles par des clés, et garantit leur cohérence grâce à des contraintes d'intégrité.
2. Vocabulaire du modèle relationnel
Section intitulée « 2. Vocabulaire du modèle relationnel »2.1 Relation (table)
Section intitulée « 2.1 Relation (table) »Une relation est un ensemble de données organisées en lignes et colonnes, similaire à un tableau. On la désigne aussi par le terme table.
Exemple : la relation Eleves contient les informations sur les élèves d'un lycée.
| id | nom | prenom | classe | date_naissance |
|---|---|---|---|---|
| 1 | Dupont | Alice | T3 | 2008-03-15 |
| 2 | Martin | Bob | T1 | 2008-07-22 |
| 3 | Durand | Clara | T3 | 2007-12-01 |
| 4 | Petit | David | T2 | 2008-01-30 |
2.2 Attribut (colonne)
Section intitulée « 2.2 Attribut (colonne) »Un attribut est une colonne de la relation. Il porte un nom unique au sein de la relation et décrit une propriété des données.
Dans l'exemple ci-dessus, les attributs sont : id, nom, prenom, classe, date_naissance.
2.3 Domaine
Section intitulée « 2.3 Domaine »Le domaine d'un attribut est l'ensemble des valeurs qu'il peut prendre. Cela correspond au type de la donnée.
| Attribut | Domaine | Description |
|---|---|---|
id | Entier positif (INT) | Identifiant numérique |
nom | Chaîne de caractères (VARCHAR) | Nom de famille |
prenom | Chaîne de caractères (VARCHAR) | Prénom |
classe | Chaîne de caractères (VARCHAR) | Classe de l'élève |
date_naissance | Date (DATE) | Format AAAA-MM-JJ |
2.4 Enregistrement (ligne, n-uplet)
Section intitulée « 2.4 Enregistrement (ligne, n-uplet) »Un enregistrement (ou n-uplet, ou tuple) est une ligne de la relation. Il contient une valeur pour chaque attribut.
L'enregistrement (2, "Martin", "Bob", "T1", "2008-07-22") représente un élève précis.
2.5 Schéma d'une relation
Section intitulée « 2.5 Schéma d'une relation »Le schéma d'une relation décrit sa structure : le nom de la relation suivi de la liste de ses attributs avec leurs domaines. On souligne la clé primaire.
3. Les clés
Section intitulée « 3. Les clés »3.1 Clé primaire
Section intitulée « 3.1 Clé primaire »La clé primaire est un attribut (ou un ensemble d'attributs) qui identifie de manière unique chaque enregistrement de la relation. Elle a deux propriétés essentielles :
- Unicité : deux enregistrements ne peuvent pas avoir la même valeur de clé primaire ;
- Non-nullité : la clé primaire ne peut jamais être vide (
NULL).
Dans la relation Eleves, l'attribut id est la clé primaire : chaque élève a un numéro unique.
3.2 Clé étrangère
Section intitulée « 3.2 Clé étrangère »Une clé étrangère est un attribut d'une relation qui fait référence à la clé primaire d'une autre relation. Elle permet de relier deux tables entre elles.
Exemple : on ajoute une relation Notes qui fait référence aux élèves.
Relation Matieres :
| id_matiere | intitule |
|---|---|
| 1 | Mathématiques |
| 2 | NSI |
| 3 | Français |
Relation Notes :
| id_note | id_eleve | id_matiere | note | date_eval |
|---|---|---|---|---|
| 1 | 1 | 2 | 17 | 2025-09-15 |
| 2 | 2 | 1 | 14 | 2025-09-15 |
| 3 | 1 | 1 | 16 | 2025-09-20 |
| 4 | 3 | 2 | 19 | 2025-09-15 |
Ici, id_eleve est une clé étrangère qui fait référence à la clé primaire id de la relation Eleves. De même, id_matiere fait référence à id_matiere dans Matieres.
Le schéma de Notes s'écrit :
On indique les clés étrangères par une notation avec # ou en les précisant séparément :
id_eleve: clé étrangère →Eleves(id)id_matiere: clé étrangère →Matieres(id_matiere)
4. Schéma relationnel d'une base de données
Section intitulée « 4. Schéma relationnel d'une base de données »4.1 Définition
Section intitulée « 4.1 Définition »Le schéma relationnel d'une base de données est l'ensemble des schémas de toutes ses relations, avec l'indication des clés primaires et des clés étrangères.
Pour notre exemple :
Eleves(id : INT, nom : VARCHAR, prenom : VARCHAR, classe : VARCHAR, date_naissance : DATE) Clé primaire : id
Matieres(id_matiere : INT, intitule : VARCHAR) Clé primaire : id_matiere
Notes(id_note : INT, id_eleve : INT, id_matiere : INT, note : FLOAT, date_eval : DATE) Clé primaire : id_note Clé étrangère : id_eleve → Eleves(id) Clé étrangère : id_matiere → Matieres(id_matiere)4.2 Représentation graphique
Section intitulée « 4.2 Représentation graphique »On peut aussi représenter le schéma sous forme de diagramme, où chaque table est un rectangle et les flèches indiquent les clés étrangères :
┌──────────────────┐ ┌──────────────────────────────┐ ┌──────────────┐│ Eleves │ │ Notes │ │ Matieres │├──────────────────┤ ├──────────────────────────────┤ ├──────────────┤│ id (PK) │◄──────│ id_note (PK) │──────►│ id_matiere ││ nom │ │ id_eleve (FK) │ │ (PK) ││ prenom │ │ id_matiere (FK) │ │ intitule ││ classe │ │ note │ └──────────────┘│ date_naissance │ │ date_eval │└──────────────────┘ └──────────────────────────────┘5. Contraintes d'intégrité
Section intitulée « 5. Contraintes d'intégrité »Les contraintes d'intégrité sont des règles qui garantissent la cohérence des données dans la base.
5.1 Contrainte de domaine
Section intitulée « 5.1 Contrainte de domaine »Chaque valeur d'un attribut doit appartenir à son domaine. Par exemple, une note doit être un nombre (pas du texte), une date doit respecter un format valide.
5.2 Contrainte de relation (ou d'entité)
Section intitulée « 5.2 Contrainte de relation (ou d'entité) »La clé primaire doit être unique et non nulle. Deux enregistrements ne peuvent pas partager la même valeur de clé primaire.
5.3 Contrainte de référence (intégrité référentielle)
Section intitulée « 5.3 Contrainte de référence (intégrité référentielle) »Toute valeur d'une clé étrangère doit correspondre à une valeur existante de la clé primaire référencée, ou être NULL.
6. Différence entre structure et contenu
Section intitulée « 6. Différence entre structure et contenu »Il est essentiel de bien distinguer :
| Structure (schéma) | Contenu (données) | |
|---|---|---|
| Ce que c'est | Les noms des relations, attributs, domaines, clés | Les enregistrements effectivement stockés |
| Quand ça change | Rarement (lors de la conception ou de l'évolution) | Fréquemment (ajout, modification, suppression) |
| Exemple | « La table Eleves a un attribut nom de type VARCHAR » | « L'élève Dupont Alice est en T3 » |
7. Anomalies dans une base de données
Section intitulée « 7. Anomalies dans une base de données »7.1 Redondance
Section intitulée « 7.1 Redondance »Une information identique est stockée à plusieurs endroits. Si elle change, il faut la modifier partout, sinon la base devient incohérente.
Exemple de mauvaise conception (tout dans une seule table) :
| id_note | nom_eleve | prenom_eleve | classe | matiere | note |
|---|---|---|---|---|---|
| 1 | Dupont | Alice | T3 | NSI | 17 |
| 2 | Dupont | Alice | T3 | Maths | 16 |
| 3 | Martin | Bob | T1 | Maths | 14 |
Le nom, le prénom et la classe de « Dupont Alice » sont répétés. Si elle change de classe, il faut modifier toutes les lignes la concernant.
7.2 Anomalie d'insertion
Section intitulée « 7.2 Anomalie d'insertion »On ne peut pas insérer certaines données sans en connaître d'autres. Dans la table ci-dessus, on ne peut pas ajouter un nouvel élève sans lui attribuer une note.
7.3 Anomalie de suppression
Section intitulée « 7.3 Anomalie de suppression »En supprimant une donnée, on perd involontairement d'autres informations. Si on supprime la seule note de « Martin Bob », on perd aussi toutes ses informations personnelles.
7.4 Anomalie de mise à jour
Section intitulée « 7.4 Anomalie de mise à jour »Si « Dupont Alice » change de classe, il faut mettre à jour toutes les lignes la concernant. Un oubli crée une incohérence.
À retenir
Section intitulée « À retenir »| Concept | Définition |
|---|---|
| Relation | Table organisée en lignes (enregistrements) et colonnes (attributs) |
| Attribut | Colonne d'une relation, avec un nom et un domaine |
| Domaine | Ensemble des valeurs possibles d'un attribut (son type) |
| Clé primaire | Attribut(s) identifiant de façon unique chaque enregistrement |
| Clé étrangère | Attribut faisant référence à la clé primaire d'une autre relation |
| Schéma relationnel | Ensemble des schémas de toutes les relations de la base |
| Contraintes d'intégrité | Règles de cohérence : domaine, entité, référence |
| Anomalies | Problèmes causés par une mauvaise conception : redondance, insertion, suppression, mise à jour |
© 2026 Corentin Dupont - LyCode
Créé avec Astro Starlight