Normalisation par transformation d'attributs en méthodes
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 :
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