Selon les trois principaux types de formes normales :
exemple :
Produit | Fournisseur |
---|---|
téléviseur | VIDEO SA, HITEK LTD |
Dans ce cas les valeurs du fournisseur sont multivaluées et ne sont pas atomiques. Pour que cette relation soit en première forme normale, il faut décomposer les attributs de la colonne fournisseur comme suit :
solution:
Produit | Fournisseur |
---|---|
téléviseur | VIDEO SA |
téléviseur | HITEK LTD |
exemple:
Produit | Fournisseur | Adresse fournisseur |
---|---|---|
téléviseur | VIDEO SA | 13 rue du cherche-midi |
écran plat | VIDEO SA | 13 rue du cherche-midi |
téléviseur | HITEK LTD | 25 Bond Street |
Admettons que la clé de cette table soit une clé composite (produit - fournisseur). Dans le cas d'un changement d'adresse d'un fournisseur, il faudra faire preuve de beaucoup d'attention pour n'oublier aucun endroit où l'adresse est mentionnée. En effet, on constate que le champ adresse ne dépend que d'une partie de la clé : le champ fournisseur, ce qui induit la possibilité d'une redondance au sein de la table. Il convient donc de scinder la table en deux:
solution en seconde forme normale :
|
|
De cette manière, un changement d'adresse ne donne lieu qu'à une seule modification dans la table des fournisseurs.
exemple:
Fournisseur | Adresse fournisseur | Ville | Pays |
---|---|---|---|
VIDEO SA | 13 rue du cherche-midi | PARIS | FRANCE |
HITEK LTD | 25 Bond Street | LONDON | ENGLAND |
Le pays de l'adresse n'est pas dépendant de la clé de la table, à savoir le nom du fournisseur, mais est fonction de la ville de l'adresse. De nouveau, il est préférable de scinder la table en deux:
solution normalisée :
|
|
De cette manière, une modification de l'orthographe pour un pays (par exemple : ENGLAND en GREAT BRITAIN) ne donnera lieu qu'à une seule modification.
Dans la pratique, l'identification soignée de tous les objets élémentaires de l'application concernée (pays, ville, client, fournisseur, produit, commande, facture, etc) est la première étape avant de leur créer chacun leur table. Chaque table peut alors être soumise au test de respect/non de telle ou telle forme normale. En général, toute valeur de données agrégées et toute répétition d'une valeur de donnée, dans une colonne peuplée, sont potentiellement des violations de forme normale.