Vous êtes sur la page 1sur 68

Théorie de la Conception des Bases de

Données Relationnelles

Mourad Gridach
Department of Computer Science
High Institute of Technology - Agadir

Department of Engineering Sciences


University of Oxford, UK
Last Lecture Summary
• Insuffisance du modèle fichier

• Solution : Base de données

• Les modèles de données

• Objectif : modèle relationnel

• Concepts de base :

ü Les attributs, le schéma, tuples, domaines, instance d’une relation,


clé d’une relation

2
Today’s Lecture

• Théorie de la conception des bases de données

• Etablir un bon schéma d’une base de données

• Formes normales

ü 1ere, 2eme, 3eme forme normales

ü Forme normale de Boyce-Codd (FNBC)

3
Processus de Conception d’une Base de Données

Modèle conceptuel

Modèle relationnel
Tables + contraintes
Dépendances fonctionnelles

Normalisation :
Eliminer les anomalies
Schéma conceptuel

Stockage physique:
Schéma physique
4
Conception du Schéma d’une Base de Données

• Plusieurs conceptions possibles

• Quelques conceptions sont mieux que d’autres

• Alors : Comment choisir une bonne conception ?

5
Utilisation des outils de conception, mais …

• Quelques concepteurs commencent directement par les relations

• Il existe une belle théorie pour la conception des bases de


données relationnelles

• Théorie élaborée par E.F. Codd en 1970.

• But : éviter les anomalies dans les bases de données


relationnelles

6
Formes Normales – Ted Codd

7
Conception d’un Schéma Relationnel

CustomerName CusNum CusPhone City


Mourad A12345 0661-162636 Agadir
Mourad A12345 0661-155177 Agadir
Nawal A54321 0611-222222 Nador

• Customer (CustomerName, CusNum, CusPhone, City)


• Un client peut avoir plusieurs numéros, mais réside dans une seule ville
• La clé primaire est donc : (CusNum, CusPhone)
• Déterminer le problème principal avec ce schéma ?
8
Conception d’un Schéma Relationnel

CustomerName CusNum CusPhone City


Mourad A12345 0661-162636 Agadir
Mourad A12345 0661-155177 Agadir
Nawal A54321 0611-222222 Nador

§ Anomalies :
ü Redondance : données répétées
ü Problèmes de mise à jour : Si « Mourad » déménage à « Rabat » ?
ü Problèmes de suppression : Si « Nawal » supprime son numéro téléphone ?
9
Anomalies de la Conception

• Redondance (Redundancy)

• Anomalie de mise à jour (update anomaly)

• Anomalie de suppression (deletion anomaly)

10
Décomposition de La Relation
Décomposer la relation en deux relations :

CustomerName CusNum CusPhone City

Mourad A12345 0661-162636 Agadir


Mourad A12345 0661-155177 Agadir
Nawal A54321 0611-222222 Nador

CustomerName CusNum City CusNum CusPhone

Mourad A12345 Agadir A12345 0661-162636

Nawal A54321 Nador A12345 0661-155177

A54321 0611-222222
• Les anomalies sont disparus ?
ü Pas de répétition de données
ü Facile de déménager « Mourad » à Rabat (comment ?)
ü Facile de supprimer tous les numéros de téléphones de « Nawal » (comment ?) 11
Conception par Décomposition
• On commence par des « Mega » relations contenant toutes les données

• On les décompose en petites relations

• Ces relations doivent contenir les mêmes informations

ü Cette décomposition peut être faite d’une manière automatique

ü Implémenter les algorithmes de décomposition

ü Projet à réaliser en Langage C ou Python (details later)

12
Décomposition Automatique
• « Mega » relations + Propriétés des données ( Collected from the real world)

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

• On obtient des relations satisfaisant ce qu’on appel les formes normales dont :

ü Pas d’anomalies (minimiser les anomalies)

ü Pas de perte d’informations

13
Normalisation

14
Concepts de la Normalisation

• Entité
• Attribut
• Clé primaire
• Clé composé
• Clés candidates
• Dépendances
15
Formes Normales
• Dépendances fonctionnelles è Forme Normale de Boyce–Codd (FNBC)

• Dépendances Multivaluées è Quatrième Forme Normale.(Out of the scope


of this course)

§ 1ère Forme Normale

§ 2ème Forme Normale

§ 3ème Forme Normale


16
Dépendances Fonctionnelles et
Forme Normale de Boyce-Codd
(FNBC)
Dépendances Fonctionnelles et FNBC
Apply (CIN, sName, iName)

• Question : est ce qu’on a la redondance, les anomalies de mise à jour et de


suppression ? à Réponse : Yep

• Objectif : Stockage du pair CIN-sName une seule fois pour chaque école

CIN sName iName


C12345 Mourad MIT
C12345 Mourad Stanford
C12345 Mourad Cambridge
C12345 Mourad Oxford
C12345 Mourad Princeton
C12345 Mourad UC Berkeley
C12345 Mourad CalTech 18
Dépendances Fonctionnelles et FNBC (suite)

Dépendance Fonctionnelle
• Le même CIN correspond toujours au même sName
• Stocker chaque pair CIN-sName une seule fois

Forme Normale de Boyce-Codd


§ Si A à B Alors A est une clé (A détermine fonctionnellement B)
§ Apply (CIN, sName, iName) n’est pas en FNBC
§ Solution : Décomposer la relation en :
Student (CIN, sName) et Apply (CIN, iName)
19
Autres Formes Normales

• Première Forme Normale (1 FN)

• Deuxième Forme Normale (2 FN)

• Troisième Forme Normale (3 FN)

• Quatrième Forme Normale (4 FN) (Out of the scope of


this course)
20
Première Forme Normale (1 FN)
Définition
• Toutes les relations possèdent un identifiant (une clé)
• Aucune propriété n’est à valeurs multiples (popriétés atomiques)

Exemple
— Etudiants (CNE, Nom, Prénom, Téléphone)
— Est ce que la relation « Etudiants » est en 1FN ? à Nooo L
§ Pas de clé (Souligné « CNE »)
21
1 FN - Exemple
• Person (CIN, Name, Phone)

CIN Name Phone


C111 Mourad 0661111111, 0677880032
C222 Mehdi 0661781900
C333 Nadia 0677890021, 0678094578 Question :
C444 Hamza 0600131516
« Person » est
C555 Nawal 0661781910
en 1FN ?

§ L’attribut « Phone » possède plusieurs valeurs

§ Décomposition en deux relations


22
1 FN – Exemple (suite)
§ R1 (CIN, Name) § R2 (CIN, Phone)

CIN Phone
C111 0661111111
CIN Name
C111 0677880032
C111 Mourad
C222 0661781900
C222 Mehdi
C333 0677890021
C333 Nadia
C333 0678094578
C444 Hamza
C444 0600131516
C555 Nawal
C555 0661781910

23
Deuxième Forme Normale (2 FN)

§ Objectif : chercher la redondance d’information dans une relation.

Définition
§ Le modèle est en 1FN

§ Tout a\ribut qui n’appar]ent pas à la clé ne dépend pas d’une par]e de la
clé.

§ Solution : décomposer la relation en deux relations. La nouvelle relation


créée a pour clé la partie de la clé dont dépendent les autres champs.

24
2 FN - Exemple
• Achat(ClientID, MagasinID, Ville d’Achat)
• N.B. Un magasin est situé dans une seule ville

ClientID MagasinID Ville d’Achat

C12 M1 Fès Question :


C12 M3 Rabat « Achat » est en
C14 M1 Fès 2FN ?
C15 M2 Casablanca
C16 M3 Rabat

§ Redondance : MagasinID à Ville d’Achat


§ DécomposiEon en deux relaEons 25
2 FN – Exemple (suite)

§ R1 (ClientID, MagasinID) § R2 (MagasinID, Ville d’Achat)

ClientID MagasinID
C12 M1 MagasinID Ville d’Achat
C12 M3 M1 Fès
C14 M1 M2 Casablanca
C15 M2 M3 Rabat
C16 M3

26
Troisième Forme Normale (3 FN)
§ Objectif :
ü Recherche la redondance d’information dans une relation.
ü Eliminer la transitivité entre les champs

Définition
§ Le modèle est en 2 FN.
§ Tout aRribut n’appartenant pas à une clé ne dépend pas d’un autre aRribut non clé.

§ Solution : décomposer la relation en deux relations. La nouvelle relation


créée a pour clé le champ dont dépendent les autres champs qui constituent
ainsi la dépendance transitive.
27
3 FN - Exemple
§ Article (ArticleID, GenderID, GenderType, Price)

ArtcileID GenderID GenderType Price


A11 G11 Science 60
A12 G12 History 50
A13 G11 Science 90
A14 G13 Sports 30
A15 G12 History 50

§ Redondance : GenderIDà GenderType

§ Décomposition en deux relations

§ Question : Définir les attributs de chaque relation ?


28
3 FN – Exemple (Solution)
§ R1(ArticleID, GenderID, Price)
ArticleID GenderID Price
A11 G11 60
A12 G12 50
A13 G11 90
A14 G13 30
A15 G12 50

§ R2(GenreID, GenderType)
GenderID GenderType
G11 Science
G12 History
G13 Sports
29
Remarque : Relations entre les FN
Relations en 1FN
Relations en 2FN
Relations en 3FN

Relations en FNBC

Relations en 4FN

30
Conclusion
• « 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

• La 1FN, 2FN et 3FN.

31
Dépendances Fonctionnelles

Functional Dependencies
Introduction
• Les dépendances fonctionnelles sont considérées comme une
généralisation de la notion de clé pour une relation

• Donne la manière de décomposition des « Mega » relations

• Stockage des données d’une manière efficace

33
Exemple : Demande de candidature

• Student (CIN, sName, address, HScode, HSname, Hscity, mark,


grade)

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

34
Exemple : Demande de candidature
§ Soit la première relation :

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

§ Concentrons nous sur les attributs « CIN » et « sName »


CIN sName
C12345 Mourad
C12345 Mourad
C12222 Nawal
C12222 Nawal
C12222 Nawal

§ Deux tuples avec le même CIN à même sName


35
Définition : Dépendance Fonctionnelle

§ Soit : CINà sName

" t, u Î Student (‘t’ et ‘u’ sont des tuples)

t.CIN = u.CIN Þ t.sName = u.sName

§ L’attribut « CIN » détermine fonctionnellement l’attribut « sName »

36
Définition : Dépendance Fonctionnelle (suite)

§ En général :

Soit la relation R(A, B)

Si A à B, alors " t, u Î R :

t.A = u.A Þ t.B = u.B.

(‘t’ et ‘u’ sont des tuples et ‘A’ et ‘B’ sont des attributs)

§ On note : L’attribut « A » détermine fonctionnellement l’attribut « B »


37
Dépendance Fonctionnelle : Exemple

¤ On a la dépendance fonctionnelle suivante :

¤ CIN à sName

CIN sName iName


Tuple t C12345 Mourad EST Agadir
C12345 Mourad EST Fès
Tuple u C12222 Nawal ENSA Agadir
C12222 Nawal ENSA Fès
C12555 Badr EST Meknès
C12555 Badr Médecine Fès
C12555 Badr ENCG Fès

Dans ce cas on a: t.CIN = u.CIN Þ t.sName = u.sName


38
Définition : Dépendance Fonctionnelle (suite)

§ D’une manière général :

Si A1, A2, …, An à B1, B2, …, Bm , alors " t, u Î R :

t[A1, A2, …, An] = u [A1, A2, …, An] Þ


t[B1, B2, …, Bm] = u [B1, B2, …, Bm].

§ On note : Ou encore : ᾹàB

39
Dépendance Fonctionnelle

• Basé essentiellement sur la connaissance du monde réel


• Toutes les instances de la relation doivent respecter cette dépendance
fonctionnelle
• Exemple :
ᾹàB dans R (Ᾱ, B C)

Ᾱ B C
a b c1
a b c2
… … …
40
Exemple 1
Student (CIN, sName, address, HScode, HSname, HScity, mark, grade)

• CIN ® sName
• CIN ® address
• HScode ® HSname, Hscity
• HSname, HScity ® Hscode
• CIN ® mark
• Mark ® grade
• CIN ® grade
41
Exemple 2
Apply (CIN, iName, region, date, course)

• iName ® date (On admet que la date d’inscription dans une école est unique.)

• CIN, iName ® course (On admet qu’un étudiant peut faire une seule demande
dans une même école)

• CIN ® region (On admet qu’un étudiant peut faire une seule demande dans
une région)

Remarque

Les dépendances fonctionnelles sont déterminées à partir du monde réel.

42
Exemple 3
Dépendance Fonctionnelle et Clés
• Une DF est la généralisation de la notion de clé
• Construire une relation sans doublons
• Supposons que Ᾱ ® tous les attributs d’une relation R (Ᾱ, B)
• Ᾱ est une clé pour la relation R
Ᾱ B
a b1
a b2
… …

§ Dans ce cas : b1 = b2
§ On aura juste un seul tuple
44
Définitions
Dépendance Fonctionnelle Trivial
• ᾹàB
• Cette DF est dite trivial SSi : B Í Ᾱ

B
45
Dépendance Fonctionnelle Non-Trivial

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

B 46
DF Complètement Non-Trivial

• ᾹàB

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

Ᾱ B

47
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

48
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
§ …..
49
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 }


50
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 ….


51
« 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 ?


52
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

53
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


55
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
56
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)

57
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


58
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.
59
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

60
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).
61
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
62
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

63
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)


64
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
65
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
2 5
Oooops Error car la décomposition
n’est pas basée sur les DFs
66
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

67
Conclusion

• 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

68

Vous aimerez peut-être aussi