Vous êtes sur la page 1sur 13

Spécialité : TS bases de données Semestre : 03 Module : Concevoir une base de données

LE CONTENU TECHNIQUE

SPECIALITE : BASES DE DONNEES


SEMESTRE : III
MATIERE : Concevoir une base de données

Chapitre 5: LA NORMALISATION

Objectif : à la fin de cours chaque stagiaire doit être capable

Plan du cours : Introduction


I. Pourquoi normaliser ?

II. Les trois formes normales :


III. La forme normale de BOYCE-CODD (BCNF)
IV. Normalisation d’une relation :

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?

4. Lorsqu’un abonné emprunte un livre, le bibliothécaire saisit simplement le numéro du livre


et le nom et le prénom de l’abonné. L’application se charge alors de parcourir le fichier
pour rechercher les informations manquantes concernant le livre et l’abonné afin d’insrer,
à la fin du la table, la nouvelle ligne concernant l’emprunt.

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

b- Anomalie de mise à jour


Anomalies d’insertion:
Dans l’exemple, pour insérer un abonné qui n’a pas encore emprunté de livre il faut laisser les
autres champs concernant le livre et le prêt vide.
Anomalies de modification :
Lors de la modification d’un champ (par exemple le prénom), la modification est répétées sur
toutes les lignes concernant le champ voulu et si une ligne n’a pas été modifiée il y a dans ce
cas une incohérence de données.
Anomalies de suppression
Si en supprime un abonné par exemple, on risque de supprimer un livre ou plusieurs si
l’abonné en question était le seul a les avoir emprunté. De même si un livre est supprimé, on
risque aussi de supprimer des abonnés n’ayant emprunté que ce livre.
Spécialité : TS bases de données Semestre : 03 Module : Concevoir une base de données

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.

II.Les trois formes normales :


1- La Première Forme Normale (1FN)

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).

2- La deuxième forme normale


Une relation est en deuxième forme normale si, et seulement si,
 elle est en première forme normale

 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.

3- La troisième forme normale (3FN)


Une relation est en troisième forme normale si, et seulement si,

 elle est en deuxième forme normale


 si tout attribut n’appartenant pas à la clef ne dépend pas d’un attribut non-clé.
Exemple :
Soit la relation : CommandeLivre(Num-Commande, Num-Client, Titre, Auteur, Quantité, Prix)

 La relation est en 2FN


 Les attributs auteur prix dépendent de Titre : Titre  Auteur,Prix
La relation est pas en 3FN.

III.La forme normale de BOYCE-CODD (BCNF)

Une relation est en forme normale de BOYCE-CODD (BCNF) si, et seulement si,

 elle est en troisième forme normale


 si les seules dépendances fonctionnelles élémentaires sont celles dans lesquelles une clé
détermine un attribut.

IV.Normalisation d’une relation :


La normalisation d’une relation passe par les étapes suivantes :

 Calcule de la couverture minimale


 Trouver la clé de la relation
 Regrouper toutes les DFs ayants le même membre gauche (ayant la même source)
 Chaque groupe de Dfs sera représenté par une relation dans la clé est le membre
gauche
Exemple :
La pièce
Le schéma de relation Pièce permet de décrire des pièces employées dans un atelier de montage :
Spécialité : TS bases de données Semestre : 03 Module : Concevoir une base de données

Pièce (Npièce, prix-unit, TVA, libellé, catégorie)


Supposons les dépendances fonctionnelles suivantes :
F = {Npièce  prix-unit
Npièce  TVA
Npièce  libellé
Npièce  catégorie
Catégorie  TVA }
1. Calculer la couverture minimale :
La Dfs Npièce  TVA est une Dfs transitive déduite par transitivité
Npièce  catégorie
Catégorie  TVA
La couverture minimale est :
F = { Npièce  prix-unit
Npièce  libellé
Npièce  catégorie
Catégorie  TVA }

2. Proposez un identifiant pour ce schéma de relation.

Npièce détermine tous les attributs directement ou indirectement.


3. La relation Pièce est dans quelle forme normale ?
 Piece est en 1FN car tous les attributs sont atomiques
 Pièce est en 2FN car
o Elle en 1FN
o les attributs non clé ne dépendent pas d’une partie de la clé.
 Pièce n’est pas en 3FN car un attribut non clé (TVA) dépend d’un attribut non clé.

4. Décomposez la relation (normaliser la relation en 3FN)

 F est une couverture minimale


 Regroupons les Dfs ayant les mêmes membres gauches :
G1{
Spécialité : TS bases de données Semestre : 03 Module : Concevoir une base de données

Npièce  prix-unit
Npièce  libellé
Npièce  catégorie}
G2 { Catégorie  TVA}

 Constituons les relations :


Pièce (Npiece,prix-unit,libellé,catégorie)
RCatégorie(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

20) code postulant  code catégorie


21) code postulant  salaire postulant
22) code prêt  montant prêt

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

18) Code type Stage , Année  Date début


19) N° Stage  Année , Code entreprise
20) Code type stage , Année , N°Etud  Date début
Questions :
1- L'ensemble des dépendances fonctionnelles donné constitue il une couverture minimale?
Justifier.
2- Construire le schéma relationnel en 3ème Forme Normale correspondant en utilisant
l'algorithme de décomposition.

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)

1. Identifiez les dépendances fonctionnelles de ce schéma de relation.


2. Normalisez ce schéma de relation jusqu’en troisième forme normale.
Spécialité : TS bases de données Semestre : 03 Module : Concevoir une base de données

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.

Num_Insc -----> Nom_cand

Num_Insc -----> Libellé_permis

Num_Insc, Code_leçon, Num_moniteur, Code_permis -----> Durrée

Num_Insc -----> prenom_cand, date_nais, adresse

Num_moniteur -----> Code_permis

Num_moniteur -----> Nom_moniteur


Num_Insc -----> Code_permis

Code_permis -----> Libellé_permis


Code_leçon -----> Intitulé_leçon
Num_moniteur -----> Prenom_moniteur

Num_Insc, Code_leçon, Num_moniteur -----> Durrée

Num_moniteur -----> adr_moniteur

Code_permis -----> Num_Moniteur

Soient les règles de gestion suivantes:

 l'école considère dans l'adresse du moniteur la ville, le code postal et la rue.


Spécialité : TS bases de données Semestre : 03 Module : Concevoir une base de données

 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:

1. Quelles sont les dépendances fonctionnelles non élémentaire? justifier


2. Quelles sont les dépendances fonctionnelles transitives? Justifier
3. Quelles sont les dépendances fonctionnelles multivaluées? justifier
4. Trouver la couverture minimale de l'ensemble des DFs.
5. Donner le graphe des DFs.
6. parmi les ensembles d'attributs suivants, qui peut jouer le rôle d'une clé? Justifier votre
réponse.
(Num_Insc, Code_permis)
(Num_insc, Code_permis, Num_moniteur)
Num_Insc.
7. La relation est-elle en 1ère forme normale? Sinon comment la rendre en 1ère forme normale.
8. Construire le schéma relationnel en 3ème forme normale .

Vous aimerez peut-être aussi