• Aucun résultat trouvé

Formes normales

Dans le document UML 2 pour les bases de donnees (Page 120-126)

La normalisation permet de construire des schémas optimaux en terme d’intégrité et de cohérence des données stockées.

Première forme normale

Une relation est en première forme normale si chaque n-uplet contient une seule valeur par attribut.

En d’autres termes, au niveau de l’extension d’une relation, à l’intersection d’une ligne et d’une colonne, on ne doit trouver qu’une et une seule valeur (qui peut être diverse : nombre, chaîne de caractères, date, image, etc.)

1. Notez que la jointure entre deux relations permet de constituer une troisième relation sur la base d’une expression (le plus souvent l’égalité) entre attributs des relations à mettre en jointure.

2. Remarquez que la projection d’une relation R sur un attribut a consiste à ne garder que la colonne a dans la relation résultat.

Figure 2-8 Schéma relationnel

PC[cpu, prixMoyen, delaiMoyen]

Etudiant[codetu, nomEtu, cpu#]

La relation Vols1 respecte la règle de la première forme normale. À l’intersection de chaque ligne et pour chaque colonne il n’existe qu’une seule valeur. Il y a cependant des redondances (nom de la compagnie, sexe du pilote et type de l’aéronef). Dans cet exemple, des pilotes peuvent voler pour le compte de différentes compagnies.

Si on devait définir une clé pour la relation Vols1, ce serait la concaténation de ncomp, nomPilote, immat. Cette combinaison permet en effet d’identifier chaque ligne. Le nombre d’heures de vol dépend au minimum des valeurs de ces trois attributs.

Les tables relationnelles sont nativement toutes en première forme normale, car les attributs de type tableau ne sont pas autorisés au niveau de la base de données.

Les modèles de données ne respectant pas la première forme normale sont appelés modèles NF2 (Non First Normal Form) [MAK 77]. Le modèle objet-relationnel permet de s’affranchir de la première forme normale.

La figure 2-10 présente une relation NF2 équivalente à Vols1 (il en existe d’autres [SOU 99]).

Il existe ici une double imbrication : la collection Avions est imbriquée dans la collection Pilotes. À l’intersection d’une ligne et d’une colonne, il y a plusieurs valeurs (à l’intersection de la deuxième ligne et de la troisième colonne, il y a SanFilippo, Bidal et Soutou).

Figure 2-9 Relations en première forme normale

Vols1

ncomp compagnie nomPilote sexe typeAvion immat nbHeuresVol

1 Air-France Bidal F CRJ F-CLAR 600

1 Air France Bidal F A320 F-ROMA 345

1 Air France Bidal F A320 F-GLDX 120

1 Air France Bidal F B727 F-CSTU 150

1 Air France Labat F A320 F-GLDX 70

1 Air France Labat F A320 F-ROMA 340

1 Air France Labat F B727 F-CSTU 900

2 Quantas SanFilippo G A330 F-STEF 7500

2 Quantas SanFilippo G A320 F-GLDX 250

2 Quantas Bidal F B727 F-CSTU 2500

2 Quantas Soutou G B747 F-PAUL 750

2 Quantas Soutou G A340 F-ABDL 2500

Deuxième forme normale

Une relation est en deuxième forme normale si elle est en première forme normale, d’une part, et si tout attribut n’appartenant pas à la clé primaire est en dépendance fonctionnelle élémentaire avec la clé, d’autre part.

Cette définition n’est exacte que si la relation ne possède qu’une clé candidate. En effet, consi-dérons la relation R[a,b,c,d,e] pour laquelle deux clés sont candidates (a,b et c,d) avec la DF aÆe. Si on choisit a,b comme clé primaire, la relation R[a,b,c,d,e]

n’est pas en deuxième forme normale, car dans la DF aÆe, l’attribut e, n’appartenant pas à la clé primaire, n’est pas en dépendance fonctionnelle élémentaire avec la clé. En revanche si on choisit c,d comme clé primaire, la relation R[c,d,a,b,e] est en deuxième forme normale mais ne sera pas en troisième forme normale (voir plus loin).

La relation Avions2 n’est pas en deuxième forme normale, car la dépendance immat Æ nomConst n’est pas une DF directe. Il suffit en effet de connaître le type de l’aéronef pour en déduire le constructeur. Les DF immatÆ typeAvion et typeAvion Æ nomConst sont directes.

Bidal F B727 F-CSTU 2500

Soutou G B747 F-PAUL 750

A340 F-ABDL 2500

Troisième forme normale

Une relation est en troisième forme normale si elle respecte la deuxième forme normale et si les dépendances fonctionnelles entre la clé primaire et les autres attributs sont directes.

Le seul inconvénient d’un schéma relationnel en troisième forme normale, c’est qu’il fait intervenir un nombre plus important de relations du fait de la décomposition. Cette inflation entraîne de nombreuses jointures coûteuses lors des interrogations de la base. En contrepartie, il n’existe plus de redondances d’informations, sources d’erreurs lors de manipulations sous SQL (ajout, modification ou suppression d’enregistrements).

Reprenons à présent l’exemple précédent de la relation R[c,d,a,b,e] avec la DF aÆe. Cette relation n’est pas en troisième forme normale, car il existe un graphe de transitivité avec les DF suivantes : c,dÆa ; c,dÆe et aÆ e. La DF c,dÆ e n’est pas directe. Le schéma en troisième forme normale est donc composé des deux relations R1[c,d,a#,b] et R2[a,e].

Considérons à présent l’exemple des vols. Le schéma relationnel en troisième forme normale fait apparaître six relations à partir d’une seule (Vols1). La relation Avions2 a été décompo-sée en Avions3 et Constructeurs3 de manière à éliminer la DF indirecte immat Æ nomConst.

Les colonnes compagnie, sexe et typeAvion ont disparu de la relation Vols3 car les DF :

ncomp,nomPilote,immatÆcompagnie

ncomp,nomPilote,immatÆsexe

ncomp,nomPilote,immatÆtypeAvion

n’étaient pas minimales en partie gauche. Pour la première DF, par exemple, il suffit de connaître le numéro de compagnie pour avoir le nom de cette dernière. Cette DF se simplifie ainsi en ncompÆcompagnie (qui donne lieu à la définition de la relation Compagnie3).

Figure 2-11 Relation n’étant pas en deuxième forme normale Avions2

immat typeAvion nomConst

F-CLAR CRJ Canadian Regional Jet

F-ROMA A320 Airbus

F-GLDX A320 Airbus

F-CSTU B727 Boeing

F-STEF A330 Airbus

F-PAUL B747 Boeing

F-ABDL A340 Airbus

Forme normale de Boyce-Codd

Une relation est en forme normale de Boyce-Codd [COD 74] si elle est en troisième forme normale et que le seul déterminant (membre gauche des dépendances fonctionnelles) existant dans la relation est la clé primaire.

Au niveau conceptuel, cette forme est illustrée aux figures 1-72 et 1-73. L’exemple suivant décrit en extension la relation ProductionRegion. Les DF existantes sont :

typeAvion,paysÆ region

Figure 2-12 Relations en troisième forme normale Compagnie3

regionÆ pays

L’existence de la dernière DF permet de statuer que cette relation n’est pas en forme normale de Boyce-Codd.

La décomposition de cette relation en forme normale de Boyce-Codd entraîne la définition d’une relation additionnelle, car la DF à préserver est regionÆpays

Toute relation a une décomposition sans perte en forme normale de Boyce-Codd. Par contre, une telle décomposition ne préserve pas toutes les DF. Dans notre exemple, la DF typeA-vion,paysÆregion a été supprimée mais sans perte, car il est possible de la retrouver en réalisant une jointure entre les deux relations résultantes.

Quatrième forme normale

Une relation est en quatrième forme normale si elle respecte la forme normale de Boyce-Codd.

S’il n’existe pas de dépendances multivaluées ou si x ÆÆ y | z existe, alors tous les autres attributs a, b, c… de la relation sont en DF avec x (x Æ a, b, c…).

Une autre définition [TEO 94] précise qu’une relation est en quatrième forme normale si elle respecte la forme normale de Boyce-Codd. S’il existe une DM x ÆÆ y, elle est soit triviale (voir la section Dépendances multivaluées), soit x est clé pour la relation.

Figure 2-13 Relation n’étant pas en forme normale de Boyce-Codd ProductionRegion

typeAvion pays region

A320 France Blagnac

ATR-42 France Blagnac

A319 France Blagnac

A320 Allemagne Hambourg

A340 Allemagne Francfort

Figure 2-14 Relations en forme normale de Boyce-Codd AvionRegionBC

typeAvion region

A320 Blagnac

ATR-42 Blagnac

A319 Blagnac

A320 Hambourg

A340 Francfort

RegionPaysBC

region pays

Blagnac France

Hambourg Allemagne Francfort Allemagne

Nous avons donné un exemple de relations en quatrième forme normale dans la section Dépendances multivaluées (figure 2-5).

Puisqu’il existe la DM typeAvion ÆÆ qualif | nomPilote dans la relation QualifsAvions1, cette relation n’est pas en quatrième forme normale. La décomposition en deux relations, en quatrième forme normale, est détaillée figure 2-15.

Cinquième forme normale

Une relation est en cinquième forme normale (aussi appelée « forme normale de projection-jointure ») si chaque dépendance de projection-jointure respecte la deuxième forme normale et si les dépendances fonctionnelles entre la clé primaire et les autres attributs sont directes.

Dans le document UML 2 pour les bases de donnees (Page 120-126)