Vous êtes sur la page 1sur 7

Concevoir une base de données -1-

Spécialité : Informatique/ Option : Bases de données /S3


Matière : Concevoir une BDD(SGBDR)
Thème : Les formes normales Enseignante : DJouambi

Introduction
Considérons la relation Etud_mod suivante :
Etud_mod (Matricule, Cod_mod, Nom_et, Prénom_et, Moyenne) pour laquelle nous
présentons une partie en extension (l’attribut Moyenne désigne la moyenne d’un étudiant
dans un module).

Matricule Nom_et Prénom_et Cod_mod Moyenne


52000001 ABDI Mohamed Algo 10
52000001 ABDI Mohamed Archi 01 12.5
52000001 ABDI Mohamed Logique 11
52000002 BADAOUI Karim Algo 8.5
52000002 BADAOUI Karim Archi 01 15
52000002 BADAOUI Karim Logique 11.75
.
.
.

Nous remarquons :
 Une redondance dans ce tableau, (chaque tuple pour l’étudiant ‘ABDI’ nous
indique son matricule, son nom et son prénom).
 Alors, le nom et le prénom du même étudiant sont répétés plusieurs de fois.
 Dans le modèle relationnel, on doit éviter la redondance d’informations.
 pour cela en effectue ce qu’on appelle une normalisation sur les relations, on
obtient alors des relations normalisées. On parle plus précisément de formes
normales.
1. Définition des trois premières Formes Normales
TS base de données – s3

Les formes normales correspondent à une décomposition optimale des entités en relations
élémentaires correctement construites. Cela évite les redondances d'informations et facilite la
maintenance des données.
Concevoir une base de données -1-

2. Première forme normale : (1FN)


Définition (1FN)
Une relation R est en 1FN, pour chaque tuple de la relation, tout attribut possède une seul
valeur.
Cette définition exclut les relations ayant des attributs dont les valeurs seraient des
ensembles ou des listes de valeurs.
Exemple
 Reprenons l’exemple de la relation Résultats qui stocke les résultats des étudiants dans
les modules.

 Onveut sauvegarder pour chaque module et pour chaque étudiant, les différentes notes
obtenues pendant l’année. Nous aurons à sauvegarder la note du contrôle-1,et du contrôle-2 et
celles de la synthèse et du rattrapage.
Soit le schéma de relation suivant :
Résultats (Matricule, Cod_mod, Nom_et, Prénom_et, Notes)
Pour l’étudiant «ABDI Mohamed », nous aurons par exemple 4 notes à sauvegarder, pour le
module Algo : 52000001 ABDI Mohamed Algo {8 9.5 6.5 11}
Donc, cette relation n’est pas en 1FN puisque l’attribut notes possède quatre valeurs
différentes.
Pour transformer en (1FN), il faut décomposer cet attribut en quatre autres attributs note1,
note2, synt, ratt qui soient atomiques.
Nous aurons alors le schéma de relation suivant :
Résultats (Matricule, Cod_mod, Note1, Note2, Synt, Ratt)
Chacun des attributs Note1, Note2, Synt et Ratt aura une valeur atomique. La relation ainsi
obtenu est en 1FN.

3. Deuxième forme normale : (2FN)


Une relation R est dite en 2FN si et seulement si :
TS base de données – s3

 Elle est en 1FN


 Tout attribut n’appartenant pas à la clé ne dépend pas d’une partie de la clé. (i.e. il est
en dépendance fonctionnelle élémentaire de la clé).
Concevoir une base de données -1-
Exemple
La relation Résultats (Matricule, Cod_mod, Nom_et, Prénom_et, Note1, Note2, Synt, Ratt)
n’est pas en 2FN
Car : Matricule → Nom_et
Matricule → Prénom_et
Nom_et et Prénom_et sont deux attributs qui dépendent d’une partie de la clé
Il faut décomposer la relation Résultats en deux autres relations
 Résultats (Matricule, Cod_mod, Nom_et, Prénom_et, Note1, Note2, Synt, Ratt)
 Etudiant (Matricule, Nom_et, Prénom_et)
 ces deux dernières sont alors en 2FN.

Exercice :Soit la relation Enseignant


Enseignant (Num_ens, Nom_ens, Prénom_ens, Dat_nais_ens, Adresse_ens, Grade, Nbr_heurs)
Pourlaquelle nous présentons une partie en extension :
Num_e Nom_ens Prénom_ens Dat_nais_en Adresse_e Grade Nbr_heurs
ns s ns
E1 SALAH Mohemed 10/07/65 Alger Chargé de cours 9

E2 EL_ALLAMI Ryadh 25/03/59 Alger Maitre de conf 7h 1/2

E3 NOUALI Nora 15/08/62 Alger Chargé de cours 9

Questions
Q.1: est-ce que la relation est en 2FN ?
Q.2: Vérifier s’il y a une redondance d’information
Q.3: Qu’est-ce que vous constatez ?
Remarquons que le nombre d’heures d’enseignement dépend uniquement du grade de
l’enseignant, en fait la même valeur sera répétée à chaque fois que l’on répète le même
TS base de données – s3

grade.
Nous avons un attribut (Nbr_heures) qui dépend d’un autre attribut non clé (Grade), ceci
crée une autre forme de redondance.
Concevoir une base de données -1-

4. Troisième forme normale : (3FN)


Une relation est en 3FN si :
 Elle est en 2FN.
 Tout attribut n’appartenant pas à la clé ne dépend pas d’un attribut non clé.

Sur l’exemple précédent, il faudra supprimer l’attribut Nbr_heures de la relation


Enseignant et créer une nouvelle relation Charge qui détermine le nombre d’heures
d’enseignement, en fonction du grade de l’enseignant. On décompose la relation précédente en
deux autres relations comme suit :
Enseignant (Num_ens, Nom_ens, Prénom_ens, Dat_nais_ens, Adresse_ens, Grade)
Charge (Grade, Nbr_heurs)
Ainsi, ces deux relations constituent un schéma en 3FN
La troisième Forme Normale a pour objectif d’éliminer les redondances aux DF transitives
5. Algorithme de synthèse
Enappliquant les étapes de cette algorithme vous pourrez déduire un schéma de
relation en 3èmeFN .vous devez démarrer de la relation universelle et de ses DF. La
relationuniverselle est une relation qui contient tous les attributs du domaine d’étude.

Relation universelle Ensemble de DF

Algorithme de
synthèse

Algorithme en 3FN

Soit F, l’ensemble de toutes les DF définîtes sur les attributs de la relation universelle .les
étapes de l’algorithme de synthèse sont les suivants :
TS base de données – s3

1. Trouver l’ensemble contenant la couverture minimale de F.


2. Partitionner l’ensemble en sous ensemble de Fi, tels que toutes les DFs de Fi ont
la même partie gauche;
3. Pour chaque ensemble Fi de DFs, construire une relation composée de tous les
attributs formant les DFs de Fi, la clé de la relation sera la partie gauche
commune à ces DFs;
4. Traiter les attributs isolés
Concevoir une base de données -1-

Exemple
DF.1 Cod_mod→libellé_mod
DF.2 Cod_mod→an_etude
DF.3 Cod_mod→libellé_filière
DF.4 Cod_filière→libellé_filière
DF.5 matricule →nom_et
DF.6 matricule → adresse-et
DF.7 matricule →dat_nai_et
DF.8 num_ens→nom_ens
DF.9 num_ens→dat_nai_ens
DF.10 num_ens→ grade
DF.11 num_ens→situation_familiale
DF.12 num_ens→ salaire
DF.13 grade →nbre_heures
DF.14 grade → salaire
DF.15 cod_mod → coef
DF.16 cod_mod → cod_filière
DF.17 matricule →prenom_et
DF.18 num_ens→prenom_ens
DF.19 num_ens→adresse_ens
DF.20 num_ens, grade→nbre_heures
DF.21 num_ens, grade → salaire
DF.22 num_ens→nbre_heures
DF.23 matricule → section
DF.24 matricule → groupe
DF.25 cod_mod,matricule→cod_filière
Concevoir un schéma relationnel en 3FN, à partir de cet ensemble de DFs en appliquant
l’algorithme de synthèse.
TS base de données – s3
Concevoir une base de données -1-

Solution

1ère étape :Calcul de la relation universelle


R = {Code_mod ,libellé_mod,an_etude , libellé_filière , code_filière , matricule , nom_et ,
prenom_et , adresse-et , dat_nai_et , num_ens , nom_ens , prenom_ens, adresse_ens ,dat_nai_ens
, grade , situation_familiale , salaire, nbre_heures , coef, section, matricule }

2ème étape :Calcul de l’ensemble minimal de DF


Dans cette étape il faudra éliminer des DF qui peuvent être déduites par les autres.
Eliminer les DF 03 elle peut être déduite par transitivité de DF 16 et 04 respectivement.
Eliminer les DF 20 et 21 car elles peuvent être déduites par augmentation de DF 13 et 14
respectivement.
Eliminer la DF 12, car elle peut être déduite par transitivité des DF 10 et 14.
Eliminer la DF 22, car elle peut être déduite par transitivité des DF 10 et 13.
Eliminer la DF 25, car elle peut être déduite par augmentation des DF 16.
L’ensemble de couverture sera alors :
DF.1 matricule →nom_et DF.11 code_filière→libellé_filière
DF.2 matricule → adresse-et DF.12 num_ens→nom_ens
DF.3 matricule →dat_nai_et DF.13 num_ens→dat_nai_ens
DF.4 matricule →prenom_et DF.14 num_ens→ grade
DF.5 matricule → section DF.15 num_ens→situation_familiale
DF.6 matricule → groupe DF.16 num_ens→prenom_ens
DF.7 Cod_mod→libellé_mod DF.17 num_ens→adresse_ens
DF.8 Cod_mod→an_etude DF.18 grade →nbre_heures
DF.9 cod_mod → coef DF.19 grade → salaire
DF.10 cod_mod → cod_filière
3ème étape :Le schéma de la relation en 3FN est :
Etudiant(matricule, adresse-et, dat_nai_et, prenom_et, section, groupe)
Module (Code_mod, libellé_mod, an_etude, coef, cod_filière)
Filière (code_filière, libellé_filière)
Enseignant (num_ens, nom_ens, prenom_ens, dat_nai_ens, grade, situation_familiale,
adresse_ens)
TS base de données – s3

Grade (Grade,nbre_heures, salaire)


4ème étape :Traiter les attributs isolés : Y’a pas d’attributs isolés, mais ce schéma n’est pas
complet, car on doit savoir par exemple quel enseignant enseigne quel module ? Alors on
ajoute une relation.

Ens_Mod(num_ens,cod_mod) de la même façon on doit penser à créer une relation


Etud_Mod(matricule, Cod_mod) qui nous informe quels module est inscrit un étudiants de
même quelle on doit créer une relation
Concevoir une base de données -1-
Etu_Fil(Matricule, Cod_fil) qui nous
informe quels filière est inscrit un étudiants.

6. Boyce codd
Dans le cas d’une relation a plusieurs clé candidates, desanomalies peuvent subsister en 3FN la
forme normale de Boyce Codd permet d’éviter ces anomalies.
Définition
Une relation est en forme normale Boyce Codd, si quelle que soit la DF, le membre de
gauche est une clé

Exemple
Soit la relation R (Ville, Rus, Code), vérifiant l’ensemble de DF suivant :
Ville, Rue→Code
Code→Ville
Deux clés primaire peuvent êtreidentifiées dans cette relation Ville, Rue et Code, Rue
R est en 3FN, mais n’est pas en BCNF : le membre gauche de la DF Code→ville n’est
pas une clé.
Une extension possible de cette relation serait : Remarquons qu’il y’a une
Ville Rue Code redondance entre Code et
Alger Hassiba Ben Bouali 16014 ville.
Alger Rédha Houhou 16014

Cependant, il n’est pas toujours possible de trouver une décomposition en relation BCNF sans
perte d’informations, et qui préserve les DF.
La décomposition de R en R1 (Ville, Code), et R2 (Rus, Code) évite la redondance, elle est sans
perte d’information, mais elle ne préserve pas la DF ville, Rue →code
TS base de données – s3

Vous aimerez peut-être aussi