0% ont trouvé ce document utile (0 vote)
186 vues26 pages

Normalisation de Bases de Données 3NF

Ce document décrit les étapes de conception d'une base de données normalisée. Il présente les algorithmes de décomposition d'une relation de la forme 0NF à 1NF puis de 1NF à 3NF, avec des exemples. Le but est de savoir créer des schémas relationnels en troisième forme normale.

Transféré par

Nora Mouhib
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
186 vues26 pages

Normalisation de Bases de Données 3NF

Ce document décrit les étapes de conception d'une base de données normalisée. Il présente les algorithmes de décomposition d'une relation de la forme 0NF à 1NF puis de 1NF à 3NF, avec des exemples. Le but est de savoir créer des schémas relationnels en troisième forme normale.

Transféré par

Nora Mouhib
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Conception de bases de

données normalisées
(décomposition en 3NF)

[Link]/bdd
[Link]

Stéphane Crozat

Paternité - Partage des Conditions Initiales à l'Identique : [Link] 29 janvier 2018


/licenses/by-sa/4.0/fr/
Table des
matières
I - Cours 3

1. Conception de bases de données normalisées ................................................................................................. 3


1.1. Exercice : Étapes de la conception d'une base de données ............................................................................................................. 3
1.2. Algorithme de décomposition 0NF->1NF ..................................................................................................................................... 3
1.3. Exemple de décomposition 0NF->1NF (attribut multivalué) ......................................................................................................... 4
1.4. Algorithme de décomposition 1NF->3NF ..................................................................................................................................... 4
1.5. Exemple de décomposition 1NF->3NF ......................................................................................................................................... 5
1.6. Normalisation par transformation d'attributs en méthodes ........................................................................................................... 6
1.7. Synthèse : Processus de conception d'une base de données normalisée .......................................................................................... 7

2. Exemple de synthèse : MCD-Relationnel-Normalisation-SQL ...................................................................... 8


2.1. Première étape : Modélisation conceptuelle .................................................................................................................................. 8
2.2. Deuxième étape : Modèle relationnel .......................................................................................................................................... 11
2.3. Troisième étape : Dépendances fonctionnelles ............................................................................................................................ 11
2.4. Quatrième étape : Formes normales ........................................................................................................................................... 11
2.5. Cinquième étape : Décomposition ............................................................................................................................................... 12
2.6. Sixième étape : Implémentation SQL LDD .................................................................................................................................. 12

II - Exercices 14

1. Exercice : Project manager ........................................................................................................................... 14

2. Exercice : Objectifs II .................................................................................................................................. 14

3. Exercice : Jeu de construction ....................................................................................................................... 15

4. Exercice : À l'école ....................................................................................................................................... 16

III - Devoir 18

1. Exercice : Gestion d'incidents ....................................................................................................................... 18

Questions de synthèse 20

Solutions des exercices 21

Abréviations 26
Cours

Cours
I
1. Conception de bases de données normalisées
Objectifs
Savoir créer des schémas relationnels en troisième forme normale.

1.1. Exercice : Étapes de la conception d'une base de données [solution n°1 p.21]
[*]

Mettre dans l'ordre les étapes de conception suivantes.

Décomposition des relations jusqu'à arriver en 3NF en préservant les DF

Énonciation de la forme normale avant normalisation

Établissement des DF sous la forme de la fermeture transitive pour chaque relation du modèle

Élaboration du modèle logique en relationnel ou relationnel-objet

Création du code SQL LDD pour un SGBDR ou un SGBDRO

Modélisation conceptuelle en UML ou E-A

Analyse de la situation existante et des besoins

Rétro-conception d'un modèle UML normalisé

1.2. Algorithme de décomposition 0NF->1NF

Méthode : Attributs composés


Soit R une relation. Si R contient un attribut non atomique portant sur des valeurs hétérogènes (correspondant à
un attribut composé au niveau conceptuel), alors l'attribut est décomposé en plusieurs attributs a 1...an.

R(#pk,a,b,...) avec a non atomique se décompose en : R(#pk,a1,a2,...,an,b,...)

3
Exemple de décomposition 0NF->1NF (attribut multivalué)

Méthode : Attributs multivalués


Soit R une relation avec la clé primaire pk. Si R contient un attribut non atomique portant sur des valeurs
homogènes (correspondant à un attribut multivalué au niveau conceptuel), alors R est décomposée en R1 et R2,
tel que :

- R1 est R moins l'attribut a


- R2 est composé de pk et de a, avec (pk,a) clé primaire de R2 et [Link] clé étrangère vers [Link]

R(#pk,a,b,...) avec a non atomique se décompose en :

- R1(#pk,b,...)
- R2(#pk=>R1,#a)

1.3. Exemple de décomposition 0NF->1NF (attribut multivalué)

Exemple : Situation initiale

1 Élève(#login, nom, prénom, uvs)

Exemple d'enregistrement :

1 ('tpassoir', 'Passoire', 'Toto', ('SY02','NF26','NF17'))

Méthode
L'attribut uvs est multivalué (donc non atomique). On va donc créer deux relations, la première sans l'attribut
uvs, et la seconde qui va contenir autant d'enregistrements que de valeur par enregistrement dans
l'enregistrement initial.

Exemple : Situation finale

1 Élève(#login, nom, prénom)


2 UVÉlève(#login=>Élève, #uv)

En reprenant le même exemple, on va avoir l'enregistrement suivant dans Élève :

1 ('tpassoir', 'Passoire', 'Toto')

et les enregistrements suivants dans UVÉlève :

1 ('tpassoir', 'SY02')
2 ('tpassoir', 'NF26')
3 ('tpassoir', 'NF17')

1.4. Algorithme de décomposition 1NF->3NF

Fondamental : Décomposition > 1NF


Pour les NF supérieures à 1, afin de normaliser une relation R on réalise une décomposition en R1 et R2 pour
chaque DFE responsable d'un défaut de normalisation tel que :

- la partie gauche de la DFE :

1. devient la clé primaire de R2


2. devient une clé étrangère de R1 vers R2

4
Exemple de décomposition 1NF->3NF

- la partie droite de la DFE

1. est enlevée de R1
2. est ajoutée comme attributs simples de R2

Méthode : Décomposition 1NF->2NF


Soit R une relation comportant une clé composée de k1 et k1'. Si R contient une DFE de k1' vers des attributs
n'appartenant pas à la clé, alors R est décomposée en R1 et R2, tel que :

- R1 est R moins les attributs déterminés par k1' et avec k1' clé étrangère vers R2
- R2 est composée de k1' et des attributs qu'elle détermine, avec k1' clé primaire de R2

R(#pk,k1,k1',a,b,c,...) avec (k1,K1') clé et k1'→a,b se décompose en :

- R1(#pk,k1,k1'=>R2,c,...)
- R2(#k1',a,b)

Méthode : Décomposition 2NF->3NF


Soit R une relation comportant une DFE de a vers b qui n'appartiennent pas à une clé, alors R est décomposée
en R1 et R2, tel que :

- R1 est R moins les attributs déterminés par a et avec a clé étrangère vers R2
- R2 est composée de a et des attributs qu'elle détermine, avec a clé primaire de R2

R(#pk,a,b,c,...) avec a→b se décompose en

- R1(#pk,a=>R2,c,...)
- R2(#a,b)

1.5. Exemple de décomposition 1NF->3NF

Exemple : Situation initiale

1 Resultat (#pknum,knumetu,kuv,prenom,nom,credits,resultat,obtenu) avec (knumetu,


kuv) clé
DF :

- pknum → knumetu,kuv,prenom,nom,credits,resultat,obtenu
- knumetu,kuv → pknum,prenom,nom,credits,resultat,obtenu
- knumetu → prenom,nom
- kuv → credits
- resultat → obtenu

La relation est en 1NF.

pknum knumetu kuv prenom nom credits resultat obtenu

1 X01 NF17 Pierre Alpha 6 A oui

2 X01 NF26 Pierre Alpha 6 B oui

3 X02 NF17 Alphonse Béta 6 F non

5
Normalisation par transformation d'attributs en méthodes

Exemple d'instance

knumetu → prenom,nom

1 Resultat (#pknum,knumetu=>Etudiant,kuv,credits,resultat,obtenu)
2 Etudiant (#knumetu,prenom,nom)

kuv → credits

1 Resultat (#pknum,knumetu=>Etudiant,kuv=>Uv,resultat,obtenu)
2 Etudiant (#knumetu,prenom,nom)
3 Uv(#kuv,credits)

resultat → obtenu

1 Resultat (#pknum,knumetu=>Etudiant,kuv=>Uv,resultat=>Note)
2 Etudiant (#knumetu,prenom,nom)
3 Uv(#kuv,credits)
4 Note(#resultat,obtenu)

1.6. Normalisation par transformation d'attributs en méthodes


Il arrive que la fonction sous-jacente à la DF soit une fonction simple, que l'on peut calculer. Par exemple pour
la DF : ddn age ( ddn*), on peut calculer age en fonction de ddn par le calcul : age = today() - ddn.

Méthode
Chaque fois que c'est possible, on remplacera un attribut par une méthode si cela permet de supprimer une DF
sans perdre d'information.

Cette solution est à privilégier a priori sur une décomposition.

En relationnel, on supprimera l'attribut de la table et on ajoutera une vue permettant de le retrouver.

Exemple : Existence d'une fonction de calcul simple


Soit la relation en 2NF :

1 personne (#numsecu, nom, prenom, ddn, age) avec ddn → age

On remplacera cette relation par une relation en 3NF et une vue :

1 Personne (#numsecu, nom, prenom, ddn)


2 vPersonne (#numsecu, nom, prenom, ddn, age) avec age = today() - ddn

Exemple : Cas de transformation d'un héritage exclusif par la classe mère


Soit le schéma UML suivant :

6
Synthèse : Processus de conception d'une base de données normalisée

Une transformation de l'héritage par la classe mère donnera :

1 Salle (#nom:string, surface:string, nbplaces:int, type:{Réunion|Bureau})


2 DF : nom → surface, type, nbplaces et nbplaces → type

On peut donc supprimer l'attribut type et aboutir à la relation en 3NF :

1 Salle (#nom:string, surface:string, nbplaces:int)


2 vSalle (nom, surface, nbplaces, type) avec SI nbplace IS NULL ALORS type=Bureau
SINON type=Réunion

1.7. Synthèse : Processus de conception d'une base de données normalisée


1. Analyse et clarification du problème posé
2. Modélisation conceptuelle en UML
Résultat : MCD1
3. Traduction en relationnel en utilisant les règles de passage UML vers relationnel
Résultat : MLD1
4. Établissement des DF sous la forme de la fermeture transitive pour chaque relation du modèle
Résultat : MLD1 avec F+
5. Établissement de la forme normale
Résultat : MLD1 avec F+ et NF
6. Décomposition des relations jusqu'à arriver en 3NF en préservant les DF
Résultat : MLD2 avec F+ et 3NF
7. Rétro-conception du modèle UML correspondant
Résultat : MCD2
8. Implémentation en SQL du modèle MLD2

  

*  *

La normalisation permet de décomposer un schéma relationnel afin d'obtenir des relations non redondantes.

La 3NF* est souhaitable car toujours possible à obtenir, sans perte d'information et sans perte de DF*. La BCNF* est
également indiquée, car elle est un peu plus puissante, et plutôt plus simple que la 3NF.

La BCNF* n'est pas encore suffisante pour éliminer toutes les redondances. Il existe pour cela les 4NF* et 5NF* qui
ne sont pas abordées dans ce cours. Notons également que les cas de non-4NF et de non-5NF sont assez rares dans la
réalité.

7
Exemple de synthèse : MCD-Relationnel-Normalisation-SQL

2. Exemple de synthèse : MCD-Relationnel-Normalisation-SQL


Problème posé

Soit un modèle conceptuel représentant :

- un type d'entité "chercheur", identifié par le numéro de sécurité sociale, et possédant les autres propriétés
suivantes : le nom, le nom de l'université à laquelle il appartient, la ville dans laquelle est basée cette
université.
- un type d'entité "professeur", héritant de "chercheur"
- un type d'entité "doctorant", héritant de "chercheur"
- une association de type "encadrement" entre professeur et doctorant (un professeur pouvant encadrer
plusieurs doctorants et un doctorant n'ayant qu'un et un seul directeur de thèse).

Afin de réaliser le modèle de données :

1. Dessiner le modèle conceptuel


2. Traduire le modèle conceptuel en modèle logique relationnel.
3. Après avoir identifié les DF, normaliser le modèle relationnel en BCNF.
4. Ecrire les instructions SQL de création d'un tel modèle.

2.1. Première étape : Modélisation conceptuelle

Méthode : Modélisation conceptuelle : Entité Chercheur

Conception UML (1/4)

8
Méthode : Modélisation conceptuelle : Entité Professeur

Conception UML (2/4)

9
Méthode : Modélisation conceptuelle : Entité Doctorant

Conception UML (3/4)

Méthode : Modélisation conceptuelle : Association Encadrement

Conception UML (4/4)

10
2.2. Deuxième étape : Modèle relationnel

Méthode : Modèle relationnel : Héritage


Choix de transformation de l'héritage : L'héritage est exclusif (les professeurs ne sont plus doctorants), mais pas
complet, car l'association Encadre n'est pas symétrique. On choisit donc un héritage par les classes filles
(Chercheur étant par ailleurs abstrait).

Méthode : Modèle relationnel : Entité Professeur

1 Professeur (#N°SS:int(13), Nom:char(20), NomUniv:char(50), VilleUniv:char(20))

Méthode : Modèle relationnel : Entité Doctorant

1 Professeur (#N°SS:int(13), Nom:char(20), NomUniv:char(50), VilleUniv:char(20))


2 Doctorant (#N°SS:int(13), Nom:char(20), NomUniv:char(50), VilleUniv:char(20))

Méthode : Modèle relationnel : Association EncadréPar

1 Professeur (#N°SS:int(13), Nom:char(20), NomUniv:char(50), VilleUniv:char(20))


2 Doctorant (#N°SS:int(13), Nom:char(20), NomUniv:char(50), VilleUniv:char(20),
EncadrePar=>Professeur)

2.3. Troisième étape : Dépendances fonctionnelles

Méthode : Dépendances fonctionnelles : DF évidente (professeur)


- Professeur.N°SS → Nom, NomUniv, VilleUniv

Méthode : Dépendances fonctionnelles : DF évidente (doctorant)


- Professeur.N°SS → Nom, NomUniv, VilleUniv
- Doctorant.N°SS → Nom, NomUniv, VilleUniv, EncadrePar

Méthode : Dépendances fonctionnelles : DF déduites du sens des propriétés


Connaissant l'université, on connaît la ville, donc :

- Professeur.N°SS → Nom, NomUniv, VilleUniv


- [Link] → VilleUniv
- Doctorant.N°SS → Nom, NomUniv, VilleUniv, EncadrePar
- [Link] → VilleUniv

2.4. Quatrième étape : Formes normales

Méthode : Forme normale : 1NF


Le schéma est en 1NF (clés et attributs atomique).

Méthode : Forme normale : 2NF


Le schéma est en 2NF (la clé est composée d'un seul attribut)

11
Méthode : Forme normale : 3NF
La schéma n'est pas en 3NF : NomUniv → VilleUniv

2.5. Cinquième étape : Décomposition

Méthode : Normalisation en BCNF : Résultat

1 Professeur (#N°SS:int(13), Nom:char(20), NomUniv=>Univ)


2 Doctorant (#N°SS:int(13), Nom:char(20), NomUniv=>Univ, EncadrePar=>Professeur)
3 Univ (#NomUniv:char(50), VilleUniv:char(20))

Méthode : Normalisation en BCNF : Vérification


Le modèle est bien en BCNF, toutes les DF ont pour source une clé.

Méthode : Normalisation en BCNF : Conservation des DF


La transformation préserve les DF car :

- N°SS → NomUniv et [Link] → Ville


- Donc N°SS → [Link] (par transitivité)

2.6. Sixième étape : Implémentation SQL LDD

Méthode : Implémentation SQL : Professeur

1 Create Table Professeur (


2 N°SS INTEGER(13) PRIMARY KEY,
3 Nom CHAR(20) NOT NULL,
4 NomUniv CHAR(50) REFERENCES Univ(Nom));

Méthode : Implémentation SQL : Doctorant

1 Create Table Professeur (


2 N°SS INTEGER(13) PRIMARY KEY,
3 Nom CHAR(20) NOT NULL,
4 NomUniv CHAR(50) REFERENCES Univ(Nom));

1 Create Table Doctorant (


2 N°SS INTEGER(13) PRIMARY KEY,
3 Nom CHAR(20) NOT NULL,
4 NomUniv CHAR(50) REFERENCES Univ(Nom),
5 EncadrePar INTEGER(13) REFERENCES Professeur(N°SS));

Méthode : Implémentation SQL : Univ

1 Create Table Professeur (


2 N°SS INTEGER(13) PRIMARY KEY,
3 Nom CHAR(20) NOT NULL,
4 NomUniv CHAR(50) REFERENCES Univ(Nom));

1 Create Table Doctorant (


2 N°SS INTEGER(13) PRIMARY KEY,
3 Nom CHAR(20) NOT NULL,

12
4 NomUniv CHAR(50) REFERENCES Univ(Nom),
5 EncadrePar INTEGER(13) REFERENCES Professeur(N°SS));

1 Create Table Univ (


2 Nom CHAR(50) PRIMARY KEY,
3 Ville CHAR(20) );

13
Exercices

Exercices
II
1. Exercice : Project manager
[15 min]
Soit la table suivante (Emp signifie Employee, Pro signifie Project et Man signifie Manager).

Soit les dépendances fonctionnelles suivantes :

- Emp → EmpName
- Emp → Pro
- Pro → ProName
- Pro → Man
- Pro → ManName
- Man → ManName

Question 1 [solution n°2 p.21]


[* ]

Montrer que ce modèle n'est pas en 3NF.

Question 2 [solution n°3 p.22]


[* ]

Proposer un modèle équivalent en 3NF.

2. Exercice : Objectifs II
[15 min]
Vous êtes le président de l'association "Objectifs", dont l'objet est d'aider ses étudiants membres à mener des
projets dans le cadre de leurs études. Pour le moment cette association gère tous ces projets avec un logiciel de
type tableur.

14
Exercice : Jeu de construction

Exemple de fichier de gestion des projets de l'association Objectifs

La concision et la clarté de la rédaction, ainsi que la bonne mobilisation des concepts et de la terminologie du
domaine des bases de données seront intégrées à l'évaluation.

Question 1 [solution n°4 p.22]


[*]

On considérera ce tableau comme une relation, et on admettra que cette extension est suffisante pour
l'interprétation des données :

1. Démontrer que cette relation ne peut admettre qu'une seule clé.


2. Démontrer que la 1NF* n'est pas respectée à plusieurs reprises (on peut trouver jusque six causes
empêchant la 1NF, proposez-en un maximum).

Question 2 [solution n°5 p.22]


[*]

On propose une première décomposition pour que le modèle soit en 1NF.

1 Projet (#Num, Nom, Debut, Fin, Specialite, CDP-Prenom, CDP-Nom, CDP-Specialite)


2 Tache (#NumProjet=>Projet, #NumTache, Nom, Participant-Prenom, Participant-Nom,
Participant-Specialite)
3 Partenaire (#Nom, Description)
4 Partenariat (#Partenaire=>Partenaire, #Projet=>Projet, role)

1. Montrer que ce modèle n'est pas en 3NF et lister l'ensemble des DFE responsables.
2. Proposer une décomposition en 3NF.

3. Exercice : Jeu de construction


[30 min]
Soit le diagramme UML ci-après décrivant des constructions composées d'éléments et faisant appel à des
compétences pour leur montage.

Par exemple une "Maison de type I" contiendra :

- 100 m² de "Brique traditionnelle" (Type de l'élément), pour un prix de 2 euros par unité (Prix/U), 12
briques par m² (U/m²) et 100g / brique (Poids/U)
- 125 m² de "Tuile plate" (Type de l'élément), pour un prix de 4 euros par unité (Prix/U), 24 tuile par m²
(U/m²) et 75g / tuile (Poids/U)

et fera appel à :

- 500h de travail de "Maçon" (Type de compétence), pour un tarif horaire de 20€/h


- 425h de travail de "Couvreur" (Type de compétence), pour un tarif horaire de 30€/h
- 75h de "Chef de chantier" (Type de compétence), pour un tarif horaire de 45€/h

15
Exercice : À l'école

Modèle UML

Question 1 [solution n°6 p.23]


[* ]

Effectuer le passage au relationnel de ce modèle.

Question 2 [solution n°7 p.23]


[* ]

Sachant que deux mêmes types d'élément ont toujours les mêmes caractéristiques (Prix/U, U/m², Poids/U) et
que deux mêmes types de compétence ont toujours les mêmes prix (Prix/h), établir la fermeture transitive des
DFE et la forme normale de ce modèle (justifier).

Donner un exemple de données redondantes.

Indice :
Deux types de maison ont évidemment des quantités d'éléments (m²) et de compétences (h) différentes.

Question 3 [solution n°8 p.23]


[* ]

Normaliser le modèle en 3NF (justifier, et montrer que la transformation est sans perte).

Question 4 [solution n°9 p.24]


[* ]

En repartant de la forme normalisée en 3NF, rétro-concevoir un modèle UML qui aurait permis d'aboutir
directement à ce schéma non redondant.

4. Exercice : À l'école
[15 min]
Une école souhaite se doter d'une base de données pour suivre ses effectifs (élèves et professeurs) ainsi que les
classes auxquelles ils sont rattachés. L'analyse des besoins est la suivante :

- Les classes sont identifiées par un niveau et une lettre (6-A, 6-B, 5-A, ...).
- Les classes peuvent avoir un programme adapté suivant un thème unique (sport-étude, bilingue anglais ou
bilingue allemand).
- Les classes ont un professeur principal et plusieurs professeurs intervenant dans leur spécialité.
- Les classes accueillent des élèves.

16
Exercice : À l'école

- Les élèves sont sous la responsabilité d'un parent (qui peut aussi être professeur, voire lui même élève).

École

Question 1 [solution n°10 p.24]


[*]

À partir du schéma UML proposé, réaliser le passage au modèle relationnel en justifiant les choix pour les
deux héritages.

Question 2 [solution n°11 p.24]


[*]

Montrer que ce schéma n'est pas en première forme normale, et proposer une correction du schéma relationnel.

17
Devoir

Devoir
III
1. Exercice : Gestion d'incidents
[30 minutes]
Soit la table ci dessous permettant d'enregistrer des relevés d'incident sur les chaînes de montage d'un grand
groupe de construction de tondeuses.

Chaque ligne de la table permet de relever un incident.

tIncident

Soit le relevé des DF suivant :

- Num → Dat, Gra, Nom, Typ


- Pie → Mag, Fou, Mod, Usi
- Mod → Cat
- Typ → Fam

Question 1

Établissez la fermeture transitive des DF. Justifiez votre réponse.

18
Exercice : Gestion d'incidents

Question 2

Donnez toutes les clés possibles de ce modèle et choisissez la meilleure candidate comme clé primaire.
Justifiez votre réponse.

Question 3

En quelle forme normale est ce schéma (vos clés font partie du schéma) ? Justifiez votre réponse.

Question 4

Proposez une couverture minimale des DF. Justifiez votre réponse.

Question 5

Proposez un modèle relationnel décomposé normalisé en 3NF, sans perte. Justifiez votre réponse.

Question 6

Montrez que le modèle conceptuel qui aurait permis de trouver directement ce modèle normalisé comprend
trois associations.

19
Questions de synthèse

Questions de synthèse

Quelles sont les étapes de la conception d'une base de données normalisée ?

..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................

Pourquoi doit-on réaliser une décomposition chaque fois qu'une DFE est responsable d'un défaut de normalisation ?

..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................

20
Stéphane Crozat (Contributions : Antoine Vincent, Dritan Nace)
Solutions des exercices

Solutions des exercices

> Solution n°1 Exercice p. 3

Mettre dans l'ordre les étapes de conception suivantes.

Analyse de la situation existante et des


Modélisation conceptuelle en UML ou E-A
besoins

Élaboration du modèle logique en relationnel ou relationnel-objet

Établissement des DF sous la forme de la fermeture transitive pour chaque relation du modèle

Énonciation de la forme normale avant normalisation

Décomposition des relations jusqu'à arriver en 3NF en préservant les DF

Rétro-conception d'un modèle UML normalisé

Création du code SQL LDD pour un SGBDR ou un SGBDRO

> Solution n°2 Exercice p. 14

Fermeture transitive F+

- Emp → EmpName
- Emp → Pro
- Emp → ProName
- Emp → Man
- Emp → ManName
- Pro → ProName
- Pro → Man
- Pro → ManName
- Man → ManName

Clé

- Emp

21
Stéphane Crozat (Contributions : Antoine Vincent, Dritan Nace)
Solutions des exercices

2NF

Cette relation est 1NF car elle possède une clé Emp (et l'on pose que ses attributs sont atomiques.)

Cette relation est 2NF car la seule clé candidate Emp n'est composée que d'un attribut.

Cette relation n'est pas 3NF car des attributs non clés dépendent d'attributs non clés :

- Pro → ProName, Man


- Man → ManName

> Solution n°3 Exercice p. 14

On doit procéder ici à deux décompositions, pour aboutir à la solution suivante :

1 EMPLOYEE (#Emp, EmpName, Pro=>PROJECT)


2 PROJECT (#Pro, ProName, Man=>MANAGER)
3 MANAGER (#Man, ManName)

> Solution n°4 Exercice p. 15

1. La colonne "Numéro" peut être une clé et c'est la seule possible :

- La colonne "Projet / Tâche" ne peut pas être une clé car elle contient deux valeurs identiques.
- Toutes les autres colonnes admettent au moins une valeur nulle et ne peuvent donc faire partie
d'une clé.
- Il n'est pas possible de définir une clé composée car elle contiendrait soit "Numéro" (qui est déjà
une clé, elle ne serait alors pas minimale) soit une colonne avec des valeurs nulles (ce qui est
interdit).

2. Les colonnes suivantes ne sont pas atomiques :

- "Numéro" contient le numéro de projet et de tâche


- "Chef de projet" et "Participants tâches" contiennent des noms, prénoms et spécialités de membres
- Dates contient un début et une fin de période
- Partenaire contient un nom et une description de partenaire
- Partenaire contient plusieurs partenaires

> Solution n°5 Exercice p. 15

DFE responsables

- Projet : CDP-Prenom, CDP-Nom → CDP-Specialite


- Tâche : Participant-Prenom, Participant-Nom → Participant-Specialite

Décomposition

1 Projet (#Num, Nom, Debut, Fin, Specialite, CDP-Prenom=>Membre, CDP-Nom=>Membre)


2 Tache (#NumProjet=>Projet, #NumTache, Nom, Participant-Prenom=>Membre,
Participant-Nom=>Membre)
3 Membre (#Nom, #Prenom, Specialite)
4 Partenaire (#Nom, Description)

22
Stéphane Crozat (Contributions : Antoine Vincent, Dritan Nace)
Solutions des exercices

5 Partenariat (#Partenaire=>Partenaire, #Projet=>Projet, role)

On observe que CDP et Participant renvoient à une même entité que l'on nomme Membre.

> Solution n°6 Exercice p. 16

1 Construction (#Nom:String)
2 Élément (#Type:String, #Construction=>Construction, m²:Integer, Prix/U:Integer, U
/m²:Integer, Poids/U:Integer)
3 Compétence (#Type:String, #Construction=>Construction, h:Integer, Prix/h:Integer)

> Solution n°7 Exercice p. 16

Fermeture transitive des DFE

1 Élé[Link], Élé[Link] → m²
2 Élé[Link] → Prix/U
3 Élé[Link] → U/m²
4 Élé[Link] → Poids/U
5 Compé[Link], Compé[Link] → h
6 Compé[Link] → Prix/h

Complément
DF élémentaire (cf. p.)

Notion de fermeture transitive des DFE (cf. p.)

Forme normale

Le modèle est en 1NF, les attributs sont atomiques et les relations ont des clés.

Elle n'est pas en 2NF car des parties de clé (Élé[Link] et Compé[Link]) déterminent des
attributs.

Complément
Deuxième forme normale (cf. p.)

Exemple

Maison I Maçon 500 20

Maison II Maçon 600 20

Exemple de données redondantes

> Solution n°8 Exercice p. 16

1 Construction (#Nom:String)
2 Élément (#Type=>TypeÉlément, #Construction=>Construction, m²:Integer)
3 TypeÉlément (#Type:String, Prix/U:Integer, U/m²:Integer, Poids/U:Integer)

23
Stéphane Crozat (Contributions : Antoine Vincent, Dritan Nace)
Solutions des exercices

4 Compétence (#Type=>TypeCompétence, #Construction=>Construction, h:Integer)


5 TypeCompétence (#Type:String, Prix/h:Integer)

Complément
Algorithme de décomposition (cf. p.4)

La décomposition est sans perte car :

- Les attributs ont été préservés  : JointureNaturelle(Élément,TypeÉlément) et


JointureNaturelle(Compétence,TypeCompétence) nous permettent de retrouver les
relations Élément et Compétence d'origine
- Les DFE ont été préservées : la fermeture transitive du modèle décomposé est exactement la même que
celle du modèle d'origine

> Solution n°9 Exercice p. 16

Modèle normalisé

> Solution n°10 Exercice p. 17

Gestion de l'héritage

- Personne : La classe mère est abstraite, l'héritage est non exclusif et non complet, c'est donc un cas
problématique. La meilleure solution est ici un choix d'héritage par référence, l'héritage par les classes
filles introduirait de la redondance et l'héritage par la classe mère poserait des problèmes au niveau des
associations.
- Classe : La classe mère est non abstraite et l'héritage est complet, c'est un cas simple, on adopte un
héritage par la classe mère.

1 personne (#num:entier,nom:chaîne, prénom:chaîne, date_de_naissance:date)


2 élève (#num=>personne, moyenne_générale:réel, responsable=>parent, classe=>classe)
3 parent (#num=>personne, profession:chaîne)
4 professeur (#num=>personne, matière:chaîne)
5 classe (#id:entier(1)-char(1), type
{normal|sport_étude|bilingue_anglais|bilingue_allemand}, prof_principal=>professeur)
6 enseigne (#professeur=>professeur, #classe=>classe)

24
Stéphane Crozat (Contributions : Antoine Vincent, Dritan Nace)
Solutions des exercices

> Solution n°11 Exercice p. 17

Le schéma n'est pas en première forme normale car l'attribut [Link] n'est pas atomique. Ici il suffit de
séparer cet attribut en deux sous-attributs :

1 classe (#niveau:entier(1), #lettre:char(1) ...)


2 élève (... [Link]=>classe, [Link]=>classe)

25
Stéphane Crozat (Contributions : Antoine Vincent, Dritan Nace)
Signification des abréviations

Abréviations
1NF : First Normal Form

3NF : Third Normal Form

4NF : Fourth Normal Form

5NF : Fifth Normal Form

BCNF : Boyce-Codd Normal Form

DDN : Date De Naissance

DF : Dépendance Fonctionnelle

26
Stéphane Crozat (Contributions : Antoine Vincent, Dritan Nace)

Vous aimerez peut-être aussi