Masar
Masar
Bac Tunisie
Entraîner la reconnaissance
BD-BBases de données et SQL

Schéma relationnel — représentation textuelle, PK et FK

Idée directrice

Passage classique des bases de données SI : à partir d’une représentation textuelle (tables, # pour FK), repérer clés primaires, clés étrangères et relations. Ancré sur le schéma bibliothèque de i-s1-04.

Signature de reconnaissance — l'énoncé se trahit ainsi

« représentation textuelle d’une base de données »

« LIVRES (NumLV, Titre, … NumED#) »

« clés primaires ainsi que les clés étrangères »

Sujet principal

Exercice — dans l'esprit des sujets du bac

7 questionsCorrigé masqué

Soit la représentation textuelle d’une base de données d’une bibliothèque :

  • `LIVRES (NumLV, Titre, NomAuteur, ValeurLV, NumED#)`
  • `EDITEURS (NumED, NomED, AdrED, TelED)`
  • `LECTEURS (NumLE, NomLE, AdrLE, VilleLE)`
  • `PRET (NumLV#, NumLE#, DateP, DateRet)`

La notation `#` marque une clé étrangère.

  1. Donner, pour chaque table, la clé primaire et, le cas échéant, les clés étrangères (en précisant la table référencée).
  2. Exprimer en français le lien sémantique entre `LIVRES` et `EDITEURS`, puis entre `PRET`, `LIVRES` et `LECTEURS`.
  3. Un même livre peut-il être prêté plusieurs fois à des lecteurs différents ? Justifier à partir de la clé de `PRET`.
Voir la correction commentéeAprès avoir posé votre démarche

1.
- `LIVRES` : PK = `NumLV` ; FK = `NumED` → `EDITEURS(NumED)`.
- `EDITEURS` : PK = `NumED` ; pas de FK.
- `LECTEURS` : PK = `NumLE` ; pas de FK.
- `PRET` : PK composite = (`NumLV`, `NumLE`, …) selon le sujet — au minimum FK `NumLV` → `LIVRES`, FK `NumLE` → `LECTEURS` (les deux colonnes marquée `#`).

2. Chaque livre a un éditeur (`NumED` dans `LIVRES`). Un prêt associe un livre et un lecteur à des dates données : relation N-N entre livres et lecteurs matérialisée par `PRET`.

3. Oui : plusieurs lignes de `PRET` peuvent partager le même `NumLV` avec des `NumLE` (ou des dates) différents, tant que la clé primaire de `PRET` reste unique. PK/FK lues sur la repreˊsentation textuelle\boxed{\text{PK/FK lues sur la représentation textuelle}}

Exercices d'entraînement — une nuance à la fois

Entraînement 01 / 02

Drill BD-B.1 — représentation textuelle d’un site de téléchargement

2 questionsCorrigé masqué

Une base gère des fichiers téléchargeables. D’après un contrôle SI, chaque fichier a un code unique `CodeF`, un type `TypeF` (référence à une table `Types`), une taille, une date de création. Un téléchargement relie un internaute (`Login`) et un fichier.

  1. Proposer une représentation textuelle minimale à trois tables `Types`, `Fichiers`, `Telecharger` en marquant les FK par `#`.
  2. Indiquer les clés primaires et les intégrités référentielles à maintenir.
Voir la correction commentéeAprès avoir posé votre démarche

1. Exemple cohérent avec l’énoncé du contrôle :
- `Types (Type, Designat)`
- `Fichiers (CodeF, NomF, Extension, TypeF#, Taille, Datcreat)`
- `Telecharger (NumTel, Login#, CodeF#, …)`

2. PK : `Types.Type`, `Fichiers.CodeF`, `Telecharger.NumTel` (ou couple selon sujet). FK : `Fichiers.TypeF` → `Types.Type` ; `Telecharger.CodeF` → `Fichiers.CodeF` (et `Login` → table internautes si présente). Les intégrités référentielles interdisent un type/fichier inexistant. repreˊsentation textuelle + PK/FK\boxed{\text{représentation textuelle + PK/FK}}

Entraînement 02 / 02

Drill BD-B.2 — tables déduites d’une liste de colonnes

2 questionsCorrigé masqué

On dispose d’une liste de colonnes regroupées par entité pour une base de données de médiathèque scolaire (extrait d’un devoir SI) : élève (`num_ele`, `nom_pre`, `classe`), livre (`code_liv`, `titre`, `auteur`), emprunt (`num_emp`, `num_ele`, `code_liv`, `date_emp`).

  1. Déduire la liste des tables du schéma relationnel.
  2. Donner une représentation textuelle de la base ( clé primaire notée, clé étrangère en # ) et indiquer les liens d’intégrité référentielle.
Voir la correction commentéeAprès avoir posé votre démarche

1. Trois tables : `Eleve`, `Livre`, `Emprunt` — une par entité de la liste de colonnes.

2. Représentation textuelle :
- `Eleve (num_ele, nom_pre, classe, …)` avec clé primaire `num_ele` ;
- `Livre (code_liv, titre, auteur, …)` PK `code_liv` ;
- `Emprunt (num_emp, num_ele#, code_liv#, date_emp, …)` avec clés étrangères `num_ele` → Eleve et `code_liv` → Livre.
Les contraintes d’intégrité référentielle interdisent un emprunt vers un élève ou un livre inexistant. 3 tables ; 2 FK dans Emprunt\boxed{\text{3 tables ; 2 FK dans Emprunt}}

Méthode / Automatismes
  • Lire d’abord les # : ce sont les FK.
  • La PK est en général le premier attribut non # (ou le couple des # pour une table d’association).
  • Écrire Table (… ) puis lister PK / FK séparément pour la copie.
Pièges classiques
  • Prendre `NumED` pour PK de LIVRES.
  • Oublier que PRET porte deux FK (livre et lecteur).
  • Confondre association N-N et héritage.