base de données 2 julie dugdale [email protected] material/sources: daniel bardou,...

23
Base de Données 2 Julie Dugdale [email protected] Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Upload: gwenael-bouchet

Post on 03-Apr-2015

104 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Base de Données 2

Julie Dugdale

[email protected]

Material/Sources: Daniel Bardou, Julie Dugdale &

Vanda Luengo

Cours 5 partie 2

Page 2: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Sommaire

La normalisation Buts de la normalisation Formes normales

Première forme normale Deuxième forme normale Troisième forme normale Forme normale de Boyce-Codd

Algorithme de Normalisation Algorithme de Normalisation – Exemple Entre Fonctionnel et Opérationnel Dénormalisation

Page 3: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Normalisation - Résumé

Définition:

Le processus de restructurer le modèle de données logiques pour : Eliminer les redondances, Organiser les données efficacement, Réduire le potentiel d'anomalies pendant les

opérations sur les données.

Page 4: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Normalisation - Résumé

Chaque nouvelle forme normale marque une étape supplémentaire de progression vers des relations présentant de moins en moins de redondance

Le but.. est d'obtenir une représentation des données présentant un minimum de redondance à l'intérieur de chaque relation et un maximum d'indépendance entre les différentes relations

Page 5: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Normalisation : 3FN - Résumé

Définition : troisième forme normale: Une relation est en troisième forme normale

si : - elle est en deuxième forme normale ; - tout attribut n'appartenant pas à une clé ne dépend pas d'un attribut non clé. - cad toute DF dont la partie droite n’est pas une clé doit avoir une partie gauche qui est une clé :

A, B, CB, C OK

Page 6: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Algorithme de Normalisation

Page 7: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Algorithme de Normalisation

L’algorithme de conception de schéma relationnel en 3NF

Théorème:Tout schéma relationnel peut se décomposer en schémas sous 3ième forme normale avec préservation des Dépendances Fonctionnelles

Il existe divers algorithmes de décomposition (nous n’en étudierons qu’un « classique » dû à Bernstein

Page 8: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Algorithme de Normalisation

4 étapes1. Calculer DF-, une Couverture Irredondante Minimale

(une CIM) de DF, en enlevant: A) les redondances des attributs de partie gauche

Est-ce que AB → D a des attributs redondants dans la partie gauche? Est-ce que cela pourrait être remplacé par B → D ou A → D?

B) les dépendances redondantes (transitivité)Si A dépend de B et B dépend de C, alors A dépend aussi de C

2. Regrouper en DFi- les dépendances fonctionnelles de

DF- ayant même partie gauche.

Page 9: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Algorithme de Normalisation

3. Pour chaque DFi-, construire un schéma

relationnel Ri avec l’union des attributs de DFi

-

4. Trouver les clés de DF-. Si aucune de ces clés n’est contenue dans au moins un des Ri, alors il faut rajouter un schéma relationnel Rk = {Ki K->K} avec K un clé candidate.

Résultat : Toutes les Ri sont 3NF!

Page 10: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Algorithme de Normalisation: Exemple On considère la relation R(A, B, C, D, E) et

l’ensemble de dépendances fonctionnelles suivant DF= {A -> BC, CD -> E, B -> D, A -> D, BE -> D}

D'abord mettre DF sous forme canonique:

(partie droite atomique)…

DF = {A -> B, A -> C, CD -> E, B -> D, A -> D, BE -> D}

Page 11: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Algorithme de Normalisation: Exemple Souvent utile de dessiner un graphe des

dépendances fonctionnelles de DF:

DF = {A -> B, A -> C, CD -> E, B -> D, A -> D, BE -> D}

AB

C D

E

Page 12: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Algorithme de Normalisation: Exemple

1. Calculer un couverture irredondante DF- (une CIM) de DF, en enlevant: A) les redondances des attributs de partie gauche B) les dépendances redondantes (transitivité)

DF = {A -> B, A -> C, CD -> E, B -> D, A -> D, BE -> D} A) Elimine BE -> D (car on a déjà B->D)

DF = {A -> B, A -> C, CD -> E, B -> D, A -> D, BE -> D}B) Elimine A -> D (car on a déjà A->B et B->D)

Donc, DF- = {A -> B, A -> C, CD -> E, B -> D}

Page 13: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Algorithme de Normalisation: Exemple Utile: graphe des dépendances fonctionnelles

de DF:A) Elimine BE -> D (car on a déjà B->D)B) Elimine A -> D (car A->B et B->D)

Donc, DF- = {A -> B, A -> C, CD -> E, B -> D}A

B

C D

E

Page 14: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Algorithme de Normalisation: Exemple2. Regrouper les dépendances fonctionnelles de DF-

ayant même partie gauche, en DFi-

DF- = {A -> B, A -> C, CD -> E, B -> D}

DF1- =

{A -> B, A -> C}

DF2- =

{CD -> E}

DF3- =

{B -> D}

Page 15: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Algorithme de Normalisation: Exemple3. Pour chaque DFi

-, construire un schéma relationnel Ri avec l’union des attributs de DFi

-

DF1- = {A -> B, A -> C}

DF2- = {CD -> E}

DF3- = {B -> D}

R1 = {A, B, C}

R2 = {C, D, E}

R3 = {B, D}

Page 16: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Algorithme de Normalisation: Exemple4. Trouver les clés de DF-. Si aucune de ces clés

n’est contenue dans au moins un des Ri, alors il faut rajouter un schéma relationnel Rk = {Ki K->K} avec K un clé candidate.

Clés = seule candidate = A

A appartient à R1 => OK

R1 = {A, B, C}

R2 = {C, D, E}

R3 = {B, D}

Résultat: Toutes les Ri sont 3NF!

Page 17: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Processus global de conception de base de données

On a supposé que le schéma R est donné R pourrait avoir été généré pendant la

conversion du diagramme E-A en un ensemble de tableaux.

R pourrait avoir été une seule relation contenant tous les attributs ayant un intérêt.

La normalisation découpe R en des relations plus petites.

R pourrait avoir été le résultat d'une conception ad hoc de relations, qu'on teste/convertit alors vers une forme normale.

Page 18: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Modèle ER et normalisation

Quand un diagramme E-A est conçu avec soin, identifiant toutes les entités correctement, les tableaux générés à partir du diagramme E-A ne devraient pas nécessiter de plus de normalisation.

Cependant, dans une conception réelle (imparfaite), il peut y avoir des dépendances fonctionnelles d'attributs non-clé d'une entité vers d'autres attributs de l'entité

Exemple : une entité employé avec les attributs numéro_département et adresse_département, et une dépendance fonctionnelle numéro_département adresse_département

Une bonne conception aurait fait du département une entité

Page 19: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Entre Fonctionnel et Opérationnel

Quelques conseils  Il ne faut jamais oublier qu’il y aura des utilisateurs de

la base. Il faut par conséquent être fonctionnel et opérationnel.

Fonctionnel : une base avec beaucoup de tables est difficile à gérer. Il faut optimiser les tables dans leur structure (recherche de clefs étrangères).

Opérationnel : pour les traitements, les relations de type CIF (contrainte d'intégrité référentielle) sont à privilégier.

Page 20: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Dénormalisation

Page 21: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Dénormalisation

On appelle dénormalisation l'introduction volontaire de redondance répondant principalement à des conditions d'efficacité.

Exemple; Soit le schéma relationnel suivant:Article(NumArt, desigArt, prixArt)

Commande(NumCom,DateCom, NumCli)

Ligne_Commande(NumCom,NumArt,Qtite)

Client(NumCli,NomCli,AdrCli)

Page 22: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Dénormalisation

Supposons que le marketing (pour l’émission de mailing) soumet très fréquemment à la base des requêtes de la forme:

Quels sont les adresses des clients ayant passé commande de tel(s) article(s)

-> On doit à chaque fois vérifier dans 4 tables pour donner la réponse* Article(NumeroArticle2, designationArticle1, prixArticle)

* Commande(NumeroCommande5,DateCommande, NumeroClient6)

* Ligne_Commande(NumeroCommande4,NumeroArticle3,Qtite)

* Client(NumeroClient7,NomClient,AdresseClient8)

Page 23: Base de Données 2 Julie Dugdale Julie.dugdale@upmf-grenoble.fr Material/Sources: Daniel Bardou, Julie Dugdale & Vanda Luengo Cours 5 partie 2

Dénormalisation

Si on met l'attribut designationArt dans Commande on a besoin de deux tables

..Redondance mais efficacité

Article(NumeroArticle, designationArticle, prixArticle)* Commande(NumeroCommande,DateCommande, NumeroClient2, designationArticle1) Ligne_Commande(NumeroCommande,NumeroArticle,Qtite)* Client(NumeroClient3,NomClient,AdresseClient4)