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

Description

@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
1
Ville (#code_insee:entier, code_postal:integer, code_pays_alpha-2=>Pays)
2
C1 : Tous les attributs sont NOT NULL
3
4
Pays (#code_pays_alpha-2:char(2), code_pays_alpha-3:char(3), code_pays_un:integer)
5
C1 : code_pays_alpha-3 UNIQUE NOT NULL
6
C2 : code_pays_un UNIQUE NOT NULL