SYSTEMES de GESTION de BASES de DONNEES
Notion de clés et troisième forme normale

5.1 - CLE DE RELATION

Définition

Une clé de relation R(A1, ..., An) est un sous ensemble X des attributs tel que :

Exemple

Dans la BD "Avion", NUM-VOL est une clé de la relation VOL.

Remarque

Toute relation possède au moins une clé : A1, ..., An -> A1, ..., An, il suffit d'éliminer les Ai jusqu'à la vérification des 2 conditions.

Une relation peut avoir plusieurs clés, on en choisit en général une comme clé primaire, les autres sont appelées clés candidates.

5.2 - LES TROIS PREMIERES FORMES NORMALES

Ces formes ont été introduites par Codd pour décomposer les relations sans pertes.

5.2.1 Première forme normale

Définition

Une relation est en 1NF si tout attribut est atomique.

Chaque attribut ne peut être décomposé en plusieurs autres. La relation PERSONNE(AGE, ADRESSE) n'est pas en 1NF si par exemple on a ADRESSE(VILLE, RUE, NUMERO).

5.2.2 Deuxième forme normale

Définition

Une relation est en 2NF ssi :

1) elle est en 1NF,

2) tout attribut n'appartenant pas à une clé ne dépend pas que d'une partie de cette clé.

Exemple

Si l'on choisit la clé primaire NUM-VOL, la relation VOL est en 2NF.

Exemple

Si l'on choisit la clé (NUM-AV, H-D), la relation VOL n'est pas en 2NF car NOM-AV, LOC-AV, CAP-AV ne dépendent que d'une partie de la clé NUM-AV.

Dans le cas précédent, on doit décomposer la relation VOL de manière à n'avoir que des relations en 2NF.

Par exemple :

AVION(NUM-AV, NOM-AV, LOC-AV, CAP-AV)

VOL1(NUM-VOL, NUM-AV, NUM-PIL, NOM-PIL, ADR-PIL, H-D, V-D, H-A, V-A)

5.2.3 Troisième forme normale

Définition

Une relation est en 3NF ssi

1) elle est en 2NF,

2) tout attribut n'appartenant pas à une clé ne dépend pas d'un attribut non clé.

Exemple

PILOTE(NUM-PIL, NOM-PIL, ADR-PIL) est en 3NF.

Exemple

AVION(NUM-AV, NOM-AV, LOC-AV, CAP-AV) n'est pas en 3NF car NOM-AV -> CAP-AV.

dans ce cas il faut décomposer la relation de la manière suivante :

TYPE(NOM-AV, CAP-AV)

AVION1(NUM-AV, NOM-AV, LOC-AV)

5.3 - PROPRIETES DES DECOMPOSITIONS EN 3NF

Définition

Une décomposition {R1, R2, ..., Rn} d'une relation R qui préserve les DF est telle que la fermeture transitive des DF de R est la même que celle de l'union des DF de R1, R2, ..., Rn.

Exemple

Si l'on décompose maladroitement la relation AVION en AVION1(NUM-AV, NOM-AV) et AVION2(NOM-AV, CAP-AV, LOC-AV), alors cette décomposition ne préserve pas les DF car on perd la DF NUM-AV -> LOC-AV.

Fondamental

Toute relation a au moins une décomposition en 3FN telle que :

1) la décomposition préserve les DF,

2) la décomposition est sans perte.

Cette décomposition peut ne pas être unique.

5.4 - ALGORITHME DE DECOMPOSITION EN 3NF

On utilise cet algorithme si toutes les dépendances sont des DF.

Explication

Entrée : Schéma R ne contenant que des DF

Sortie : Schéma {R1, R2, ... , Rn} avec Ri en 3NF pour tout i

Etape 1 :

Soit F l'ensemble des DF. Pour toute DF f, rendre f élémentaire. Soit F' l'ensemble obtenu.

Etape 2 :

Rechercher une couverture minimale de F' notée MIN(F').

Etape 3 :

Partitionner MIN(F') en groupes F'1, F'2, ..., F'k tels que toutes les DF d'un même groupe aient la même partie gauche.

Etape 4 :

Pour chaque groupe F'i, i = 1, ..., k, construire un schéma contenant les attributs de F'i et les DF de F'i. Les éléments isolés (non déterminés par une DFE) sont regroupés dans une relation dont ils constituent la clé.

Exemple

La relation AVION peut se décomposer de la manière suivante :

Etape 1 :

Toutes les DF sont élémentaires (voir graphe des DF).

Etape 2 :

Une couverture minimale de cet ensemble de DF comprend :

NUM-VOL -> NUM-AV NUM-VOL -> H-D NUM-VOL -> H-A NUM-VOL -> V-D

NUM-VOL -> V-A NUM-VOL -> NUM-PIL NUM-AV -> NOM-AV NUM-AV -> LOC-AV

NOM-AV -> CAP-AV NUM-PIL -> NOM-PIL NUM-PIL -> ADR-PIL

NUM-PIL,H-A -> NUM-VOL NUM-PIL,H-D -> NUM-VOL NUM-AV,H-A ->

NUM-VOL NUM-AV,H-D -> NUM-VOL

Etape 3 :

F'1 = {NUM-VOL -> NUM-AV, NUM-VOL -> H-D, NUM-VOL -> H-A, NUM-VOL -> V-D, NUM-VOL -> V-A, NUM-VOL -> NUM-PIL}

F'2 = {NUM-AV -> NOM-AV, NUM-AV -> LOC-AV}

F'3 = {NOM-AV -> CAP-AV}

F'4 = {NUM-PIL -> NOM-PIL, NUM-PIL -> ADR-PIL}

F'5 = {NUM-PIL,H-A -> NUM-VOL}

F'6 = {NUM-PIL,H-D -> NUM-VOL}

F'7 = {NUM-AV,H-A -> NUM-VOL}

F'8 = {NUM-AV,H-D -> NUM-VOL}

Etape 4 :

R1(NUM-VOL, NUM-AV, H-D, H-A, V-D, V-A, NUM-PIL)

R2(NUM-AV, NOM-AV, LOC-AV)

R3(NOM-AV, CAP-AV)

R4(NUM-PIL, NOM-PIL, ADR-PIL)

R5(NUM-PIL,H-D,NUM-VOL)

R6(NUM-PIL,H-A,NUM-VOL)

R7(NUM-AV,H-D,NUM-VOL)

R8(NUM-AV,H-A,NUM-VOL)

Les relations en 3NF comportent encore des redondances. Par exemple si l'on considère la relation :

CODE-POSTAL(VILLE, RUE, CODE)

avec la DFE : CODE -> VILLE

Cette relation est en 3NF car aucun attribut non clé ne dépend d'une partie de la clé ou d'un attribut non clé. Elle comporte cependant des redondances.

code_postal

5.5 - FORME NORMALE DE BOYCE-CODD

Définition

Une relation est en BCNF si et seulement si les seules DFE sont celles dans lesquelles une clé détermine un attribut.

Fondamental

Toute relation a une décomposition en BCNF qui est sans perte. Par contre une décomposition en BCNF ne préserve pas les DF.

Exemple

La relation CODE-POSTAL peut se décomposer en 2 relations :

VILLE-CODE(VILLE, CODE)

RUE-CODE(RUE, CODE)

code_postal2

Ces 2 relations sont en BCNF, leur jointure naturelle coïncide exactement avec la relation initiale CODE-POSTAL.