Aller au contenu
M06 · A. Concevoir une base de données

Dictionnaire de données et dépendances fonctionnelles

Lister toutes les données dans un dictionnaire (nom, type, taille, règle), puis trouver qui « détermine » qui avec le graphe des dépendances fonctionnelles.

1Situer

L'analyse de Souk Atlas a donné une longue liste de mots : nom du client, prix, quantité, date... Mais « nom » de quoi ? Un client et un produit ont tous les deux un nom. Le prix est-il celui du catalogue ou celui payé le jour de la commande ? Le dictionnaire de données met de l'ordre dans cette liste, et les dépendances fonctionnelles disent comment les données sont liées entre elles.

2Comprendre

Le graphe des dépendances fonctionnelles
id_client id_ville id_commande id_produit nom_client email nom_ville ✖ transitive date nom_produit prix (id_commande, id_produit) quantité

On place d'abord les identifiants : id_client, id_ville, id_commande, id_produit.

1 / 5

Le dictionnaire de données

Chaque donnée reçoit un code sans ambiguïté : on n’écrit pas « nom » mais nom_client et nom_produit.

CodeSignificationTypeTailleRègle
id_clientnuméro du clientEntierunique
nom_clientnom de familleTexte50obligatoire
email_clientadresse emailTexte100unique, peut manquer
id_produitnuméro du produitEntierunique
prix_catalogueprix actuel du produitDécimal8,2> 0
date_commandejour de la commandeDateobligatoire
quantitenombre de pièces commandéesEntier> 0

Les dépendances fonctionnelles

Pour tester une dépendance, on pose la question : « si je connais A, est-ce que je connais une seule valeur de B ? »

id_client   → nom_client, prenom_client, email_client, id_ville
id_ville    → nom_ville
id_produit  → nom_produit, prix_catalogue, stock, id_categorie
id_commande → date_commande, statut, id_client
(id_commande, id_produit) → quantite, prix_unitaire

Le graphe des dépendances

On construit le graphe en trois étapes :

  1. Placer les identifiants (id_client, id_produit, id_commande…) : ce sont les sources des flèches.
  2. Tracer les flèches vers les données qu’ils déterminent.
  3. Retirer les flèches qu’on peut déduire (transitivité) : si id_client → id_ville et id_ville → nom_ville, la flèche id_client → nom_ville est inutile.

Chaque identifiant avec ses flèches deviendra une entité du modèle conceptuel (leçon suivante), et chaque dépendance à partie gauche composée deviendra une association.

Exemple simple

La carte nationale (CIN)

Quand on connaît le numéro de CIN, on connaît le nom, le prénom et la date de naissance de la personne. On dit que le numéro de CIN « détermine » ces informations : c'est une dépendance fonctionnelle.

num_cin → nom, prenom, date_naissance
Exemple simple

Le prénom ne suffit pas

Connaître le prénom « Youssef » ne donne pas une seule date de naissance : il y a des milliers de Youssef. Le prénom ne détermine donc pas la date de naissance.

prenom → date_naissance    ✖ (faux)

3Manipuler

Pour la boutique Souk Atlas, chaque phrase propose une dépendance fonctionnelle. Est-elle vraie (une seule valeur possible à droite) ou fausse ? Vérifiez ensuite vos réponses.
id_client → email_client
nom_ville → id_client
id_produit → prix_catalogue
id_commande → date_commande
id_commande → id_produit (une commande peut contenir plusieurs produits)
(id_commande, id_produit) → quantite
id_produit → nom_categorie
prenom_client → id_client

4Pratiquer

Exercice 1 · Compléter le dictionnaire

Ajoutez au dictionnaire de Souk Atlas les lignes pour : la date d'inscription d'un client, le stock d'un produit, le statut d'une commande.

Voir le corrigé
Code               | Signification            | Type        | Taille | Règle
date_inscription   | date d'inscription       | Date        |        | obligatoire
stock_produit      | pièces en stock          | Entier      |        | >= 0, 0 par défaut
statut_commande    | état de la commande      | Texte (liste)| 12    | en attente, payée,
                   |                          |             |        | livrée, annulée

Exercice 2 · Trouver la source

Données : num_stagiaire, nom_stagiaire, code_groupe, nom_filiere, code_filiere. Un stagiaire est dans un seul groupe, un groupe dans une seule filière. Écrivez les dépendances fonctionnelles.

Voir le corrigé
num_stagiaire → nom_stagiaire, code_groupe
code_groupe   → code_filiere
code_filiere  → nom_filiere
(donc, par transitivité : num_stagiaire → code_filiere)

Exercice 3 · Donnée calculée

Faut-il mettre « montant_total_commande » dans le dictionnaire de données ? Pourquoi ?

Voir le corrigé
Non : c'est une donnée calculée (somme des quantité × prix
des lignes). On la note à part, car on la calcule avec une
requête au lieu de la stocker. Sinon elle risque de devenir fausse.

5Vérifier

1. Que signifie A → B ?
2. Quelle information met-on dans un dictionnaire de données ?
3. La quantité commandée dépend de...