Proposer un éclatement en tables (modèle relationnel). Ensuite, formaliser les concepts (relation, attribut, tuple, schéma/instance, PK, FK, etc.).
1. Éclatement du fichier plat (S1)
Rappel (extrait du fichier plat S1 « emprunts_bibliotheque.csv ») :
| id_eleve | nom_eleve | email_eleve | classe | titre_livre | auteur | éditeur | année_publication | date_emprunt | date_retour |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Martine Durand | martine.durand@mail.com | T07 | Le réseau | John Grisham | JCLattès | 2024 | 25-09-2024 | 05-10-2024 |
| 2 | Hermine Nyaleu | hermine.nyaleu@mail.com | T08 | Méditations métaphysiques | René Descartes | Flammarion | 2011 | 20-09-2024 | 30-09-2024 |
| 4 | Aïcha Djérouni | aicha.djerouni@mail.com | T07 | Belle Greene | Alexandra Lapierre | Flammarion | 2021 | 01-10-2024 | 10-10-2024 |
Questions
- Quels « sujets » distincts repérez-vous dans ces colonnes ? (indice : élève, livre, emprunt)
- Pour chaque sujet, quelles colonnes lui appartiennent naturellement ?
- Pour identifier un élève de façon univoque, que choisiriez-vous ? (exemple : id_eleve, email…)
- Pour identifier un livre de façon univoque, que choisiriez-vous ? (exemple : id_livre ou ISBN…)
- Proposez un nom de table et une liste d’attributs pour chaque sujet.
- Comment lier les tables entre elles ? (quels attributs communs, lien 1–N ou N–N ?)
- Comment éviter qu’un même élève soit enregistré deux fois pour le même livre ? (piste : clé composée ou contrainte UNIQUE)
2. Notions
Une base de données relationnelle (BDR) est un ensemble de relations qui sont implémentées à l'aide de tables (tableaux).
2.1 Relation (table) : propriétés essentielles
- Relation : Une relation est un ensemble d'attributs (les colonnes) et de tuples (les lignes). Elle est implémentée à l'aide d'une table. (exemple : Élève, Auteur, Livre, Emprunt).
- L'ordre des lignes/colonnes est sans importance pour le modèle.
- L'unicité des tuples est assurée par une clé primaire (PK).
2.2 Tuple (ligne)
Un tuple est un ensemble ordonné de valeurs, chacune associée à un attribut (ou colonne) spécifique de la table.
exemple : Élève : (1, "Martine Durand", "martine.durand@mail.com", "T07")
Chaque tuple représente une ligne (on dit aussi une instance individuelle ou un enregistrement de données) dans la relation (table).
2.3 Attribut et domaine
- Attribut : Un attribut est une caractéristique ou une propriété d'une relation. Chaque attribut représente une colonne dans une table. (exemple :
email,classe,date_emprunt). - Domaine de valeurs : C'est l'ensemble des valeurs qu'un attribut peut avoir.
exemple : classe ∈ {T01,…,T12} ; date_emprunt au format AAAA-MM-JJ.
2.4 Clés
-
Clé candidate : Une clé candidate est un ensemble minimal d'attributs qui peut identifier de manière unique chaque enregistrement dans une table. (exemple : pour Élève :
id_eleve,email, parfoisnum_carte).
Une table peut avoir plusieurs clés candidates - Clé primaire (PK) : Une clé candidate choisie (unique, non NULL).
- Clé composée : C'est une PK formée de plusieurs attributs (exemple :
(id_eleve, id_livre, date_emprunt)si on ne crée pasid_emprunt).
2.5 Références - contraintes d’intégrité
-
Clé étrangère (FK) : C'est un attribut qui référence la clé primaire d’une autre table.
Elle sert de lien entre deux tables en référant la clé primaire d'une autre table, garantissant la cohérence des données entre les deux tables. - Contrainte d’intégrité d’entité : chaque table a une clé primaire unique, non NULL.
- Contrainte d’intégrité référentielle : toute clé étrangère (FK) pointe vers une clé primaire (PK) existante (pas d’emprunt vers un élève inexistant).
- Contrainte de domaine : format/ensemble autorisé (exemple : liste de classes, motif de code, bornes de dates).
2.6 Cardinalités
- Auteur — Livre : 1–N (un auteur écrit 0..N livres ; un livre a exactement 1 auteur).
- Élève — Emprunt : 1–N (un élève a 0..N emprunts ; un emprunt concerne 1 élève).
- Livre — Emprunt : 1–N (un livre a 0..N emprunts ; un emprunt concerne 1 livre).
- Élève — Livre : N–N réalisé par la table d’association Emprunt.
2.7 Schéma relationnel - instance
- Schéma : C'est la description de la structure (noms d’attributs, PK/FK, domaines, contraintes).
- Instance : Ce sont les données présentes à un instant (les lignes actuelles).
3. Lier les tables : Schéma relationnel et contraintes
Eleve( id_eleve, nom, email, classe )
Auteur( id_auteur, nom )
Livre( id_livre, titre, id_auteur*, genre, editeur, annee_publication )
Emprunt( id_emprunt, id_eleve*, id_livre*, date_emprunt, date_retour )
-- Intégrité d'entité :
-- PK(Eleve) = id_eleve ; PK(Auteur) = id_auteur ; PK(Livre) = id_livre ; PK(Emprunt) = id_emprunt
-- Intégrité référentielle :
-- FK(Livre.id_auteur) → Auteur.id_auteur
-- FK(Emprunt.id_eleve) → Eleve.id_eleve
-- FK(Emprunt.id_livre) → Livre.id_livre
-- Domaines/Unicité (exemples utiles) :
-- Eleve.email UNIQUE ; Eleve.classe ∈ {T01..T12}
-- (Option) UNIQUE(Livre.titre, Livre.id_auteur, Livre.annee_publication)
-- (Option) UNIQUE(Emprunt.id_eleve, Emprunt.id_livre, Emprunt.date_emprunt)
-- Variante pédagogique sans id_emprunt :
-- Emprunt( id_eleve, id_livre, date_emprunt, date_retour )
-- PK(Emprunt) = (id_eleve, id_livre, date_emprunt)
Convention : PK soulignée, FK précédée d’un *.
Lecture des cardinalités
- Auteur 1–N Livre : un auteur → 0..* livres ; un livre → 1 auteur.
- Élève 1–N Emprunt et Livre 1–N Emprunt ; la relation Élève–Livre est N–N via Emprunt.
Activité A : De l’éclatement aux clés
- Listez les clés candidates de Élève et Livre; choisissez une PK et justifiez (unicité + stabilité).
- Repérez les FK dans Emprunt et indiquez les tables/PK référencées.
- Proposez une contrainte qui empêche l’enregistrement deux fois du même couple
(id_eleve, id_livre)le même jour.
4. Lier les tables : Schéma relationnel et UML
5. Exercices
Exercice 1 : Clés candidates
Repérez les clés candidates et choisissez la PK (unicité + stabilité).
| id_eleve | nom | num_carte | classe | |
|---|---|---|---|---|
| 1 | Martine Durand | martine.durand@mail.com | C-1024 | T07 |
| 2 | Hermine Nyaleu | hermine.nyaleu@mail.com | C-1030 | T08 |
| 4 | Aïcha Djérouni | aicha.djerouni@mail.com | C-1077 | T07 |
| 5 | Paul Dupont | paul.dupont@mail.com | C-1092 | T05 |
| id_livre | titre | auteur | editeur | annee_publication |
|---|---|---|---|---|
| 101 | Le réseau | John Grisham | JCLattès | 2024 |
| 104 | Le réseau | John Grisham | JCLattès | 2024 |
| 102 | Méditations métaphysiques | René Descartes | Flammarion | 2011 |
- Élève : candidats =
id_eleve,email,num_carte. PK conseillée :id_eleve(technique, stable). Contrainte UNIQUE suremail. - Livre : candidat sûr =
id_livre. Le trio (titre, auteur, année) n’est pas garanti unique (exemple : rééditions).
Exercice 2 : PK composée à partir de deux FKs
Dans Emprunt, interdire qu’un élève soit enregistré deux fois pour le même livre.
| id_eleve | id_livre | date_emprunt |
|---|---|---|
| 1 | 101 | 2024-09-25 |
| 2 | 102 | 2024-09-20 |
| 4 | 103 | 2024-10-01 |
| 4 | 103 | 2024-10-01 |
Travail demandé
- Indiquez les FK et leur table/PK cible.
- Proposez la PK composée et justifiez.
- Repérez la ligne qui viole la contrainte et expliquez.
- FK :
id_eleve→ Élève.id_eleve;id_livre→ Livre.id_livre. - PK composée : (id_eleve, id_livre) (version pédagogique) ou contrainte UNIQUE incluant la date.
- Doublon :
(4, 103, 2024-10-01)répété.
6. Quiz
- Donnez une différence claire entre schéma et instance.
- Citez 2 clés candidates pour Élève et choisissez la PK.
- Pourquoi Emprunt a-t-il besoin d’une clé composée ou d’une contrainte UNIQUE ?
- Donnez un exemple de domaine (format) pour l’attribut
classe. - Complétez : « Une FK dans Emprunt pointe vers la PK de .............».
- Schéma = structure (colonnes, clés, contraintes) ; Instance = données courantes (lignes).
- Élève : candidats =
id_eleve,email… PK retenue :id_eleve. Contrainte UNIQUE suremail. - Pour éviter les doublons d’association, utiliser PK composée
(id_eleve, id_livre)ouUNIQUE(...). - exemple : domaine :
classe ∈ {T01…T12}; date AAAA-MM-JJ. - Vers la PK de Élève et de Livre.