Vous êtes sur la page 1sur 7

EXERCICES DE BASES DE DONNEES Page |1

EXERCICE 1

Soit la relation universelle suivante :


CONSULTATION (nummal, nommal, agemal, sexemal, numord, dateord, nummed, nommed,
codeprod, nomprod, qteprod)
Règles de gestion
- RG1 : Un malade peut avoir plusieurs ordonnances
- RG2 : Un médecin peut prescrire plusieurs ordonnances
- RG3 : Une ordonnance appartient à un seul malade et est prescrite par un seul médecin
- RG4 : Une ordonnance peut concerner plusieurs produits, de même un produit peut être
concerné par plusieurs ordonnances
Normalisez CONSULTATION en 3ème forme normale et dressez le schéma relationnel

1. CONSULTATION EN 2FN ?
1.1. CONSULTATION EN 1FN ? Oui clé (numord, codeprod)

Comment trouver la clé primaire ? En lisant bien les règles de gestion !

En regardant bien la relation, les clés possibles sont nummal, numord, nummed et codeprod

RG1 : nummal ne peut pas être dans la clé parce qu’à un malade ne correspond pas une seule
ordonnance mais plusieurs
RG2 : nummed ne peut pas faire partie de la clé parce qu’un médecin peut prescrire plusieurs
ordonnance et non une seule
RG3 : numord fait partie de la clé parce qu’à une ordonnance correspond un seul malade et un
seul médecin
RG4 : qteprod est la quantité d’un produit sur une ordonnance, donc il faut ajouter codeprod dans
la clé et ce sera une clé composée de numord et codeprod
1.2. DF totales

(1) numord, codeprod → nummal NON numord → nummal (1.1)


(2) numord, codeprod → nommal NON numord → nommal (2.1)
(3) numord, codeprod → agemal NON numord → agemal (3.1)
(4) numord, codeprod → sexemal NON numord → sexemal (4.1)
(5) numord, codeprod → dateord NON numord → dateord (5.1)
(6) numord, codeprod → nummed NON numord → nummed (6.1)
(7) numord, codeprod → nommed NON numord → nommed (7.1)
(8) numord, codeprod → nommprod NON codeprod → nomprod (8.1)
(9) numord, codeprod → qteprod OUI

CONSULTATION n’est pas en 2FN, il faut la décomposer !

Décomposition
(9) numord, codeprod → qteprod
A (numord, codeprod, qteprod) en 2FN
EXERCICES DE BASES DE DONNEES Page |2

(1.1)+ (2.1)+ (3.1)+ (4.1)+ (5.1)+ (6.1)+ (7.1) :

numord → nummal, nommal, agemal, sexemal, dateord, nummed, nommed

B (numord, nummal, nommal, agemal, sexemal, dateord, nummed, nommed) en 2FN

(8.1) codeprod → nomprod

C (codeprod, nomprod) en 2FN


CONSULTATION est décomposée en A, B et C

3. A en 3FN ?
3.1. A en 2FN ? Oui
3.2. DF directes
numord, codeprod → qteprod OUI
A est en 3FN [QUANTITE]

4. B en 3FN ?
4.1. B en 2FN ? oui
4.2. DF directes
(a) numord → nummal OUI
(b) numord → nommal NON nummal → nommal (b’)
(c) numord → agemal NON nummal → agemal (c’)
(d) numord → sexemal NON nummal → sexemal (d’)
(e) numord → dateord OUI
(f) numord → nummed OUI
(g) numord → nommed NON nummed → nommed (g’)

B n’est pas en 3FN, il faut la décomposer!

Décomposition
(a)+(e)+(f) : numord → nummal, dateord, nummed
B1 (numord, nummal, dateord, nummed) en 3FN [ORDONNANCE]

(b’)+(c’)+(d’) : nummal → nommal, agemal, sexemal


B2 (nummal → nommal, agemal, sexemal) en 3FN [MALADE]

(g’) nummed → nommed


B2 (nummed, nommed) en 3FN [MEDECIN]

B est décomposée en B1, B2 et B3

5. C en 3FN ?
5.1. C en 2FN ? oui
5.2. DF directes
codeprod → nomprod oui

C est en 3FN [PRODUIT]


EXERCICES DE BASES DE DONNEES Page |3

Schéma normalisé en 3FN

MALADE ORDONNANCE QUANTITE PRODUIT


nummal numord numord # codeprod
nommal nummal # codeprod # nomprod
agemal dateord qteprod
sexemal nummed #

MEDECIN
nummed
nommed

EXERCICE 2

Soit la relation suivante :


AGENT (matag, nomag, genreag, codedpt, nomdpt, nomchefdpt, codeville, nomville)
Règle de gestion : Un agent est originaire d’une seule ville et travaille dans un seul département

Normalisez la relation en 3ème forme normale

1. AGENT en 2FN ?
1.1. AGENT en 1FN ? oui clé = mat
1.2. DF totales
matag → nomag oui
matag → genreag oui
matag → codedpt oui
matag → nomdpt oui
matag → nomchefdpt oui
matag → codeville oui
matag → nomville oui
AGENT est en 2FN

2. DF directes
(a) matag → nomag oui
(b) matag → genreag oui
(c) matag → codedpt oui
(d) matag → nomdpt Non codedpt → nomdpt (d’)
(e) matag → nomchefdpt oui
(f) matag → codeville oui
(g) matag → nomville Non codeville → nomville (g’)

AGENT n’est pas en 3FN, il faut décomposer !

Décomposition
(a)+(b)+(c)+(e)+(f) : matag → nomag, genreag, codedpt, nomchefdpt, codeville
X (matag, nomag, genreag, codedpt, nomchefdpt, codeville) en 3FN [AGENT]
EXERCICES DE BASES DE DONNEES Page |4

(d’) codedpt → nomdpt

Y (codedpt, nomdpt ) en 3FN [DEPARTEMENT]

(g’) codeville → nomville


W (codeville, nomville) en 3FN [VILLE]

Schéma normalisé

DEPARTEMENT AGENT VILLE


codedpt matag codeville
nomdpt nomag nomville
nomchefdpt genreag
codedpt #
nomchefdpt
codeville #
EXERCICES DE BASES DE DONNEES Page |5

EXERCICE 3
Soit la relation
Commande (N°cmd, N°cl, nom-cl, date-cmd, adr-liv, N°rep, nom-rep, N°prod,
nom-prod, qté-cmd, qté-stock)

Règles de gestion
- un client a un seul représentant
- sur une commande, il peut y avoir plusieurs produits de plusieurs clients.
Normaliser cette relation

Solution
1. Commande en 3FN ?
1.1. Commande en 2FN ?
1.1.1.Commande en 1FN ? Oui car la clé est (Nºcmd, Nºcl, Nºprod)
1.1.2. Dépendances totales ?
(1) Nºcmd, Nºcl, Nºprod → nom-cl non Nºcl → nom-cl (1.1)
(2) Nºcmd, Nºcl, Nºprod → date-cmd non Nºcmd → date-cmd (2.1)
(3) Nºcmd, Nºcl, Nºprod → adr-liv non Nºcmd, Nºcl→ adr-liv (3.1)
(4) Nºcmd, Nºcl, Nºprod → Nºrep non Nºcl → Nºrep (4.1)
(5) Nºcmd, Nºcl, Nºprod → nom-rep non Nºcl → nom-rep (5.1)
(6) Nºcmd, Nºcl, Nºprod → nom-prod non Nºprod → nom-prod (6.1)
(7) Nºcmd, Nºcl, Nºprod → qté-cmd non Nºcmd, Nºprod → qté-cmd (7.1)
(8) Nºcmd, Nºcl, Nºprod → qtéstock non Nºprod → qtéstock (8.1)
Donc la relation Commande n’est pas en 2FN : Il faut la décomposer.

Décomposition de Commande

(2.1) Nºcmd → date-cmd


R1 (Nºcmd, date-cmd)
(1.1)+(4.1)+(5.1) : Nºcl → nom-cl, Nºrep, nom-rep
R2 (Nºcl, nom-cl, Nºrep, nom-rep)
(6.1)+(8.1) : Nºprod → nom-prod, qtéstock
R3 (Nºprod, nom-prod, qtéstock)
(7.1) Nºcmd, Nºprod → qté-cmd
R4 (Nºcmd, Nºprod, qté-cmd)
(3) Nºcmd, Nºcl→ adr-liv
R5 (Nºcmd, Nºcl, adr-liv)
Commande sera remplacée par les 5 sous-relations ci-dessus
EXERCICES DE BASES DE DONNEES Page |6

2. R1 en 3FN ?
2.1. R1 en 2FN oui
2.2. Dépendances directes ?
Nºcmd → date-cmd oui

R1 est en 3FN

3. R2 en 3FN ?
3.1. R2 en 2FN ? oui
3.2. Dépendances directes
(1) Nºcl → nom-cl oui
(2) Nºcl → Nºrep oui
(3) Nºcl → nom-rep non car Nºrep → nom-rep (3.2)

Donc R2 n’est pas en 3FN : il faut la décomposer.

(1)+(2) : Nºcl → nom-cl, Nºrep

R21 (Nºcl, nom-cl, Nºrep) en 3FN


(3.2) : Nºrep → nom-rep
R22 (Nºrep, nom-rep) en 3FN

R2 est décomposée en 2 sous-relations R21 et R22

4. R3 en 3FN ?
4.1. R3 en 2FN? oui
4.2. Dépendances directes
(1) Nºprod → nom-prod oui

(2) Nºprod → qtéstock oui

R3 est en 3FN

5. R4 en 3FN ?
5.1. R4 en 2 FN ? oui
5.2. Dépendances directes ?
Nºcmd, Nºcl, Nºprod → qté-cmd oui

R4 est en 3FN
EXERCICES DE BASES DE DONNEES Page |7

6. R5 en 3FN ?
6.1. R5 en 2 FN ?
6.2. Dépendances directes ?
Nºcmd, Nºcl → adr-liv oui

R5 est en 3FN

D’où le schéma normalisé :

R1 (Nºcmd, date-cmd) = Commande


R21 (Nºcl, nom-cl, Nºrep) = Client
R22 (Nºrep, nom-rep) = Représentant
R3 (Nºprod, nom-prod, qtéstock) = Produit
R4 (Nºcmd, Nºprod, qté-cmd) = Quantité_commandée
R5 (Nºcmd, Nºcl, adr-liv) = Livraison

Le schéma normalisé peut être représenté comme suit :

Commande Quantité_C Produit


Nºcmd Nºcmd Nºprod
date-cmd Nºprod nom-prod
qté-cmd qtéstock

Livraison Client Représentant


Nºcmd Nºcl Nºrep
Nºcl nom-cl nom-rep
adr-liv Nºrep

Vous aimerez peut-être aussi