Codes normalisés
[15 min]
On considère la classe Ville ci-après et on renomme les attributs comme suit :
code_insee : ci
code_postal : cp
code_pays_alpha-2 : a2
code_pays_alpha-3 : a3
code_pays_un : un

@startuml
hide circle
class Ville {
code_insee : entier {unique frozen}
code_postal : entier {frozen}
code_pays_alpha-2 : char {frozen}
code_pays_alpha-3 : char {frozen}
code_pays_un : entier {frozen}
}
@enduml
On pose les DF suivantes :
ci → cp, a2, a3, un
a2 → a3, un
a3 → a2, un
un → a2, a3
Question
Exprimez la fermeture transitive et trouvez les clés.
Solution
F+ et clé
Le jeu de DF donné exprime une F+, il n'y aucune autre DFE à énoncer.
ci est la seule clé
Question
Le modèle est-il en 3NF ? Justifiez et si nécessaire, normalisez.
Solution
NF
Il y a une clé et les attributs sont atomiques, on est en 1NF.
La clé ne comporte qu'un attribut, on est en 2NF
Il existe des attributs non clés qui déterminent des attributs non clés, on n'est pas en 3NF.
Décomposition en 3NF
Ville (#code_insee:entier, code_postal:integer, code_pays_alpha-2=>Pays)
C1 : Tous les attributs sont NOT NULL
Pays (#code_pays_alpha-2:char(2), code_pays_alpha-3:char(3), code_pays_un:integer)
C1 : code_pays_alpha-3 UNIQUE NOT NULL
C2 : code_pays_un UNIQUE NOT NULL