Aller au contenu

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.

\[\text{Eleves}(\underline{\text{id}} : \text{INT}, \text{nom} : \text{VARCHAR}, \text{prenom} : \text{VARCHAR}, \text{classe} : \text{VARCHAR}, \text{date\_naissance} : \text{DATE})\]

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 :

\[\text{Notes}(\underline{\text{id\_note}} : \text{INT}, \text{id\_eleve} : \text{INT}, \text{id\_matiere} : \text{INT}, \text{note} : \text{FLOAT}, \text{date\_eval} : \text{DATE})\]

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