Académique Documents
Professionnel Documents
Culture Documents
LE CONTENU TECHNIQUE
Chapitre 5: LA NORMALISATION
Introduction :
La normalisation est la décomposition d’une relation universelle regroupant toutes les DFs en
plusieurs relations.
Spécialité : TS bases de données Semestre : 03 Module : Concevoir une base de données
I. Pourquoi normaliser ?
Pour comprendre l’utilité de la normalisation, prenons l’exemple suivant
Contexte
Supposons que vous ayez à développer une application de gestion d’une bibliothèque. Tous les
livres de la bibliothèque possèdent un numéro de livre, un titre, un ou plusieurs auteurs et un éditeur.
Lorsqu’une personne emprunte un livre, il faut mémoriser son nom, son prénom, son numéro de
téléphone, son adresse, la date de l’emprunt et la date de retour une fois ce dernier réalisé. Toutes
les informations doivent être conservées pour garder un historique des emprunts.
Solution
Votre application va devoir stocker toutes les informations mentionnées dans un fichier donc une
seule Table.
La table contiendra toutes les informations :
Livre (Titre, Editeur,NLivre,Nom,Prenom,Téléphone,Adresse,Date_emprunt,Date_retour)
- Chaque ligne de la table concernera un livre à savoir titre, auteur, éditeur, numéro du livre.
- Quand une personne emprunte un livre, on complète la ligne du livre en question par les
champs nom, prénom, téléphone, adresse et date-emprunt.
- Lorsqu’une personne retourne un livre, il suffit d’ajouter un dernier champs date-retour sur la
ligne du livre en question.
- Quand un livre est emprunté une nouvelle fois, on crée une nouvelle ligne avec toutes les
informations concernant le livre et la personne qui l’emprunte. Bien entendu, le bibliothécaire
ne ressaisit pas tout, l’application va chercher la plupart de ces informations dans la table.
Supposons que l’application de gestion de bibliothèque fonctionne correctement et stocke toutes ses
données dans une table.
Nous allons nous pencher sur les inconvénients et les conséquences inhérentes à une telle
approche.
L’application fonctionne maintenant depuis 10 ans. Le nombre de personnes inscrites à la
bibliothèque est relativement constant il est de 5000 personnes en moyenne par an. Un abonné
emprunte en moyenne 5 livres par mois.
1. Quel est, approximativement, le nombre de lignes de la table ?
2. Quelle est la taille approximative de la table sachant que chaque caractère occupe 1 octet
et qu’une ligne contient, en moyenne, 150 caractères ?
Spécialité : TS bases de données Semestre : 03 Module : Concevoir une base de données
3. Supposons qu’une personne est abonnée depuis l’origine de l’application. Elle prévient le
bibliothécaire que son prénom est mal orthographié. Combien de lignes,
approximativement, doivent être modifiées pour corriger cette erreur dans tout le fichier
de données ou la table?
Dans le pire des cas, l’application doit parcourir tout le fichier. Supposons qu’un accès au
fichier coûte 10ms, qu’une lecture de ligne coûte 6ms et qu’une recherche sur la ligne pour
trouver le numéro du livre ou le nom et le prénom de l’abonné coûte 1ms. Quel est, dans le
pire des cas, le temps mis par l’application pour compléter les informations saisies par le
bibliothécaire ?
Énumérez ou résumez tous les problèmes que la représentation des données choisie (le fichier de
données) semble poser.
a- Redondance de données :
Dès qu’un abonné emprunte un livre, il faut dupliquer toutes les informations concernant
l’abonné et le livre emprunté. Cette redondance provoque
- Une perte de temps lors de la recherche
- Une perte d’espace de stockage
- Des anomalies de modification
Pour remédier à toutes ces anomalies, la relation universelle Livre est normalisée ou décomposée en
plusieurs relations.
Pour parvenir à décomposer la relation universelle sans perte de données et en préservant les DFs, en
décompose selon des forme normale, et chaque forme normale va éliminée une ou plusieurs
anomalies citées.
Une relation est en première forme normale si, et seulement si, tout attribut contient une valeur
atomique (non multiples, non composées).
Autrement : Un champ ne doit pas avoir plusieurs valeur (multivalué).
Exemple : La relation suivante n’est pas en 1FN Car le champ auteur contient plusieurs valeurs (un
livre est écris par plusieurs auteur).
si tout attribut n’appartenant pas à la clé ne dépend pas que d’une partie de la clé.
Exemple :
Soit le schéma de relation suivant :
CommandeLivre(Num-Commande, Num-Client,Titre, Auteur, Quantité, Prix).
Cette relation indique qu’un client (identifié par Num-Client) a passé une commande (identifiée par
Num-Commande) de livre.
Num-Commande, Num-Client Titre, Auteur, Quantité, Prix
Spécialité : TS bases de données Semestre : 03 Module : Concevoir une base de données
Elle est en première forme normale car tous les attributs sont atomiques
Par contre, les attributs Titre, Auteur, Quantité et Prix ne dépendent que de Num-Commande,
et pas de Num-Client.
Num-Commande Titre, Auteur, Quantité, Prix
Une relation en 1FN dont la clé est composée d’un seul attribut est forcément en 2FN.
Une relation est en forme normale de BOYCE-CODD (BCNF) si, et seulement si,
Npièce prix-unit
Npièce libellé
Npièce catégorie}
G2 { Catégorie TVA}
V. La notion de clé :
a. Clé primaire :
b-Clé étrangère :
La clé étrangère est un attribut (ou un groupe d'attributs) qui fait référence à la clé primaire d'une
autre relation.
Exemple : Reprenons l’exemple précédent :
Pièce (Npiece,prix-unit,libellé,#catégorie)
RCatégorie(catégorie, TVA)
La clé étrangère est précédée par #.
La clé primaire est soulignée.
Spécialité : TS bases de données Semestre : 03 Module : Concevoir une base de données
Spécialité : TS bases de données Semestre : 03 Module : Concevoir une base de données
Exercices
Exercice 1:
Considérons les dépendance fonctionnelles ci-dessous entre les attributs intervenants dans l’application
"Gestion des prêts bancaires" :
01) code postulant nom postulant
02) code postulant prénom postulant
03) code postulant adresse postulant
04) code prêt date prêt
05) code prêt intérêt
06) numéro livre date ouverture
07) numéro livres, date montant avoir
08) numéro livret,date intérêt acquis
09) numéro versement montant versement
10) numéro versement date versement
11) numéro livret code postulant
12) code postulant numéro livret
13) code postulant code prêt
14) numéro versement code prêt
15) numéro livret code catégorie
16) numéro livret code prêt
17) numéro versement, code postulant code prêt
18) code postulant, code catégorie numéro livret
19) numéro versement montant prêt
Spécialité : TS bases de données Semestre : 03 Module : Concevoir une base de données
Questions :
1- L’ensemble des dépendances fonctionnelles donné constitue il une couverture minimale ?
justifiez.
2- Construire le schéma relationnel en 3ème FN correspondant.
Exercice 2
Considérons les dépendances fonctionnelles ci-dessous entre les attributs intervenant dans
l'application "Gestion et historique des stages".
1) N°Etud NomEtud , PrenomEtud , Date_naiss
2) N°Stage Compte rendu
3) Année promo Nombre d'inscrit
4) N°Prof NomProf , PrénomProf
5) N°Stage N°Prof
6) Code entreprise Raison sociale , Adresse
7) Code type Stage , Année Date fin
8) N°Stage Année Promo
9) N°Stage N°Etud
10) N°Etud Année Promo
11) Année Promo , N°Etud Mention Examen
12) N°Stage Code type Stage
13) N°Stage , N°Etud Compte rendu
14) N°Etud Mention Examen
15) Année promo nombre reçue
16) N°Prof Qualité
17) Code type Stage Durée
Spécialité : TS bases de données Semestre : 03 Module : Concevoir une base de données
Exercice 3 :
Soit la relation Enseignement qui précise qu’un étudiant a un certain enseignant dans une certaine
matière :
Enseignement (nom-étudiant, prénom-étudiant, matière, volume-horaire-matière, nom-
enseignant, prénom-enseignant, salaire-enseignant)
Exercices complémentaires
Exercice 1 :
L'auto école "DIAF" veut informatiser le suivi des candidats pour l'obtention d'un permis de conduire
dans plusieurs catégories.
Le candidat suit plusieurs leçons avant chaque examen. Les leçons sont données par plusieurs moniteurs chacun
dans sa spécialité.
Un sous ensemble de dépendances fonctionnel est donné ci-dessous.
Un permis identifié par un code est pris en charge par plusieurs moniteurs mais un moniteur
ne prend en charge qu'un seul permis.
Questions: