Esperer

Disponible uniquement sur Etudier
  • Pages : 16 (3825 mots )
  • Téléchargement(s) : 0
  • Publié le : 1 mai 2011
Lire le document complet
Aperçu du document
7. Normalisation des Bases de Données relationnelles
7.1 Introduction
Nous avons appris auparavant à manipuler les bases de données relationnelles, nous allons nous intéresser maintenant à la manière d’élaborer une “base relationnelle”. Nous formulons l’hypothèse de départ que la phase d’analyse préalable nous a fourni un schéma relationnel “universel” : R défini sur un ensemble d’attributs U,plus un ensemble de prédicats sur la sémantique des attributs, plus un ensemble de contraintes d’intégrité.

7.2 Difficultés liées au caractère relationnel de la modélisation.
Avant de se pencher sur les “formes normales” reprenons les “pièges” auxquels expose la structure relationnelle. Si l’on modélise mal on peut tomber sur des répétitions, des inaptitudes, des pertes d’informations. Exemple: Nous disposons d’une modélisation relative au domaine bancaire :

R(Nomagence,N°Prêts,Client,Montant,Ch d’Affaires) correspondant au prédicat : “Une agence de nom Nomagence possède un chiffre d’affaires et consent des prêts de Numéro donné à des Clients pour un montant déterminé". Les contraintes suivantes (dépendances fonctionnelles) sont établies :
Nomagence -> Ch d’Affaires Client N°Prêt-> Montant Soit une instance r de

R:

r Nomagence Montpellier Montpellier Béziers Nimes Béziers Nimes .... N°Prêt 17 23 15 20 16 18 ... Client Dupont Durand Nestor Adam Achille Désiré ... Montant 1000 2000 1500 500 2000 1500 ... Ch.d'Affaires 90 M 90M 45M 85M 45M 85M

7.2.1 Divers problèmes
On veut insérer un nouveau client “Amanda” qui contracte le prêt 30 de montant 1500 auprès del’agence de Béziers, il faut aussi rajouter l’information redondante relative au chiffre d’affaires 45M. Si une agence change de nom tous les n-uplets relatifs à cette agence doivent subir la modification. Si une nouvelle agence se crée sans encore aucun client comment insérer l’information sans valeur nulle? si on tolère les valeurs nulles les contraintes ne sont plus respectées.

7.2.2 Décompositionde schéma
Idée : Décomposer le schéma initial en sous-schémas, mais plusieurs décompositions sont envisageables.

2

Normalisation

7.2.2.1 Premier essai de décomposition
Soit une décomposition de R :

R1(Nomagence, Ch d’Affaires) et R2(Nomagence, N°Prêt, Client, Montant) telle que, quelle que soit r instance de R , r1 instance de R1 et r2 instance de R2 :
r1= Π Nomagence, Ch d’Affaires(r) r2=Π Nomagence, N°Prêt, Client, Montant(r ) Cette décomposition vérifie les propriétés suivantes : r2 = r (jointure conservative) - r1 - les contraintes sont toujours valables : Nomagence -> Ch d’Affaires sur r1, Client N°Prêt -> Montant sur r2 (dépendances conservatives)

7.2.2.2 Second essai
On peut aussi envisager la décomposition de R en :

R1(Nomagence, N°Prêt, Montant) , R2(Client,Montant) et R3 (Nomagence, Ch d’Affaires)
dont une occurrence est
r1 Nomagence Montpellier Montpellier Béziers Nimes Béziers .... N°Prêt 17 23 15 20 16 ... Montant 1000 2000 1500 500 2000 ... r2 Client Dupont Durand Nestor Adam Achille Désiré ... Montant 1000 2000 1500 5000 2000 500 .... r3 Nomagence Ch d'affaires Montpellier Béziers Nimes 90 M 45 M 85 M

Divers problèmes :
Supposons quel’on souhaite poser la requête suivante : Quelles sont les agences auprès desquelles Achille a emprunté ?

Π Nomagence ( σ Client=‘Achille’ (r2) r1 ) donne Béziers et Montpellier ! La jointure donne plus de n-uplets (jointure non conservative donc perte d’information).
De manière informelle nous voyons que cette deuxième décomposition n’est pas satisfaisante, dans la première décompositionl’intersection des ensembles d’attributs des schémas relationnels Nomagence clé de R1 ; dans la deuxième décomposition l’intersection des ensembles d’attributs des schémas relationnels R1 et R2 donnait Montant or un client peut emprunter dans une même agence le même montant pour des prêts différents, ou bien emprunter le même montant dans des agences différentes ...etc. Nous nous attacherons donc à...
tracking img