Partie 1 : Le modèle relationnel¶
Programme officiel (B.O.)¶
B.O. spécial n° 8 du 25 juillet 2019 - NSI Terminale
| Contenus | Capacités attendues | Commentaires |
|---|---|---|
| Modèle relationnel : relation, attribut, domaine, clef primaire, clef étrangère, schéma relationnel. | Identifier les concepts définissant le modèle relationnel. | Ces concepts permettent d'exprimer les contraintes d'intégrité (domaine, relation et référence). |
| Base de données relationnelle. | Savoir distinguer la structure d'une base de données de son contenu. Repérer des anomalies dans le schéma d'une base de données. | La structure est un ensemble de schémas relationnels qui respecte les contraintes du modèle relationnel. |
1. Des tables aux bases de données¶
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¶
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é.
Repère historique
Edgar Frank Codd (1923-2003), informaticien britannique travaillant chez IBM, publie en 1970 l'article fondateur A Relational Model of Data for Large Shared Data Banks. Ce modèle révolutionnaire a donné naissance aux bases de données relationnelles utilisées partout aujourd'hui.
2. Vocabulaire du modèle relationnel¶
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)¶
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¶
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)¶
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¶
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.
Analogie
Le schéma est le plan de construction d'un meuble (quelles pièces, quelles dimensions), tandis que le contenu est le meuble réellement assemblé avec ses matériaux. On peut avoir le plan sans meuble, ou plusieurs meubles construits selon le même plan.
3. Les clés¶
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.
Attention
On ne peut pas utiliser nom comme clé primaire car deux élèves peuvent porter le même nom de famille. On utilise souvent un identifiant numérique auto-incrémenté.
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¶
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¶
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é¶
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¶
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é)¶
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)¶
Toute valeur d'une clé étrangère doit correspondre à une valeur existante de la clé primaire référencée, ou être NULL.
Exemple de violation
Si on essaie d'insérer dans Notes un enregistrement avec id_eleve = 99 alors qu'aucun élève n'a l'identifiant 99, la contrainte de référence est violée : l'insertion est refusée par le SGBD.
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¶
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¶
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¶
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¶
Si « Dupont Alice » change de classe, il faut mettre à jour toutes les lignes la concernant. Un oubli crée une incohérence.
Solution : la normalisation
Pour éviter ces anomalies, on décompose les données en plusieurs relations liées par des clés étrangères. C'est le principe de la normalisation : chaque information n'est stockée qu'une seule fois.
À 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 |