SIG DCG (UE8) : Bases de données, SQL et processus

Tout le programme DCG, déjà prêt à réviser

Fiches, quiz, flashcards et infographies déjà créés, avec un tuteur IA. Paiement unique, dès 29 €.

Voir les packs DCG

Dépendances fonctionnelles et normalisation d'un schéma relationnel

À retenir

Cadre programme : DCG, programme 2025 (arrêté du 4 août 2025, première session 2027), UE 8 « Systèmes d'information de gestion », partie 2 « Gérer des données du système d'information », sous-partie 2.1 « Structurer et manipuler des données via les bases de données », rubrique 2.1.1 « Structurer une base de données ».

Pourquoi c'est central à l'examen : le sujet fournit une table « à plat » ou un schéma et demande s'il est normalisé, en le justifiant, puis de le corriger ou de l'adapter à une nouvelle règle de gestion. La justification repose sur les dépendances fonctionnelles : sans elles, la réponse reste une impression.

01Pourquoi normaliser : les anomalies d'une table à plat

Un service commercial note ses bons de commande dans une seule table. Chaque ligne reprend tout : le client, la commande, le produit.

À retenir

BON (NumBon, DateBon, NumClient, NomClient, VilleClient, RefProduit, Designation, PrixHT, Quantite)

La clé primaire est le couple (NumBon, RefProduit).

NumBonDateBonNumClientNomClientVilleClientRefProduitDesignationPrixHTQuantite
1012026-01-121Boulangerie LemoineLyonP01Ramette papier A44.5020
1012026-01-121Boulangerie LemoineLyonP02Classeur à levier3.0010
1022026-01-203Garage PerrinLilleP03Clavier sans fil25.002
1032026-02-031Boulangerie LemoineLyonP01Ramette papier A44.5010
1032026-02-031Boulangerie LemoineLyonP04Souris optique12.005
1042026-02-104Mairie de ToursToursP05Chaise de bureau90.004

Cette table fonctionne tant que personne n'y touche, mais elle cumule trois anomalies.

1.1 Anomalie de mise à jour (incohérence)

Le client 1 apparaît sur 4 lignes, avec sa ville recopiée à chaque fois. Un employé corrige la ville sur une seule ligne.

UPDATE BON
SET VilleClient = 'Villeurbanne'
WHERE NumBon = 101 AND RefProduit = 'P01';

On interroge ensuite les villes connues pour le client 1.

SELECT DISTINCT NumClient, VilleClient
FROM BON
WHERE NumClient = 1
ORDER BY VilleClient;
NumClientVilleClient
1Lyon
1Villeurbanne

La base affirme désormais que le même client habite à deux endroits : elle est devenue incohérente. Cette incohérence vient de la redondance : la même information est stockée plusieurs fois.

1.2 Anomalie d'insertion

On veut enregistrer un nouveau client avant sa première commande, ou un nouveau produit avant sa première vente. C'est impossible : la clé (NumBon, RefProduit) doit être renseignée, et les autres colonnes aussi.

INSERT INTO BON (NumClient, NomClient, VilleClient)
VALUES (5, 'Atelier Duval', 'Lyon');

Le SGBDR refuse la ligne : la table oblige à inventer un bon et un produit fictifs pour enregistrer un simple client.

1.3 Anomalie de suppression (perte d'information)

La mairie de Tours n'a passé qu'une commande, la 104. On la supprime parce qu'elle a été annulée.

DELETE FROM BON
WHERE NumBon = 104;
SELECT COUNT(*) AS NbLignesMairie
FROM BON
WHERE NumClient = 4;
NbLignesMairie
0

En supprimant la commande, on a aussi perdu le client (nom, ville) et le produit P05 (désignation, prix) : une information a disparu sans que personne l'ait voulu.

À retenir

La normalisation est la démarche qui supprime ces trois anomalies en décomposant la table en plusieurs relations, chacune ne décrivant qu'un seul sujet.

02La dépendance fonctionnelle

2.1 Définition

Il y a dépendance fonctionnelle de X vers Y, notée X → Y, lorsque la valeur de X détermine une seule valeur de Y. On lit « X détermine Y » ou « Y dépend fonctionnellement de X ». X et Y peuvent être un ou plusieurs attributs.

Exemples sur BON :

  • NumClient → NomClient : un numéro de client désigne un seul nom ;
  • RefProduit → Designation, PrixHT : une référence désigne une désignation et un prix ;
  • NumBon → DateBon, NumClient : un numéro de bon désigne une seule date et un seul client ;
  • (NumBon, RefProduit) → Quantite : un couple bon et produit désigne une seule quantité.

Un contre-exemple : NomClient → NumClient est faux si deux clients peuvent porter le même nom. Une dépendance fonctionnelle est une règle de gestion, pas une propriété des données observées : elle ne se prouve pas en regardant quelques lignes. Les données peuvent seulement montrer qu'elle n'est pas respectée : après la mise à jour du paragraphe 1.1, la table affiche deux villes pour le client 1. La règle NumClient → VilleClient reste vraie ; ce sont les données qui la violent, et cette incohérence est le symptôme de la redondance.

2.2 Dépendance fonctionnelle élémentaire

Une dépendance X → Y est élémentaire quand aucune partie de X ne suffit à déterminer Y. Si X est un attribut unique, elle est élémentaire d'office.

  • (NumBon, RefProduit) → Quantite est élémentaire : ni NumBon seul, ni RefProduit seul ne donne la quantité.
  • (NumBon, RefProduit) → Designation est vraie mais non élémentaire : RefProduit seul détermine déjà Designation. On dit que Designation dépend d'une partie de la clé.

2.3 Dépendance fonctionnelle directe

Une dépendance X → Z est directe quand elle ne s'obtient pas par transitivité, c'est-à-dire qu'il n'existe pas d'attribut intermédiaire Y tel que X → Y et Y → Z.

  • NumBon → NumClient et NumClient → NomClient. Alors NumBon → NomClient est vraie, mais non directe : elle passe par NumClient.
  • NumClient → NomClient est directe.

2.4 Récapitulatif pour BON

DépendanceÉlémentaire ?Directe ?Commentaire
NumBon → DateBonouiouiInformations du bon
NumBon → NumClientouiouiInformations du bon
NumClient → NomClient, VilleClientouiouiInformations du client
NumBon → NomClientouinonTransitive via NumClient
RefProduit → Designation, PrixHTouiouiInformations du produit
(NumBon, RefProduit) → Designationnonsans objetDépend d'une partie de la clé (le caractère direct ne s'examine que pour les dépendances élémentaires)
(NumBon, RefProduit) → QuantiteouiouiDépend de toute la clé

Dans un schéma bien construit, ce sont les dépendances élémentaires et directes qui structurent les relations.

2.5 Lien avec la clé primaire

La clé primaire d'une relation est un ensemble minimal d'attributs qui détermine tous les autres. Dans BON, (NumBon, RefProduit) détermine tout : le bon donne la date et le client (et, à travers lui, le nom et la ville), le produit donne la désignation et le prix, et le couple donne la quantité.

03La normalisation

3.1 Le critère à connaître

Une relation est normalisée lorsque ses attributs sont à la fois :

  1. atomiques : une seule valeur par case, sans liste ni groupe répété ;
  2. dépendants de toute la clé : aucune dépendance d'un attribut non clé vers une partie seulement de la clé ;
  3. dépendants uniquement de la clé : aucune dépendance d'un attribut non clé vers un autre attribut non clé.

On retient la formule : « la clé, toute la clé, rien que la clé ». Ces trois conditions correspondent aux trois premières formes normales. Le programme limite l'étude à la 3e forme normale et n'exige pas de les distinguer : il demande de dire si le schéma est normalisé ou non et de le justifier.

3.2 Méthode de justification

  1. Lister les dépendances fonctionnelles à partir des règles de gestion de l'énoncé (pas des seules données).
  2. Identifier la clé primaire.
  3. Chercher les écarts : un attribut non clé qui dépend d'une partie de la clé ? d'un autre attribut non clé ? une case contenant plusieurs valeurs ?
  4. Conclure : « non normalisé, car ... » en citant la dépendance fautive et l'anomalie qui en résulte. Ou « normalisé, car tous les attributs non clés dépendent de la clé entière et d'elle seule ».

3.3 Méthode de décomposition

Pour chaque dépendance fautive X → Y :

  1. créer une nouvelle relation (X, Y) dont la clé primaire est X ;
  2. retirer Y de la relation d'origine ;
  3. conserver X dans la relation d'origine, où il devient clé étrangère vers la nouvelle relation ;
  4. recommencer jusqu'à ce que plus aucune dépendance fautive ne subsiste.

Appliquée à BON, la décomposition donne :

À retenir

CLIENT (NumClient, NomClient, VilleClient)

PRODUIT (RefProduit, Designation, PrixHT)

COMMANDE (NumBon, DateBon, #NumClient)

LIGNE (#NumBon, #RefProduit, Quantite)

NumClientNomClientVilleClient
1Boulangerie LemoineLyon
3Garage PerrinLille
4Mairie de ToursTours
RefProduitDesignationPrixHT
P01Ramette papier A44.50
P02Classeur à levier3.00
P03Clavier sans fil25.00
P04Souris optique12.00
P05Chaise de bureau90.00
NumBonDateBonNumClient
1012026-01-121
1022026-01-203
1032026-02-031
1042026-02-104
NumBonRefProduitQuantite
101P0120
101P0210
102P032
103P0110
103P045
104P054

La décomposition ne perd aucune information : en rapprochant les quatre relations par leurs clés (jointures du cours 16), on reconstitue exactement la table BON d'origine.

Les trois anomalies ont disparu : la ville d'un client se corrige une seule fois, on peut créer un client ou un produit sans commande, et la suppression d'une commande laisse intacts le client et le produit.

3.4 Ne pas confondre normalisé et morcelé

La normalisation sépare des sujets (clients, produits, commandes), pas des attributs pris au hasard. Elle a un coût : retrouver une information demande des jointures. Le bon niveau est celui où chaque fait n'est stocké qu'une seule fois.

3.5 Les données calculées

Un attribut que l'on peut recalculer à partir d'autres (le montant d'une ligne = Quantite × PrixHT, un âge à partir de la date de naissance) est une redondance : si l'une des sources change, la valeur stockée devient fausse. On ne le stocke pas, on le calcule dans la requête (cours 15).

Exception à justifier par une règle de gestion : le prix figé au moment de la commande. Si le prix facturé doit rester celui du jour de la commande alors que le prix du catalogue évolue, il faut stocker un prix unitaire dans la ligne de commande. Ce n'est plus une redondance : il dépend alors de la clé entière de la ligne (cas 2 ci-dessous).

04Collecte et sélection des données

Avant de concevoir les relations, il faut décider quelles données collecter. Partir du besoin d'information, pas des seules données disponibles.

ÉtapeQuestionExemple pour « chiffre d'affaires mensuel par client »
1. BesoinQuelle décision ou quel document ?Suivre les clients qui comptent
2. Résultat attenduQuelles informations en sortie ?Client, mois, montant
3. Données sourcesQuelles données élémentaires faut-il ?Client, date de commande, produit, quantité, prix
4. Données calculéesLesquelles se déduisent ?Montant d'une ligne, total du mois : non stockés
5. IdentifiantsComment identifier chaque objet ?NumClient, NumCommande, RefProduit
6. GranularitéLes données sont-elles atomiques ?Date en un champ, ville distincte de l'adresse
7. SélectionChaque donnée est-elle utile ?On n'ajoute pas la couleur préférée du dirigeant

Collecter uniquement les données nécessaires limite aussi le risque lié aux données personnelles (cours 08).

05Adapter un schéma à une nouvelle règle de gestion

Les règles de gestion évoluent : un client peut désormais avoir plusieurs adresses, un produit plusieurs fournisseurs. Le schéma doit suivre sans perdre les données existantes.

5.1 Méthode

  1. Formuler l'ancienne et la nouvelle règle avec « un X a au plus un / plusieurs Y ».
  2. Repérer la dépendance fonctionnelle qui change.
  3. Choisir la modification : ajout d'un attribut, d'une relation, d'une clé étrangère ou d'une table de liaison.
  4. Contrôler la clé primaire, l'intégrité référentielle et la normalisation du nouveau schéma.
  5. Mesurer l'impact sur les données existantes (que devient la colonne supprimée ?) et sur les requêtes.

5.2 Les transformations types

Évolution de la règleAvantAprès
Un attribut devient multiple pour une entité (plusieurs adresses par client)Un seul attribut dans CLIENTNouvelle relation ADRESSE (NumAdresse, ..., #NumClient) ; clé étrangère du côté « plusieurs »
Un lien « un à plusieurs » devient « plusieurs à plusieurs » (plusieurs fournisseurs par produit)PRODUIT (..., #NumFournisseur)Table de liaison PROPOSE (#RefProduit, #NumFournisseur, PrixAchatHT) ; la clé étrangère quitte PRODUIT
Une valeur doit être figée dans le temps (prix à la date de commande)Prix dans PRODUIT seulementAjouter le prix à LIGNE_COMMANDE
Un lien devient obligatoire ou facultatifClé étrangère non nulleClé étrangère acceptant NULL (ou l'inverse)

Exemples corrigés

Cas 1 : le temps passé par les collaborateurs d'un cabinet

Énoncé. Un cabinet de comptabilité enregistre le temps passé sur les dossiers dans une table unique.

À retenir

SAISIE_TEMPS (CodeSalarie, NomSalarie, CodeGrade, TauxHoraireGrade, CodeDossier, NomDossier, DateSaisie, HeuresSaisies)

Règles de gestion : un salarié a un nom et un grade ; un grade correspond à un taux horaire interne ; un dossier a un nom ; un salarié peut travailler le même jour ou des jours différents sur plusieurs dossiers, et plusieurs fois sur le même dossier à des dates différentes ; la saisie d'un salarié sur un dossier un jour donné porte un nombre d'heures.

CodeSalarieNomSalarieCodeGradeTauxHoraireGradeCodeDossierNomDossierDateSaisieHeuresSaisies
S1DurandG140D1Atelier Duval2026-03-026
S1DurandG140D2Pharmacie Roux2026-03-034
S2MorinG260D1Atelier Duval2026-03-023
S2MorinG260D3Mairie de Tours2026-03-048
S3LeroyG260D2Pharmacie Roux2026-03-055
S3LeroyG260D2Pharmacie Roux2026-03-067

Questions.

  1. Lister les dépendances fonctionnelles et identifier la clé primaire.
  2. Le schéma est-il normalisé ? Justifier.
  3. Proposer un schéma normalisé.
  4. Le taux horaire du grade G2 change : combien de lignes faut-il modifier avant, puis après normalisation ?
  5. Conclure par un avis argumenté au responsable du cabinet.

Corrigé.

  1. Dépendances (règles de gestion de l'énoncé) :

    • CodeSalarie → NomSalarie, CodeGrade ;
    • CodeGrade → TauxHoraireGrade ;
    • CodeDossier → NomDossier ;
    • (CodeSalarie, CodeDossier, DateSaisie) → HeuresSaisies.

    La clé primaire est (CodeSalarie, CodeDossier, DateSaisie) : c'est le plus petit groupe qui détermine tous les autres attributs.

  2. Le schéma n'est pas normalisé, pour trois raisons.

    • NomSalarie et CodeGrade dépendent de CodeSalarie seul, c'est-à-dire d'une partie de la clé.
    • NomDossier dépend de CodeDossier seul, une autre partie de la clé.
    • TauxHoraireGrade dépend de CodeGrade, un attribut non clé : c'est une dépendance transitive (CodeSalarie → CodeGrade → TauxHoraireGrade).

    Conséquence concrète : le nom du dossier D2 est recopié sur trois lignes, le taux du grade G2 sur quatre.

  3. Schéma normalisé :

À retenir

SALARIE (CodeSalarie, NomSalarie, #CodeGrade)

GRADE (CodeGrade, TauxHoraire)

DOSSIER (CodeDossier, NomDossier)

SAISIE (#CodeSalarie, #CodeDossier, DateSaisie, HeuresSaisies)

CodeGradeTauxHoraire
G140
G260
CodeSalarieNomSalarieCodeGrade
S1DurandG1
S2MorinG2
S3LeroyG2
CodeDossierNomDossier
D1Atelier Duval
D2Pharmacie Roux
D3Mairie de Tours
CodeSalarieCodeDossierDateSaisieHeuresSaisies
S1D12026-03-026
S1D22026-03-034
S2D12026-03-023
S2D32026-03-048
S3D22026-03-055
S3D22026-03-067

Chaque attribut non clé dépend de la clé entière de sa relation et d'elle seule. La clé de SAISIE est formée de trois attributs : les deux clés étrangères vers SALARIE et DOSSIER, plus la date.

  1. Avant normalisation, le taux de G2 figure sur 4 lignes : il faut toutes les modifier, sous peine de laisser des taux différents pour un même grade. Après normalisation, il n'est écrit qu'une fois, dans GRADE : 1 ligne à modifier.

  2. Conclusion.

À retenir

Avis au responsable du cabinet. La table actuelle recopie le nom du dossier, le nom du salarié et le taux de son grade sur chaque saisie. Une révision des taux obligerait à corriger 4 lignes pour un seul grade, avec un risque d'oubli. Je recommande le schéma en quatre relations : chaque information n'y figure qu'une fois, un nouveau salarié ou un nouveau dossier peut être créé avant toute saisie, et le coût de la saisie reste calculable en rapprochant les relations. Le prix à payer est l'écriture de jointures, mais c'est un coût unique contre une vigilance permanente.

Cas 2 : l'entreprise de fournitures change ses règles de gestion

Énoncé. Le schéma de l'entreprise du fil rouge est :

À retenir

CATEGORIE (CodeCat, LibCat)

PRODUIT (RefProduit, Designation, PrixHT, Stock, #CodeCat)

CLIENT (NumClient, NomClient, Ville, Courriel)

COMMANDE (NumCommande, DateCommande, #NumClient)

LIGNE_COMMANDE (#NumCommande, #RefProduit, Quantite)

Trois nouvelles règles de gestion sont décidées.

  • R1 : un client peut avoir plusieurs adresses de livraison ; chaque commande est livrée à une seule adresse choisie parmi celles du client.
  • R2 : le prix facturé sur une commande est celui du jour de la commande, même si le prix du catalogue change ensuite.
  • R3 : l'entreprise veut enregistrer ses fournisseurs : un produit peut être fourni par plusieurs fournisseurs, chacun avec son prix d'achat, et un fournisseur fournit plusieurs produits.

Questions. Adapter le schéma pour chaque règle en justifiant les choix, puis conclure sur l'impact de R2 pour la direction financière.

Corrigé.

  • R1. Une adresse appartient à un seul client, mais un client en a plusieurs : lien « un à plusieurs ». On crée ADRESSE_LIVRAISON (NumAdresse, Rue, CodePostal, Ville, #NumClient), la clé étrangère étant du côté « plusieurs ». Une commande est livrée à une seule adresse : on ajoute #NumAdresse dans COMMANDE (une commande a une adresse, une adresse peut servir à plusieurs commandes). Comme chaque adresse appartient à un seul client (NumAdresse → NumClient), conserver #NumClient dans COMMANDE créerait une dépendance transitive NumCommande → NumAdresse → NumClient : on retire #NumClient de COMMANDE, le client se retrouve par l'adresse de livraison.
  • R2. Le prix devient une information de la ligne de commande, car il dépend du couple (commande, produit). Schéma : LIGNE_COMMANDE (#NumCommande, #RefProduit, Quantite, PrixUnitaireHT). Le prix du catalogue reste dans PRODUIT ; à la création de la ligne, il y est copié. Ce n'est pas une redondance fautive, car les deux valeurs peuvent légitimement différer dans le temps. Sans cette modification, un changement de prix dans PRODUIT modifierait rétroactivement la valeur de toutes les commandes passées.
  • R3. Le lien entre produits et fournisseurs est « plusieurs à plusieurs » : on crée FOURNISSEUR (NumFournisseur, NomFournisseur) et la table de liaison PROPOSE (#RefProduit**, #NumFournisseur, PrixAchatHT)**. Aucune clé fournisseur ne doit être placée dans PRODUIT : elle ne pourrait désigner qu'un seul fournisseur. Le prix d'achat dépend du couple (produit, fournisseur) : il va dans la liaison.

Schéma final :

À retenir

CATEGORIE (CodeCat, LibCat)

PRODUIT (RefProduit, Designation, PrixHT, Stock, #CodeCat)

FOURNISSEUR (NumFournisseur, NomFournisseur)

PROPOSE (#RefProduit, #NumFournisseur, PrixAchatHT)

CLIENT (NumClient, NomClient, Courriel)

ADRESSE_LIVRAISON (NumAdresse, Rue, CodePostal, Ville, #NumClient)

COMMANDE (NumCommande, DateCommande, #NumAdresse)

LIGNE_COMMANDE (#NumCommande, #RefProduit, Quantite, PrixUnitaireHT)

La colonne Ville quitte CLIENT, puisque les villes sont désormais portées par les adresses, et #NumClient quitte COMMANDE, puisque le client se déduit de l'adresse de livraison. Chaque relation est normalisée : les attributs non clés dépendent de la clé entière et d'elle seule. Ce schéma adapté ne vaut que pour cet exercice : les cours 15 à 19 interrogent la base du fil rouge dans sa version d'origine (cours 13), où CLIENT garde Ville et COMMANDE garde #NumClient.

Impact chiffré de R2. Le P01 (ramette) est à 4,50 € dans le catalogue. La commande 101 contient 20 ramettes P01 et 10 classeurs P02 à 3,00 €. Son montant hors taxes vaut 120 € avec les prix actuels. Si le catalogue passe la ramette à 5,00 €, ce même calcul, fondé sur le catalogue et non sur les prix figés, donnerait 130 € : la commande de janvier changerait de valeur en avril.

À retenir

Note à la direction financière. L'ajout d'un prix unitaire dans chaque ligne de commande est nécessaire : sans lui, une hausse du catalogue réécrirait l'historique et le chiffre d'affaires des mois passés. Il coûte une colonne de plus à renseigner à chaque ligne, mais il garantit que les factures déjà émises et les statistiques des périodes closes restent stables.

Vocabulaire essentiel

TermeDéfinition
RedondanceInformation stockée plusieurs fois
Anomalie de mise à jourModification faite en un endroit seulement, base incohérente
Anomalie d'insertionImpossibilité d'enregistrer une information sans une autre
Anomalie de suppressionPerte d'une information en supprimant une autre
Dépendance fonctionnelle (X → Y)La valeur de X détermine une seule valeur de Y
Dépendance élémentaireAucune partie de X ne suffit à déterminer Y
Dépendance directeNon obtenue par transitivité
TransitivitéX → Y et Y → Z, donc X → Z de manière indirecte
NormalisationDécomposition d'une relation pour supprimer redondances et anomalies
Table de liaisonRelation dont la clé est formée de deux clés étrangères

Points clés à retenir

  1. Une table à plat produit trois anomalies : de mise à jour, d'insertion, de suppression.
  2. Une dépendance fonctionnelle est une règle de gestion ; les données peuvent la réfuter, pas la prouver.
  3. Elle est élémentaire si aucune partie de la source ne suffit, directe si elle ne passe pas par un intermédiaire.
  4. Un schéma est normalisé quand chaque attribut non clé dépend de la clé, toute la clé, rien que la clé.
  5. Pour justifier : lister les dépendances, identifier la clé, chercher les écarts, nommer la dépendance fautive.
  6. Pour décomposer : nouvelle relation (X, Y) avec X pour clé, Y retiré de l'origine, X conservé comme clé étrangère.
  7. Une donnée calculable ne se stocke pas ; exception justifiée : le prix figé à la commande.
  8. Adapter un schéma : formuler la nouvelle règle, repérer la dépendance qui change, ajouter relation ou table de liaison, contrôler l'intégrité.

Pièges fréquents

  1. Déduire une dépendance des seules données : « il n'y a qu'un nom par numéro, donc NumClient → NomClient » est insuffisant ; seule la règle de gestion fonde la dépendance.
  2. Oublier la dépendance transitive : NumBon → NomClient existe, mais passe par NumClient ; le nom du client n'a pas sa place dans COMMANDE.
  3. Croire qu'une clé composée protège contre les anomalies : les attributs qui dépendent d'une partie de la clé (Designation) en créent.
  4. Récrire « 1re, 2e, 3e forme » sans justifier : le sujet demande de dire que le schéma n'est pas normalisé et de justifier par une dépendance précise.
  5. Stocker un total ou un âge : valeur calculable, donc redondante et bientôt fausse.
  6. Perdre le lien en décomposant : on oublie de laisser la clé X dans la relation d'origine comme clé étrangère.
  7. Mettre la clé étrangère du mauvais côté lors d'une évolution de règle (adresse, fournisseur).
  8. Supprimer une colonne sans regarder ses données : avant de retirer #NumFournisseur de PRODUIT, copier ses valeurs dans la table de liaison.

Q&R pour le tuteur IA

Q : Qu'est-ce qu'une dépendance fonctionnelle ? R : X → Y signifie que la valeur de X détermine une seule valeur de Y. Par exemple, un numéro de client détermine un nom de client. C'est une règle de gestion, pas une observation sur quelques lignes.

Q : Comment justifier qu'un schéma n'est pas normalisé ? R : En citant la dépendance fautive et l'anomalie qui en résulte. Par exemple : « Designation dépend de RefProduit seul, donc d'une partie de la clé (NumBon, RefProduit) : la désignation est recopiée à chaque ligne, d'où un risque d'incohérence ».

Q : Faut-il savoir distinguer 1re, 2e et 3e forme normale ? R : Non. Le programme demande de dire si un schéma est normalisé et de le justifier. La formule « la clé, toute la clé, rien que la clé » suffit à raisonner.

Q : Pourquoi ne stocke-t-on pas le montant d'une ligne de commande ? R : Parce qu'il se calcule (quantité × prix) : le stocker crée une redondance qui devient fausse si l'une des valeurs sources change. Il se calcule dans la requête.

Q : Quand stocker un prix dans la ligne de commande ? R : Quand la règle de gestion exige de figer le prix du jour de la commande. Le prix du catalogue peut évoluer ; le prix de la ligne doit rester celui de la vente. Il dépend alors de la clé entière (commande, produit) et n'est plus une redondance fautive.

Q : Un produit peut maintenant avoir plusieurs fournisseurs : que change-t-on ? R : On supprime la clé étrangère du fournisseur dans PRODUIT et on crée une table de liaison dont la clé primaire est formée de la référence du produit et du numéro du fournisseur. Le prix d'achat, qui dépend du couple, se place dans cette table.

Tu as lu le cours. Passe maintenant à la pratique :

SIG DCG (UE8) : Bases de données, SQL et processus

Ajoute gratuitement le Kit à ton espace, puis utilise tes jetons pour générer un quiz, créer des flashcards ou poser tes questions au Tuteur IA.

Quiz, flashcards et fiches déjà prêts

Voir les packs DCG