Vous êtes sur la page 1sur 27

Théorie de la Conception des Bases de

Données Relationnelles

Mourad Gridach
Filière : Génie Informatique. EST d’Agadir
Année Universitaire : 2019 - 2020
Summary of the Last Lecture

• Anomalies dans les bases de données

• Conception d’une base de données (ensemble de relation)

• Plusieurs conception possibles

• Conception par décomposition

• A partir d’une mega relations, appliquer :

• Les formes normales (1ere, 2eme, 3eme et FNBC)

• Dépendances fonctionnelles

2
Today’s Lecture

• FNBC à partir des DFs

• Algorithme de décomposition en FNBC

• FNBC est la plus importante. (Can you guess why ?)

• Premier Mini-Projet (à rendre dans 3 semaines)

• Introduction à l’Algèbre Relationnelle

• Pourquoi aura t-on besoin de l’ Algèbre Relationnelle

3
Définitions
Dépendance Fonctionnelle Trivial
• ᾹàB
• Cette DF est dite trivial SSi : B Í Ᾱ

B
4
Dépendance Fonctionnelle Non-Trivial

• ᾹàB
• Cette DF est dite nontrivial SSi : B Ë Ᾱ

B
5
DF Complètement Non-Trivial

• ᾹàB

• Cette DF est dite complètement non-trivial SSi : Ᾱ Ç B = Æ

Ᾱ B

6
Règles pour les Dépendances Fonctionnelles
Règle de Répartition (Splitting Rule)

• Ᾱ à B1, B2, …, Bm Þ – Exemple


ü Ᾱ à B1 HSname, HScity à HScode Þ
ü Ᾱ à B2 ü HSnameà Hscode
ü …. ü HScity à HScode
ü Ᾱ à Bm
– Est ce qu’on peut partitionner la partie gauche ??
– (A1, A2, …, An à B) Þ (A1 à B, A2 à B, …, An à B) ???
– Réponse : Noooooo

7
Règles pour les Dépendances Fonctionnelles
Règle de réunion(Combining Rule)

§ Ᾱ à B1
§ Ᾱ à B2
Þ Ᾱ à B1, B2, …, Bm
§ ….
§ Ᾱ à Bm
Règle de transition

§ Si Ᾱ à B et B à C Alors Ᾱ à C
§ Preuve
§ …..
8
Règles pour les Dépendances Fonctionnelles
« Fermeture » (Closure) des attributs

• Soient une relation, DFs, un ensemble d’attributs Ᾱ


• Trouver tout les B tels que : Ᾱ à B
• Notation : Fermeture de A est noté : Ᾱ+ ou {A1, A2, …, An}+

L’algorithme
Commençant par : {A1, A2, …, An} Exemple :

Repeat until no change : A1 à C, D

if Ᾱ à B and Ᾱ is in the set CàE

add B to the set {A1, A2, …, An, C , D , E }


9
Exemple de « Fermeture »
Student (CIN, sName, address, HScode, HSname, HScity, mark, grade)
1. CIN ® sName, address, mark
2. Mark ® grade
3. HScode ® HSname, Hscity

• Calculons {CIN, HScode}+


a. {CIN, Hscode}
b. {CIN, Hscode, sName, address, mark} (DF 1)
c. {CIN, Hscode, sName, address, mark, grade} (DF 2)
d. {CIN, Hscode, sName, address, mark, grade, HSname, Hscity} (DF3)

• Conclusion : {CIN, Hscode} est ….


10
« Fermeture » et les Clés

• Etant donné un ensemble de DFs et une relation R


• Comment savoir si Ᾱ est une clé pour la relation R ??
• Réponse :
ü Calculons : Ᾱ+ Very Important
ü Si le résultat = Tous les attributs de R Alors Ᾱ est une clé.

Remarque

§ Attention, on ne doit pas confondre une clé avec une clé primaire.

§ Question : « Clé primaire à Clé » ou « Clé à Clé primaire » ou les deux ?


11
Recap

• En général, les dépendances fonctionnelles est un concept très utile


dans le monde des bases de données.

• La conception des relations est faite par décomposition

• Dépendances fonctionnelles Þ Forme Normale de Boyce-Codd

• Très utile pour la compression et le stockage des données

12
Forme Normale de Boyce-Codd
(FNBC)

Boyce-Codd Normal Form (BCNF)


Rappel
• « Mega » relations + Propriétés des données ( reflètent le monde réel)

• Le système procède à la décomposition selon ces propriétés

• On obtient des relations satisfaisant les formes normales

ü Pas d’anomalies

ü Pas de perte d’informations

• Dépendances Fonctionnelles à FNBC


14
Décomposition d’un Schéma Relationnel

• Soit la relation : R (A1, A2, …, An) Ᾱ


• Objectif : Décomposer R en R1 et R2
• R1 (B1, B2, …, Bn) B
• R2 (C1, C2, …, Cm) C

• Pour que cette décomposition soit correcte, il faut que :


1. Ᾱ = B È C
2. R1 R2 = R
15
Décomposition – Exemple 1

Student (CIN, sName, address, HScode, HSname, Hscity, mark, grade)

• S1 (CIN, sName, address, HScode, mark, grade)


• S2 (HScode, HSname, HScity)

• Ᾱ = B È C et S1 S2 = Student (see next slide)

16
Jointure - Exemple
Student Apply
sID sName mark sizeHS sID iName course dec
1111 Mourad 15 1500 1111 EST Agadir GI yes
2222 Nawal 16 2000 1111 EST Fès TM No
2222 EST Salé TM yes
2222 ENSA Fès GI yes

Student Apply (combien de tuples et d’attributs ?)


S.sID sName mark sizeHS iName course dec

1111 Mourad 15 1500 EST Agadir GI yes

1111 Mourad 15 1500 EST Fès TM No

2222 Nawal 16 2000 EST Salé TM yes

2222 Nawal 16 2000 ENSA Fès GI yes


17
Décomposition – Exemple 2
Student (CIN, sName, address, HScode, HSname, Hscity, mark, grade)

• S1 (CIN, sName, address, HScode, HSname, HScity)


• S2 (sName, mark, grade)
• Est ce que cette décomposition est correcte ??
• Ᾱ = B È C et S1 S2 ≠ Student

àLa jointure est faite en se basant sur « sName » qui n’est pas une
valeur unique.
18
Conception des Relations par Décomposition

• « Mega » relations + Propriétés des données ( reflètent le


monde réel)

• Le système procède à la décomposition selon ces propriétés

• ‘’Bonne’’ décomposition seulement (obtenir la relation originale


par jointure)

• La décomposition en ‘’Bonne’’ relations à en FNBC

19
Définition d’une FNBC
Une relation R avec des DFs est en FNBC Si :

Pour chaque DF Ᾱ à B, Ᾱ (la partie gauche) est une clé

Remarques
ü Si une relation n’est pas en FNBC, alors elle est appelée « Relation en
violation de FNBC », c’est-à-dire certainement elle va contenir des
anomalies.

ü Si Ᾱ est un clé Alors ᾹC, ᾹCD sont aussi des clés appelées parfois des
« superclé » (superkey).
20
FNBC – Exemple 1

• Soit la relation suivante :


ü Student (CIN, sName, address, HScode, HSname, Hscity, mark, grade)
• Soient les DFs suivantes :
ü CIN à sName, address, mark Rappelons que la clé de cette
relation est :
ü Mark à grade {CIN, Hscode}.
ü HScode à HSname, Hscity
• Est ce que chaque DF possède une clé dans sa partie gauche ?
• Nooo à Cette relation est en « Violation de FNBC ».
• N’est pas une bonne conception
21
FNBC – Exemple 2

• Soit la relation suivante :

ü Apply(CIN, iName, region, date, course)

• Soit la DF suivante :

ü CIN, iName, region à date, course

• Chaque DF possède une clé dans sa partie gauche ???

• Yeeeep à Cette relation est en « FNBC ».

• C’est une bonne conception

22
L’Algorithme de Décomposition en FNBC

• Input : Relation R + DFs pour R

• Output : décomposition de R en relations en FNBC

ü Calcul des clés de R (en utilisant les DFs et sa fermeture)

ü Initialisation : R’ = R

ü Repeat until toutes les relations sont en FNBC

Choisir R’ quelconque avec Ᾱ à B et violant la FNBC

Décomposer R’ en R1(A, B) et R2 (A, reste)


23
Décomposition en FNBC – Exemple 1
• Student (CIN, sName, address, HScode, HSname, Hscity, mark, grade)
ü CIN à sName, address, mark
ü Mark à grade Les DFs

ü HScode à HSname, Hscity


ü S1(HScode, HSname, Hscity) à en FNBC
ü S2 (CIN, sName, address, HScode, mark, grade)
• S3 (mark, grade) à en FNBC
• S4 (CIN, sName, address, HScode, mark)
Ø S5 (CIN, sName, address, mark) à en FNBC

Ø S6 (CIN, Hscode) à en FNBC


24
La FNBC Garantie une Bonne Décomposition ?

• Élimine les anomalies


• On pourra reconstruire logiquement la relation originale
• Exemple

A B A B C

R R1 1 2 1 2 3

4 2 R1 R2 = 1 2 5
A B C
4 2 3
1 2 3
4 2 5
4 2 5
B C

R2 2 3
Oooops Error car la décomposition
2 5
n’est pas basée sur les DFs
25
Conclusion - FNBC

• « Mega » relations + Propriétés des données ( reflètent le monde réel)

• Le système procède à la décomposition selon ces propriétés

• On obtient des relations satisfaisant les formes normales

ü Pas d’anomales

ü Pas de perte d’informations

• Dépendances Fonctionnelles à FNBC

26
Mini Project N 1 – A Rendre dans 3 Semaines
• Prerequisite : C language.
• Implementing the closure algorithm using C language.
• Rules:
1. Implementer sans erreurs: A à +3

2. Implementer avec une seule erreur: B à +2

3. Implementer avec plus d’erreur: C à +1

4. Pas d’implementation: D à -3

5. Tricher: E à -5
27

Vous aimerez peut-être aussi