Modèle relationnel
Identifier relations, attributs, domaines, clés et références, puis distinguer schéma et contenu d’une base de données relationnelle.
Environ 40 minutes
- Lire un schéma relationnel et ses domaines
- Choisir une clé primaire et identifier une clé étrangère
- Repérer des redondances et des anomalies de représentation
Deux emprunts du même livre doivent-ils répéter toutes les informations sur ce livre ?
Une base de données ne sert pas seulement à accumuler des lignes. Son organisation détermine quelles informations sont répétées, comment elles se relient et quelles incohérences peuvent apparaître. Tu vas construire un petit modèle de catalogue et d’emprunts, en séparant sa structure et son contenu. Prérequis : tableaux de données, identifiants et associations entre valeurs. Les requêtes SQL détaillées et les services du SGBD seront étudiés dans les chapitres suivants.
1. Une relation possède une structure
Dans le modèle relationnel, une relation est un ensemble de tuples qui partagent les mêmes attributs. On la représente souvent par une table : les attributs correspondent aux colonnes et les tuples aux lignes. Un attribut possède un domaine, c’est-à-dire un ensemble de valeurs autorisées. Un entier, un texte ou une date peuvent donner une première description du domaine ; on peut aussi préciser une condition, comme un entier strictement positif. Le domaine indique donc ce qu’une valeur signifie et ce qui est admissible, pas seulement la manière dont elle s’affiche.
Le schéma décrit la structure : nom de relation, attributs, domaines et contraintes. Le contenu est l’ensemble des tuples présents à un moment donné. Ajouter un livre change le contenu sans ajouter de colonne au schéma. Ajouter un attribut langue change le schéma. Dans le modèle mathématique, les lignes ne sont pas ordonnées et une relation ne contient pas deux tuples entièrement identiques. Les tableaux affichés et les résultats SQL peuvent avoir des propriétés différentes ; ne déduis donc pas du seul ordre d’un écran une propriété du modèle relationnel.
Exemple résolu
Dans Catalogue(id_livre, titre), distingue attribut, domaine, tuple et contenu.
- Étape 1 : id_livre et titre sont des attributs. On fixe pour id_livre un domaine d’entiers positifs et pour titre un domaine de textes non vides.
- Étape 2 : Le tuple (10, Orion) fournit une valeur pour chacun des deux attributs.
- Étape 3 : Les deux tuples affichés forment le contenu actuel. Le schéma reste le même si un troisième livre valide est ajouté.
Résultat : Une colonne décrit un attribut ; une ligne fournit des valeurs compatibles avec leurs domaines. Schéma et contenu désignent deux couches différentes de l’organisation.
Piège à éviter : Répondre qu’un domaine est la liste des deux valeurs actuellement présentes confond les valeurs possibles et l’échantillon stocké.
À toi d'essayer
La base reçoit le livre 30, Vega. Est-ce un changement de schéma ? Et si l’on décide de mémoriser aussi la langue de chaque livre ?
Voir la réponseMasquer la réponse
Le nouvel enregistrement change le contenu seulement. L’ajout d’un attribut langue change la structure décrite par le schéma, et demande ensuite de renseigner les valeurs correspondantes.
2. Une clé identifie les tuples
Une clé est un attribut ou un ensemble d’attributs permettant d’identifier chaque tuple de manière unique selon les règles du modèle. Une clé candidate est minimale pour cette propriété : aucun de ses attributs ne peut être retiré tout en conservant l’identification. La clé primaire est celle que l’on choisit comme identifiant principal parmi les possibilités adaptées. Ses valeurs doivent être uniques et présentes. Un titre n’est généralement pas un bon identifiant : deux livres peuvent avoir le même titre. Un numéro artificiel id_livre convient si son unicité est imposée et conservée.
L’unicité doit être une règle durable, pas seulement un constat sur les deux lignes affichées. Un tableau où deux personnes ont aujourd’hui des prénoms différents ne prouve pas que le prénom puisse servir de clé. Il faut examiner les cas possibles. Une clé peut être composée : dans une relation Participation(code_membre, code_seance), si chaque membre ne peut apparaître qu’une fois par séance, la paire peut identifier une participation. code_membre seul ne suffit pas si une personne participe à plusieurs séances ; code_seance seul ne suffit pas si une séance accueille plusieurs personnes.
Exemple résolu
Une relation Participation contient (M1, S1), (M1, S2) et (M2, S1). Choisis une clé selon la règle une participation par membre et par séance.
- Étape 1 : Le membre M1 apparaît deux fois : code_membre ne peut pas identifier seul les tuples.
- Étape 2 : La séance S1 apparaît deux fois : code_seance ne suffit pas non plus.
- Étape 3 : Chaque paire membre-séance est unique et la règle interdit de la répéter. La paire constitue donc une clé composée minimale.
Résultat : La clé est le couple (code_membre, code_seance). La répétition de chaque composante séparée est permise, mais la répétition de la paire ne l’est pas.
Piège à éviter : Exiger l’unicité de chaque composante empêcherait à tort plusieurs membres de rejoindre une même séance.
Une clé primaire ne doit pas être confondue avec un numéro de ligne. Trier l’affichage ne change pas l’identité du livre. Retirer une ligne ne doit pas renuméroter silencieusement tous les objets restants. Un identifiant choisi pour établir des liens doit rester assez stable pour que les références conservent leur sens. Il faut aussi distinguer une valeur absente et une valeur normale comme zéro ou chaîne vide : leur admissibilité dépend du domaine et des contraintes annoncées, pas d’une règle improvisée au moment de l’affichage.
À toi d'essayer
Sur le catalogue actuel, tous les titres sont différents. Peut-on conclure que titre est une clé primaire adaptée ?
Correction détaillée pas à pasDans ce chapitre : 2 corrections détaillées.
3. Relier sans recopier les informations
Une clé étrangère est un attribut ou un groupe d’attributs qui référence une clé de la relation cible. Dans les exemples scolaires, elle renvoie généralement à la clé primaire d’une autre relation. Des références à une clé unique ou à la même relation sont aussi possibles selon le modèle utilisé. Ici, Emprunt(id_emprunt, id_livre) possède sa propre clé primaire id_emprunt et une clé étrangère id_livre vers Catalogue.id_livre. Nous imposons que chaque emprunt concerne un livre connu : la référence est obligatoire et ne peut pas être absente.
Exemple résolu
Le catalogue contient les identifiants 10 et 20. Les emprunts E1 vers 10, E2 vers 10 et E3 vers 20 respectent-ils la référence ? Peut-on ajouter E4 vers 99 ?
- Étape 1 : Chaque référence des trois emprunts est une clé présente dans Catalogue. La répétition de 10 ne viole pas cette règle.
- Étape 2 : Les identifiants E1, E2 et E3 restent distincts : ils identifient les emprunts, pas les livres.
- Étape 3 : La référence 99 est absente du catalogue. E4 ne peut donc pas être ajouté sans corriger la référence ou créer préalablement un livre valide correspondant.
Résultat : Les trois premiers emprunts sont compatibles avec les clés annoncées. E4 vers 99 viole la contrainte de référence ; ce n’est pas un problème de doublon.
Piège à éviter : Imposer l’unicité de id_livre dans Emprunt limiterait chaque livre à un seul emprunt enregistré, ce qui change le besoin.
Séparer Catalogue et Emprunt évite de répéter le titre à chaque emprunt. Dans une table unique, corriger le titre d’un livre demanderait de modifier toutes ses occurrences ; une seule correction oubliée laisserait des titres contradictoires pour le même identifiant. On parle d’anomalie de mise à jour. Une anomalie d’insertion apparaîtrait si l’on ne pouvait ajouter un livre avant son premier emprunt. Une anomalie de suppression apparaîtrait si supprimer le dernier emprunt faisait disparaître la seule information sur ce livre. La séparation répond à ces problèmes sans demander ici une théorie complète de la normalisation.
Le schéma présenté reste simplifié : il ne distingue pas les exemplaires physiques et les œuvres, ni les dates de prêt ou de retour. Pour une vraie bibliothèque, il faudrait préciser ces objets et leurs contraintes. Cette limite n’annule pas le raisonnement ; elle délimite ce que le modèle décrit. Une bonne réponse ne prétend pas qu’une table de démonstration couvre tous les besoins possibles. Elle énonce le périmètre, choisit les attributs nécessaires et vérifie les règles correspondantes.
À toi d'essayer
On supprime le dernier emprunt concernant le livre 20. Dans le modèle à deux relations, faut-il supprimer automatiquement le livre du catalogue ? Justifie par le besoin.
Correction détaillée pas à pasDans ce chapitre : 2 corrections détaillées.
4. Au bac : lire les contraintes avant les lignes
Au bac : vérifier un schéma relationnel
- Identifie ce que représente chaque relation et définis les attributs utiles avec leurs domaines.
- Choisis les clés à partir des règles du problème, puis teste des cas futurs et pas seulement les lignes visibles.
- Pour chaque référence, écris relation source, attribut source, relation cible et clé cible.
- Contrôle séparément l’unicité des clés et l’existence des références. Deux erreurs différentes peuvent produire des incohérences distinctes.
- Recherche les informations répétées et les anomalies de mise à jour, d’insertion ou de suppression. Explique le besoin avant de proposer une séparation.
Pour justifier une correction, donne un cas concret. Si un titre est répété dans cinq lignes d’emprunts, montre ce qui arrive lorsqu’une seule ligne est corrigée. Si une référence est inconnue, indique exactement quelle valeur manque dans la relation cible. Ces exemples rendent le diagnostic vérifiable. Le SGBD pourra contrôler des contraintes déclarées, mais il ne devine pas le sens des attributs ni les règles oubliées par le concepteur. Le modèle précède donc l’écriture des requêtes et reste nécessaire pour interpréter leurs résultats.
Vocabulaire
- Attribut :
- Caractéristique nommée d’une relation, associée à un domaine.
- Tuple :
- Ensemble des valeurs d’un enregistrement selon les attributs du schéma.
- Clé primaire :
- Clé choisie pour identifier les tuples, avec valeurs uniques et présentes.
- Contrainte de référence :
- Règle qui exige qu’une référence admissible corresponde à une clé de la relation cible.
Trois contrôles distincts
| Contrôle | Question |
|---|---|
| Domaine | La valeur appartient-elle à l’ensemble autorisé ? |
| Clé | Identifie-t-elle le tuple sans ambiguïté ? |
| Référence | La cible désignée existe-t-elle ? |
S’entraîner : ouvre l’espace Exercices du site.
À retenir
- Le schéma décrit une structure et des contraintes ; le contenu décrit les tuples présents.
- Une clé primaire identifie les tuples avec des valeurs uniques et présentes.
- Une clé étrangère peut se répéter dans la relation source si le besoin le permet.
- La séparation de données liées peut éviter des anomalies de mise à jour, d’insertion et de suppression.
Fiche de révision
Ajoute un tuple pour tester le contenu ; ajoute une colonne pour reconnaître une modification de structure.
Pour une clé composée, vérifie la paire et non l’unicité de chaque composante isolée.
Un identifiant stable conserve le sens des références malgré un tri de l’affichage.
Compare toujours le modèle au besoin
œuvre, exemplaire et emprunt peuvent exiger des relations distinctes.
Questions fréquentes
Une clé étrangère est-elle toujours unique ?
Non. Plusieurs tuples peuvent référencer la même cible. Une contrainte d’unicité supplémentaire correspondrait à un besoin différent.
Le SGBD remplace-t-il la conception du modèle ?
Non. Il applique les règles déclarées ; il ne connaît pas automatiquement toutes les règles du domaine étudié.
Et maintenant ?
Tu as lu le cours. L’étape suivante tient en une action.
Relis le coursReprends l’essentiel avant de passer à la suite.Prolonge l’expérience !
Continue à explorer ce chapitre à travers de nouvelles activités, des défis et des expériences interactives. Avec Premium, l’apprentissage continue !
Ici, tu débloques aussi 2 corrections détaillées.
Parent ? Suivez les progrès de votre enfant.
