Normalisation et adaptation d’un schéma relationnel
Vérifier les règles du modèle relationnel, apprécier la normalisation jusqu’à la troisième forme normale et adapter un schéma à une nouvelle règle de gestion.
Introduction
Dans la leçon précédente, nous avons appris à interpréter un schéma relationnel : repérer les relations, les clés primaires, les clés étrangères et les dépendances fonctionnelles. Cette base est indispensable, car un schéma relationnel ne doit pas seulement être lisible : il doit aussi être correct au regard du modèle relationnel et adaptable lorsque les règles de gestion évoluent.
Cette leçon est donc centrée sur deux compétences essentielles :
- vérifier les règles du modèle relationnel ;
- adapter un schéma relationnel au changement d’une règle de gestion.
Autrement dit, il ne s’agit plus seulement de lire une base de données, mais de juger si sa structure est saine, cohérente, sans redondances inutiles, et capable d’évoluer sans provoquer d’anomalies.
Objectifs d’apprentissage
À l’issue de cette leçon, vous devrez être capable de :
- rappeler le rôle de la structuration des données dans le système d’information ;
- vérifier qu’un schéma respecte les principales règles du modèle relationnel ;
- comprendre pourquoi la normalisation est nécessaire ;
- apprécier si un schéma est cohérent jusqu’à la troisième forme normale (3FN) ;
- repérer les défauts de conception : redondances, anomalies de mise à jour, dépendances mal placées ;
- adapter un schéma relationnel lorsqu’une règle de gestion change.
1. La place de cette compétence dans la gestion des données du système d’information
La base de données n’est pas un simple stockage passif. Dans un système d’information de gestion, elle constitue une structure organisée de données destinée à soutenir les processus de l’organisation : ventes, achats, ressources humaines, facturation, suivi client, etc.
Quand la base est mal conçue, les conséquences sont immédiates :
- informations dupliquées ;
- incohérences entre plusieurs enregistrements ;
- difficulté de mise à jour ;
- erreurs dans les traitements ;
- perte de fiabilité du système d’information.
À l’inverse, une base bien structurée permet :
- une meilleure qualité de l’information ;
- une réduction des redondances ;
- une maintenance plus simple ;
- une meilleure adaptation aux évolutions de l’organisation.
La compétence « Structurer et manipuler des données via les bases de données » suppose donc d’aller au-delà du simple usage d’un SGBDR. Il faut savoir concevoir, contrôler et faire évoluer la structure.
2. Rappel : qu’est-ce qu’un schéma relationnel ?
Un schéma relationnel décrit l’organisation logique d’une base de données relationnelle.
Il précise notamment :
- les relations (souvent assimilées aux tables) ;
- les attributs de chaque relation ;
- les clés primaires ;
- les clés étrangères ;
- parfois, implicitement ou explicitement, les dépendances fonctionnelles.
Exemple simple
On veut gérer des commandes clients.
Schéma initial :
- CLIENT(
NumClient, NomClient, Ville) - COMMANDE(
NumCommande, DateCommande, NumClient)
Ici :
NumClientest la clé primaire de CLIENT ;NumCommandeest la clé primaire de COMMANDE ;NumClientdans COMMANDE est une clé étrangère vers CLIENT.
Ce schéma semble simple, mais la vraie question est : est-il correctement structuré ?
3. Vérifier les règles du modèle relationnel
Vérifier les règles du modèle relationnel consiste à s’assurer que la structure proposée est compatible avec les principes fondamentaux d’une base de données relationnelle.
3.1 Une relation représente un ensemble de données homogènes
Chaque relation doit correspondre à un type d’objet de gestion ou à une association cohérente.
Exemples :
- une relation CLIENT pour les clients ;
- une relation PRODUIT pour les produits ;
- une relation FACTURE pour les factures.
Une relation mal conçue mélange souvent plusieurs réalités différentes.
Mauvais exemple
- GESTION(
NumClient, NomClient, NumProduit, LibelleProduit, DateCommande)
Cette relation mélange :
- les clients ;
- les produits ;
- les commandes.
Le problème n’est pas seulement esthétique. Cela crée des répétitions massives et rend la maintenance difficile.
3.2 Chaque occurrence doit être identifiable de manière unique
Une relation doit posséder une clé primaire permettant d’identifier sans ambiguïté chaque ligne.
Pourquoi ?
Sans identifiant unique :
- on ne sait pas distinguer deux occurrences proches ;
- les mises à jour deviennent risquées ;
- les liens avec d’autres relations sont fragiles.
Exemple
Dans la relation :
- SALARIE(
Matricule, Nom, Prenom, Service)
Matricule est une bonne clé primaire, car elle identifie un salarié de façon unique.
En revanche, choisir (Nom, Prenom) serait dangereux : plusieurs salariés peuvent porter les mêmes nom et prénom.
3.3 Les attributs doivent être atomiques
Dans le modèle relationnel, un attribut doit contenir une valeur élémentaire et non une liste ou un groupe de valeurs.
Mauvais exemple
- CLIENT(
NumClient, NomClient, Telephones)
Si Telephones contient :
- « 01 45 00 00 00 / 06 11 22 33 44 »
alors l’attribut n’est pas atomique.
Pourquoi est-ce un problème ?
Parce qu’on ne peut pas manipuler correctement une liste dans une cellule relationnelle :
- recherche difficile ;
- tri impossible de manière fiable ;
- mise à jour imprécise ;
- violation de la logique relationnelle.
3.4 Les attributs d’une relation décrivent la clé, toute la clé, rien que la clé
Cette idée est au cœur de la normalisation.
Dans une relation, les attributs non clés doivent dépendre correctement de la clé primaire :
- pas seulement d’une partie de la clé ;
- pas d’un autre attribut non clé.
C’est ce qui permet d’éviter les anomalies.
3.5 Les liens entre relations doivent être cohérents
Les clés étrangères assurent la cohérence entre les relations.
Exemple :
- CLIENT(
NumClient, NomClient) - COMMANDE(
NumCommande, DateCommande, NumClient)
Ici, NumClient dans COMMANDE doit correspondre à une valeur existante dans CLIENT.
Cette logique garantit l’intégrité référentielle. Même si sa mise en œuvre technique sera surtout exploitée lors de la manipulation des données, sa vérification commence dès la conception du schéma.
4. Pourquoi normaliser un schéma relationnel ?
La normalisation est une méthode de structuration qui vise à produire un schéma :
- sans redondances inutiles ;
- sans anomalies de mise à jour ;
- plus cohérent avec les règles de gestion.
4.1 Les problèmes d’un schéma non normalisé
Un schéma mal normalisé crée trois grands types d’anomalies.
A. Anomalie d’insertion
On ne peut pas enregistrer une information sans en créer une autre artificiellement.
Exemple : si les données client et commande sont dans une seule relation, on ne peut pas enregistrer un nouveau client tant qu’il n’a pas passé de commande.
B. Anomalie de mise à jour
Une information répétée à plusieurs endroits doit être modifiée partout.
Exemple : si la ville du client est répétée sur chaque commande, un changement d’adresse impose plusieurs mises à jour.
C. Anomalie de suppression
La suppression d’une ligne fait disparaître involontairement une autre information utile.
Exemple : supprimer la dernière commande d’un client peut faire disparaître aussi la fiche du client.
4.2 La logique de la normalisation
Normaliser, c’est décomposer intelligemment les relations pour que chaque donnée soit stockée au bon endroit.
Le but n’est pas de multiplier les tables sans raison. Le but est de faire en sorte que :
- chaque relation ait un sens clair ;
- chaque attribut soit à sa place ;
- les dépendances fonctionnelles soient respectées.
5. Les dépendances fonctionnelles : base du raisonnement
Pour apprécier la normalisation, il faut raisonner à partir des dépendances fonctionnelles.
Une dépendance fonctionnelle signifie qu’une donnée détermine une autre.
Notation :
A -> B
signifie : si l’on connaît A, alors on connaît B de manière unique.
Exemple
Dans une relation CLIENT :
NumClient -> NomClient, Ville
Cela signifie qu’un numéro de client détermine son nom et sa ville.
Exemple avec clé composée
Dans une relation LIGNE_COMMANDE :
- (
NumCommande,RefProduit) -> Quantite
La quantité commandée dépend du couple :
- numéro de commande ;
- référence produit.
Elle ne dépend ni du seul numéro de commande, ni de la seule référence produit.
6. Apprécier la normalisation jusqu’à la troisième forme normale
Le programme précise que la normalisation est étudiée jusqu’à la troisième forme normale, sans exiger de distinguer formellement 1FN, 2FN et 3FN dans tous les détails. En pratique, il faut surtout être capable de dire si un schéma est normalisé ou non, et de le justifier.
Nous allons néanmoins présenter progressivement la logique.
6.1 Première exigence : des attributs atomiques et une structure relationnelle correcte
Un schéma ne peut pas être considéré comme normalisé si des attributs contiennent :
- des listes ;
- des groupes répétés ;
- des valeurs multiples dans une même cellule.
Exemple non satisfaisant
- ETUDIANT(
NumEtudiant, Nom, Prenom, NotesUE)
Si NotesUE contient plusieurs notes, l’attribut n’est pas atomique.
Correction possible
- ETUDIANT(
NumEtudiant, Nom, Prenom) - RESULTAT(
NumEtudiant,CodeUE, Note)
Ici, chaque donnée est élémentaire.
6.2 Deuxième exigence : pas de dépendance partielle à une clé composée
Lorsqu’une relation a une clé primaire composée, aucun attribut non clé ne doit dépendre seulement d’une partie de cette clé.
Exemple
Relation :
- INSCRIPTION(
NumEtudiant,CodeUE, NomEtudiant, LibelleUE, Note)
Supposons les dépendances suivantes :
NumEtudiant -> NomEtudiantCodeUE -> LibelleUE- (
NumEtudiant,CodeUE) -> Note
Le problème est clair :
NomEtudiantdépend seulement deNumEtudiant;LibelleUEdépend seulement deCodeUE.
Ils ne dépendent donc pas de toute la clé composée (NumEtudiant, CodeUE).
Conséquence
La relation n’est pas correctement normalisée.
Décomposition correcte
- ETUDIANT(
NumEtudiant, NomEtudiant) - UE(
CodeUE, LibelleUE) - INSCRIPTION(
NumEtudiant,CodeUE, Note)
Cette décomposition supprime les dépendances partielles.
6.3 Troisième exigence : pas de dépendance transitive
Une dépendance transitive apparaît lorsqu’un attribut non clé dépend d’un autre attribut non clé, lui-même dépendant de la clé.
Exemple
- SALARIE(
Matricule, NomSalarie, CodeService, NomService)
Dépendances :
Matricule -> NomSalarie, CodeServiceCodeService -> NomService
Donc indirectement :
Matricule -> NomService
Mais NomService ne dépend pas directement du salarié : il dépend du service.
Pourquoi est-ce gênant ?
Parce que le nom du service sera répété pour tous les salariés du même service.
Décomposition correcte
- SERVICE(
CodeService, NomService) - SALARIE(
Matricule, NomSalarie, CodeService)
On supprime ainsi la dépendance transitive.
7. Méthode pratique pour vérifier un schéma relationnel
Voici une méthode simple et rigoureuse.
Étape 1 : identifier la clé primaire de chaque relation
Il faut d’abord savoir ce qui identifie une occurrence.
Questions à se poser :
- quelle est la clé primaire ?
- est-elle simple ou composée ?
- identifie-t-elle vraiment chaque ligne ?
Étape 2 : lister les dépendances fonctionnelles utiles
Pour chaque relation, repérez :
- ce que la clé détermine ;
- si certains attributs dépendent seulement d’une partie de la clé ;
- si certains attributs dépendent d’autres attributs non clés.
Étape 3 : repérer les redondances
Si une information est répétée dans de nombreuses lignes, demandez-vous :
- dépend-elle vraiment de la clé de la relation ?
- ne devrait-elle pas être placée dans une autre relation ?
Étape 4 : rechercher les anomalies possibles
Posez-vous trois questions :
- peut-on insérer une information indépendamment ?
- une mise à jour imposera-t-elle plusieurs modifications ?
- une suppression risque-t-elle d’effacer une information utile ?
Étape 5 : proposer une décomposition
Si le schéma n’est pas satisfaisant :
- créer des relations distinctes pour les entités stables ;
- conserver les associations nécessaires via les clés étrangères ;
- vérifier que la nouvelle structure respecte mieux les dépendances fonctionnelles.
8. Étude complète d’un exemple de normalisation
Prenons une relation unique issue d’une conception trop intuitive.
Schéma initial
- VENTE(
NumCommande, DateCommande, NumClient, NomClient, VilleClient, RefProduit, LibelleProduit, PrixUnitaire, Quantite)
Dépendances fonctionnelles supposées
NumCommande -> DateCommande, NumClientNumClient -> NomClient, VilleClientRefProduit -> LibelleProduit, PrixUnitaire- (
NumCommande,RefProduit) -> Quantite
Analyse
La relation mélange :
- les commandes ;
- les clients ;
- les produits ;
- les lignes de commande.
Cela entraîne des répétitions :
- le nom du client est répété pour chaque ligne de commande ;
- la ville du client aussi ;
- le libellé du produit et son prix sont répétés dans chaque commande où il apparaît.
Anomalies
- mise à jour : si un produit change de libellé, il faut modifier plusieurs lignes ;
- insertion : impossible d’ajouter un produit sans commande ;
- suppression : supprimer la dernière ligne d’un produit peut faire disparaître l’information produit.
Décomposition proposée
- CLIENT(
NumClient, NomClient, VilleClient) - PRODUIT(
RefProduit, LibelleProduit, PrixUnitaire) - COMMANDE(
NumCommande, DateCommande, NumClient) - LIGNE_COMMANDE(
NumCommande,RefProduit, Quantite)
Pourquoi cette solution est meilleure
- les données client sont stockées une seule fois ;
- les données produit sont stockées une seule fois ;
- la commande contient ses informations propres ;
- la ligne de commande gère l’association entre commande et produit.
On obtient un schéma cohérent, plus proche des objets de gestion réels.
9. Adapter un schéma relationnel au changement d’une règle de gestion
C’est la seconde grande compétence de la leçon.
Un schéma n’est jamais figé. Les règles de gestion évoluent avec l’organisation. Une base de données doit donc pouvoir être adaptée sans perdre sa cohérence.
9.1 Qu’est-ce qu’une règle de gestion ?
Une règle de gestion est une contrainte ou un principe qui décrit le fonctionnement de l’organisation.
Exemples :
- un client peut passer plusieurs commandes ;
- une commande comporte une ou plusieurs lignes ;
- un salarié appartient à un seul service ;
- un produit peut être fourni par plusieurs fournisseurs.
Quand une règle change, le schéma doit parfois être modifié.
9.2 Pourquoi une adaptation est-elle nécessaire ?
Parce qu’un schéma relationnel traduit les règles de gestion en structure de données.
Si les règles changent mais que le schéma ne change pas :
- la base ne représente plus correctement la réalité ;
- les traitements deviennent faux ;
- les données perdent en fiabilité.
10. Méthode pour adapter un schéma relationnel
Étape 1 : identifier précisément la nouvelle règle de gestion
Il faut d’abord comparer :
- l’ancienne règle ;
- la nouvelle règle.
Exemple :
- ancienne règle : « un produit est fourni par un seul fournisseur » ;
- nouvelle règle : « un produit peut être fourni par plusieurs fournisseurs ».
Ce changement n’est pas mineur : il modifie la cardinalité de la relation.
Étape 2 : repérer les relations et attributs impactés
La nouvelle règle peut affecter :
- une clé primaire ;
- une clé étrangère ;
- une relation entière ;
- la nécessité de créer une nouvelle relation.
Étape 3 : vérifier si la structure actuelle devient incohérente
On se demande :
- la relation actuelle permet-elle encore de représenter correctement la réalité ?
- crée-t-elle maintenant des répétitions ou des impossibilités ?
Étape 4 : modifier le schéma
Les adaptations les plus fréquentes sont :
- ajout d’une relation ;
- déplacement d’un attribut ;
- modification d’une clé ;
- remplacement d’un lien direct par une relation d’association.
Étape 5 : revérifier la cohérence relationnelle
Après adaptation, il faut à nouveau contrôler :
- les clés primaires ;
- les clés étrangères ;
- les dépendances fonctionnelles ;
- la normalisation.
11. Cas d’adaptation n°1 : passage d’une relation 1,N à une relation N,N
Situation initiale
Règle de gestion :
- « Un produit est fourni par un seul fournisseur. »
Schéma :
- FOURNISSEUR(
NumFournisseur, NomFournisseur) - PRODUIT(
RefProduit, LibelleProduit, NumFournisseur)
Ici, NumFournisseur dans PRODUIT suffit.
Nouvelle règle de gestion
- « Un produit peut être fourni par plusieurs fournisseurs. »
Le schéma initial ne convient plus, car un seul attribut NumFournisseur dans PRODUIT ne permet qu’un seul fournisseur par produit.
Adaptation
Il faut créer une relation d’association :
- FOURNISSEUR(
NumFournisseur, NomFournisseur) - PRODUIT(
RefProduit, LibelleProduit) - FOURNIR(
NumFournisseur,RefProduit)
Pourquoi ?
Parce qu’on passe d’une relation 1,N à une relation N,N.
Si l’on avait tenté de conserver plusieurs fournisseurs dans un seul attribut, on aurait violé l’atomicité et la logique relationnelle.
12. Cas d’adaptation n°2 : déplacement d’un attribut devenu indépendant
Situation initiale
- SALARIE(
Matricule, NomSalarie, CodeService, NomService)
Tant que l’on ne s’interroge pas, on peut croire ce schéma acceptable.
Nouvelle analyse de la règle de gestion
On précise :
- « Un service possède un code et un nom propres, indépendants des salariés qui y sont affectés. »
Cette règle révèle que NomService dépend de CodeService, pas du salarié.
Adaptation
- SERVICE(
CodeService, NomService) - SALARIE(
Matricule, NomSalarie, CodeService)
Intérêt
On isole une entité de gestion autonome.
13. Cas d’adaptation n°3 : ajout d’une nouvelle règle sur les coordonnées multiples
Situation initiale
- CLIENT(
NumClient, NomClient, Telephone)
Nouvelle règle de gestion
- « Un client peut avoir plusieurs numéros de téléphone. »
Le schéma initial n’est plus adapté.
Mauvaise solution
Conserver un seul attribut Telephone contenant plusieurs valeurs.
Bonne solution
- CLIENT(
NumClient, NomClient) - TELEPHONE_CLIENT(
NumClient,Telephone)
Selon le contexte, la clé primaire de TELEPHONE_CLIENT peut être composée de (NumClient, Telephone).
Pourquoi cette solution est correcte
- chaque numéro devient une donnée atomique ;
- la pluralité est gérée relationnellement ;
- la structure reste cohérente.
14. Cas d’adaptation n°4 : apparition d’un nouvel objet de gestion
Situation initiale
- COMMANDE(
NumCommande, DateCommande, NumClient, NomClient)
Nouvelle règle de gestion
- « Le client possède désormais un niveau de fidélité et une date d’adhésion au programme relationnel. »
Ce changement peut révéler que le client doit être traité comme une entité autonome, si ce n’était pas déjà fait.
Adaptation
- CLIENT(
NumClient, NomClient, NiveauFidelite, DateAdhesion) - COMMANDE(
NumCommande, DateCommande, NumClient)
Logique
Dès qu’un ensemble d’attributs décrit un objet de gestion stable, il devient souvent pertinent d’en faire une relation propre.
15. Comment justifier qu’un schéma doit être modifié ?
Dans un devoir ou une étude de cas, il ne suffit pas de proposer une nouvelle structure. Il faut justifier.
Une bonne justification repose sur quatre idées.
15.1 La nouvelle règle de gestion n’est plus représentable correctement
Exemple :
Le schéma initial suppose un seul fournisseur par produit. La nouvelle règle autorise plusieurs fournisseurs. Il faut donc remplacer l’attribut
NumFournisseurdans PRODUIT par une relation d’association.
15.2 Le schéma actuel crée une redondance ou une anomalie
Exemple :
Le nom du service est répété pour chaque salarié. Cela crée un risque d’incohérence en cas de changement de libellé du service.
15.3 Une dépendance fonctionnelle n’est pas respectée
Exemple :
NomServicedépend deCodeServiceet non deMatricule. L’attribut doit donc être déplacé dans une relation SERVICE.
15.4 La nouvelle structure améliore la cohérence du modèle relationnel
Exemple :
La décomposition permet de respecter l’atomicité, d’éviter les dépendances transitives et de faciliter les mises à jour.
16. Étude guidée complète
Prenons un cas plus riche.
Schéma proposé
- INSCRIPTION(
NumEtudiant, NomEtudiant, CodeFormation, LibelleFormation, DateInscription, NomResponsableFormation)
Règles de gestion implicites
- un étudiant est identifié par
NumEtudiant; - une formation est identifiée par
CodeFormation; - une inscription relie un étudiant à une formation à une date donnée ;
- chaque formation a un libellé et un responsable.
Étape 1 : identifier le problème
La relation mélange :
- l’étudiant ;
- la formation ;
- l’inscription.
Étape 2 : dépendances fonctionnelles
NumEtudiant -> NomEtudiantCodeFormation -> LibelleFormation, NomResponsableFormation- (
NumEtudiant,CodeFormation) -> DateInscription
Étape 3 : diagnostic
NomEtudiant dépend seulement de NumEtudiant.
LibelleFormation et NomResponsableFormation dépendent seulement de CodeFormation.
Donc la relation n’est pas correctement normalisée.
Étape 4 : décomposition
- ETUDIANT(
NumEtudiant, NomEtudiant) - FORMATION(
CodeFormation, LibelleFormation, NomResponsableFormation) - INSCRIPTION(
NumEtudiant,CodeFormation, DateInscription)
Étape 5 : nouvelle règle de gestion
On ajoute :
- « Une formation peut avoir plusieurs responsables selon les années. »
Le schéma FORMATION devient insuffisant si NomResponsableFormation dépend aussi d’une année.
Nouvelle adaptation
- FORMATION(
CodeFormation, LibelleFormation) - RESPONSABILITE_FORMATION(
CodeFormation,Annee, NomResponsableFormation)
On voit ici que l’évolution des règles de gestion entraîne une évolution du schéma.
17. Erreurs fréquentes à éviter
17.1 Confondre table pratique et relation bien conçue
Une table unique peut sembler plus simple au départ, mais elle devient vite ingérable. La simplicité apparente n’est pas une bonne conception.
17.2 Multiplier les attributs répétitifs
Exemple :
- Telephone1, Telephone2, Telephone3
Cette solution est souvent le signe qu’une pluralité de valeurs n’a pas été correctement modélisée.
17.3 Laisser dans une relation des attributs qui dépendent d’autre chose que de la clé
C’est le cœur des problèmes de normalisation.
17.4 Adapter sans revérifier les clés
Quand une règle change, il faut toujours se demander :
- la clé primaire reste-t-elle pertinente ?
- faut-il une clé composée ?
- faut-il créer une relation d’association ?
18. Mémo de méthode
Pour vérifier un schéma relationnel
- Identifier chaque relation.
- Repérer la clé primaire.
- Vérifier que les attributs sont atomiques.
- Rechercher les dépendances fonctionnelles.
- Vérifier que les attributs non clés dépendent de la clé, de toute la clé, et pas d’un autre attribut non clé.
- Détecter les redondances et anomalies.
Pour adapter un schéma à une nouvelle règle de gestion
- Reformuler précisément la nouvelle règle.
- Identifier les relations impactées.
- Vérifier si le schéma actuel permet encore de représenter la réalité.
- Modifier la structure : ajout, suppression, décomposition ou nouvelle relation d’association.
- Revérifier la cohérence du modèle relationnel.
19. Points à retenir
- La structuration des données est une composante essentielle de la gestion des données du système d’information.
- Dans une base de données relationnelle, un schéma doit respecter les règles du modèle relationnel.
- Une relation doit être cohérente, ses occurrences doivent être identifiables, et ses attributs doivent être atomiques.
- La normalisation vise à réduire les redondances et à éviter les anomalies d’insertion, de mise à jour et de suppression.
- Pour apprécier un schéma jusqu’à la troisième forme normale, il faut raisonner à partir des dépendances fonctionnelles.
- Un attribut non clé ne doit pas dépendre seulement d’une partie d’une clé composée, ni d’un autre attribut non clé.
- Quand une règle de gestion change, le schéma relationnel doit parfois être adapté : ajout d’une relation, déplacement d’un attribut, création d’une relation d’association, modification de clé.
- Un bon schéma est un schéma fidèle à la réalité de gestion, cohérent, évolutif et maintenable.
Conclusion
Structurer une base de données ne consiste pas seulement à créer des tables. Il faut construire un schéma relationnel qui reflète correctement les objets de gestion et leurs liens. La vérification des règles du modèle relationnel et l’appréciation de la normalisation permettent d’éviter de nombreux dysfonctionnements futurs.
L’enjeu est très concret : une mauvaise structure produit de mauvaises données, et de mauvaises données dégradent tout le système d’information. À l’inverse, une structure bien pensée facilite les requêtes, les mises à jour, les contrôles et l’évolution du système.
Dans la suite logique du programme, cette maîtrise de la structure relationnelle servira directement à la manipulation des données, notamment pour écrire des requêtes fiables et pertinentes dans un SGBDR.