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[1]), 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.

ExempleExistence 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

ExempleCas 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