Vous êtes sur la page 1sur 15

BASE DE DONNEES IHM/PHP| LE MODELE RELATIONNEL

I- Qu'est-ce que le modèle relationnel?

Créé par Codd en 1970, le modèle relationnel de données est basé sur la notion de relation.
C'est le modèle de structuration des informations respecté par les systèmes de Gestion de bases de données
relationnelles (SGBDR). Dans les SGBDR, les informations sont rangées dans des tables.
Une base de données relationnelle est un ensemble de tables relationnelles.
Au modèle relationnel est associé la théorie de normalisation des relations : cette théorie a pour but
l’élimination des comportements anormaux lors des mises à jour des données.

Modélisation relationnelle

La modélisation relationnelle permet de représenter les relations à l'aide de tables (à deux dimensions) dont
chaque colonne a un identificateur qui représente un domaine. Une ligne du tableau représente donc une entité
et chacune des cases représente un de ses attributs.

II- Concepts de base

• Domaine : c’est un ensemble de valeurs.

Exemple : L’ensemble C = {0,1,2, … , 9 } est le domaine des chiffres.

• Relation : c’est un sous ensemble nommée du produit cartésien d’une liste de domaines.

Une relation R est un ensemble d'attribut (colonnes) : {A1, A2, A3, ..., An}.
Exemple : la relation Produit est l'ensemble des attributs {Nump, nomp, prixUni}
Une relation peut être vue comme un tableau à 2 dimensions dont les colonnes correspondent aux domaines et
les lignes contiennent les tuples.
Chaque attribut Ai prend ses valeurs dans un domaine dom(Ai). Ex : prixUni appartient à [0; 5000]
Contraintes de domaine: chaque attribut doit respecter une condition logique
- Exemple :
D1={Pierre, Paul, Jacques}
D2={1,2,3, …, 20}
On peut composer la relation " Note " :
Pierre 8
Paul 13
Jacques 6
La notion de relation conduit parfois à de nombreuses anomalies dont les plus importantes sont les suivantes :

o redondance des données.


o problèmes de mises à jour : modifications, suppressions.

SUPPORT DE COURS VERSION IMPRIMABLE Version 2.0


BASE DE DONNEES IHM/PHP| LE MODELE RELATIONNEL
La mise sous une forme "normale" des relations, ou normalisation, vise à supprimer toutes ces anomalies et
repose sur la notion de dépendance fonctionnelle :

• Attribut

On appelle attributs le nom des colonnes qui représentent les constituants de l'entité. Un attribut (une colonne)
est repéré par un nom et un domaine de définition, c'est-à-dire l'ensemble des valeurs qu'il peut prendre

• Clé d'une relation (clé primaire)

Définition 1: C'est un ensemble minimum d’attributs (colonnes ou champs) qui détermine tous les autres. Toute
relation doit obligatoirement avoir une clé et elle doit être soulignée.
Définition2: Soit X inclus dans (Al , A2 , ..., A n ), X est clé de la relation R(A1 , A2, ...,A n ) si:

1. x ! Al, A2, ...,An


2. il n'existe pas de Y inclus dans X tel que Y ! A1, A2, ..., An

Clé étrangère : C'est un attribut (colonne) qui est clé primaire d'une autre relation.

• Tuple (ou n-uplet) : c’est une ligne (enregistrement) du tableau.



• Cardinalité : c’est le nombre de tuples qui la composent.

• Schéma de relation

Le schéma d'une relation est composé du nom de la relation et de la liste des attributs qui composent cette
relation. Les attributs clés étant soulignés. Soit, par exemple la relation R composée des attributs A1, A2 et A3
dont le schéma est : R( A1 ,A2,A3).
Exemple :
Voiture (Marque = <Renault / Peugeot / … >,Couleur = <Bleu / Vert / … >,Puissance :< 10 / 20 / … >)
Afin de simplifier, on ne précise en général pas les domaines.

• Base de données relationnelle

Une base de données est relationnelle lorsque son schéma est un ensemble de schémas de relations dont les
occurrences sont des tuples de ces relations.
On peut donc encore définir une base de données relationnelle comme un ensemble de schémas relationnels.

III – Algèbre relationnelle


L’algèbre relationnelle est un ensemble d'opérateurs qui, à partir d'une ou deux relations existantes, créent en résultat
une nouvelle relation. La relation résultat a exactement les mêmes caractéristiques qu'une relation de la base de données et peut
donc être manipulée de nouveau par les opérateurs de l'algèbre.

Les opérateurs de l'algèbre peuvent être regroupés en deux classes:

SUPPORT DE COURS VERSION IMPRIMABLE Version 2.0


BASE DE DONNEES IHM/PHP| LE MODELE RELATIONNEL
" les opérateurs provenant de la théorie mathématique sur les ensembles (applicables car chaque relation est définie
comme un ensemble de tuples): union, intersection, différence, produit;

" les opérateurs définis spécialement pour les bases de données relationnelles: sélection, projection, jointure, division.

1. Projection

Cet opérateur construit une relation résultat où n'apparaissent que certains attributs de la relation opérande (en termes de
tableau, cela revient à extraire certaines colonnes).

Définition: Soit R (A1, A2, ...., An) une relation, et soit Ai1, Ai2, ....., Aij un sous-ensemble de ses attributs, la projection de R
sur Ai1, Ai2, ....., Aij, notée : π [Ai1, Ai2, ....., Aij] R
crée une nouvelle relation, de schéma (Ai1, Ai2, ....., Aij).

Remarque: le résultat est un ensemble de tuples, c'est-à-dire que si la projection crée des tuples en double - cas d'une projection
éliminant tous les identifiants de R - ces doubles sont supprimés automatiquement.

Exemple: Soit la relation Personne ( nom , prénom , jour-nais , mois-nais , an-nais , sexe)

Dupont Jean 30 07 72 M
Talon Achille 20 11 75 M
Rochat Marie 13 05 72 F
Martin Régis 27 03 74 M
Picard Anne 10 10 76 F
Martin Jules 05 03 74 M

On construit l'ensemble des noms et prénoms des personnes avec l'opération:


NP := π [nom, prénom] Personne

On obtient : NP (nom, prénom)

Dupont Jean
Talon Achille
Rochat Marie
Martin Régis
Picard Anne
Martin Jules

L'opération : NA := π [nom, an-nais] Personne

donnera en résultat : NA ( nom , an-nais )

Dupont 72
Talon 75
Rochat 72
Martin 74
Picard 76

SUPPORT DE COURS VERSION IMPRIMABLE Version 2.0


BASE DE DONNEES IHM/PHP| LE MODELE RELATIONNEL
Soit une population de 5 tuples au lieu des 6 tuples de la relation Personne.

2. Sélection

Cet opérateur construit une relation résultat où n'apparaissent que certains tuples de la relation opérande (en termes de tableau,
cela revient à extraire certaines lignes). Les tuples retenus sont ceux satisfaisant une condition explicite, appelée prédicat de
sélection.

Définition: soit R (A1, A2, ...., An) une relation, la sélection de R selon un prédicat p, notée
[p] R, crée une nouvelle relation, temporaire, de schéma identique à celui de R, et de population l'ensemble des tuples de R
pour lesquels le prédicat p est vrai.

Exemple:
Pour créer une relation Femmes contenant l'ensemble des personnes de sexe féminin, on écrira:
Femmes := [sexe = 'F'] Personne

Ce qui donne en résultat : Femmes (nom, prénom, jour-nais, mois-nais, an-nais, sexe)

Rochat Marie 13 05 72 F
Picard Anne 10 10 76 F

Le prédicat de sélection permet de comparer la valeur d'attributs de R à celle d'autres attributs de R ou à des constantes. Sa
forme est la suivante :

Remarque:
Remarquons que les opérateurs de comparaison ≤ , < , > et ≥ ne peuvent être appliqués qu'aux attributs dont les domaines
contiennent des valeurs ordonnées (valeurs numériques, dates, chaînes de caractères). Les domaines de chaînes de caractères
alphabétiques sont triés alphabétiquement, tandis que les domaines de chaînes de caractères alphanumériques sont triés selon
les codes numériques des caractères. Si le domaine d'un attribut est un ensemble de valeurs non triées, les seuls opérateurs de
comparaison utilisables sont = et ≠ .

3. Expressions d'algèbre

Les opérateurs de l'algèbre peuvent être combinés dans des expressions pour exprimer des requêtes non élémentaires.

Exemple:
On obtient la liste des noms et prénoms des hommes nés avant 1975 par l’expression :
H := π [nom, prénom] [sexe = 'M' an-nais < 75] Personne

H (nom, prénom)
Dupont Jean
Martin Régis
Martin Jules

SUPPORT DE COURS VERSION IMPRIMABLE Version 2.0


BASE DE DONNEES IHM/PHP| LE MODELE RELATIONNEL
Le même résultat pourrait être obtenu en écrivant deux opérations l'une après l'autre en créant une relation intermédiaire (dans
ce cas il faut nommer les relations intermédiaires):

H1 := [sexe = 'M' an-nais < 75] Personne


H := π [nom, prénom] H1

4. Jointure (naturelle) de deux relations

Définition: étant donné deux relations R(X, Y) et S(Y, Z), où X, Y, Z symbolisent soit un attribut, soit un ensemble d'attributs,
et où Y n'est pas vide, la jointure (naturelle) de R et S, notée R * S , crée une nouvelle relation temporaire, de schéma (X, Y, Z).

La population de R * S est l'ensemble des tuples <x, y, z> créés par composition d'un tuple <x, y> de R et d'un tuple <y, z> de
S, tels que les deux tuples ont la même valeur pour Y.

On remarque que la population de R * S comporte n tuples, n appartenant [0 : card(R) x card(S)], les valeurs extrêmes étant
obtenues dans les cas suivants:
- 0 : il n'existe pas de tuple de R et S qui ont même valeur pour Y,
- card(R) x card(S) : les tuples de R et de S ont tous la même valeur, y0, pour Y.

Exemples:
On désire tous les renseignements sur les étudiants (nom, adresse, date de naissance, numéros d'étudiant et de personne)

Etudiant * Personne

Noms des étudiants ayant réussi le cours d'algorithmique:

π [nom] ( Personne * Etudiant * [nomC = "algo"] Obtenu )

5. La thêta-jointure de deux relations

Définition: soient deux relations R (A1, A2, …, An) et T (B1, B2, …, Bp) n'ayant pas d'attribut de même nom, la thêta jointure
de R et T selon le prédicat p, notée R *[p] T , crée une nouvelle relation temporaire de schéma (A1, A2, …, An, B1, B2, …,
Bp), et de population égale à l'ensemble des tuples de R et de T concaténés qui satisfont le prédicat.

Le prédicat est de la même forme que le prédicat d'une sélection, sauf pour les conditions élémentaires qui comparent un
attribut de R à un attribut de T:
<condition>::= nom-attribut-de-R <opérateur de comparaison> nom-attribut-de-T

Exemple:
Liste des couples de numéros d'étudiants, tels que ces deux étudiants soient nés le même jour

*/ on crée d'abord une autre relation Etudiant avec des attributs renommés/*
Etudiant2 := [n°E : n°E2 , dateN : dateN2] π [n°E, dateN] Etudiant

π [n°E, n°E2] (Etudiant *[n°E < n°E2 dateN = dateN2] Etudiant2 )

On obtient en résultat, d'après la base de données fournie en exemple, une relation vide.

SUPPORT DE COURS VERSION IMPRIMABLE Version 2.0


BASE DE DONNEES IHM/PHP| LE MODELE RELATIONNEL
6. Union, Différence, Intersection

Définition: soient R et S deux relations de même schéma : R (A1, A2, …, An), S (A1, A2, …, An).

" Union : R S crée une relation temporaire de même schéma et de population égale à l'ensemble des tuples de R et de
ceux de S (avec élimination des doubles éventuellement créés).

" Différence : R - S crée une relation temporaire de même schéma et de population égale à l'ensemble des tuples de R
moins ceux de S, c'est à dire : les tuples qui se trouvent dans R mais pas dans S.

" Intersection : R S crée une relation temporaire de même schéma et de population égale à l'ensemble des tuples de R
qui ont un tuple de même valeur dans S.

Exemples: Liste des numéros des personnes qui sont soit enseignant de BD soit étudiant en BD:
/* on crée deux relations : */
EnsBD := [n°Ens : n°P] π [n°Ens] [nomC="BD"] Cours
On obtient en résultat d'après la base de données fournie en exemple: 2222.

EtudBD := π [n°P] Etudiant * [nomC="BD"] Inscrit


On obtient en résultat d'après la base de données fournie en exemple: 5555.

/* Le résultat recherché est: */ EnsBD EtudBD On obtient en résultat: 2222, 5555.

! Liste des numéros des personnes qui n'ont rien à voir avec le cours de BD:

π[n°P] Personne - ( EnsBD EtudBD )

On obtient en résultat: 1111, 6666, 3333.

!Liste des numéros des personnes qui sont enseignants et étudiants simultanément (assistants-doctorants,…) :

( π [n°P] Enseignant ) ( π [n°P] Etudiant )

On obtient un résultat vide.

7. Produit cartésien de deux relations

Définition: Soient deux relations, R (A1, A2, …, An) et T (B1, B2, …, Bp), n'ayant pas d'attribut de même nom, alors le
produit de R par T, noté R × T, crée une relation temporaire de schéma (A1, A2, …, An, B1, B2, …, Bp) et de population
toutes les concaténations possibles de tuples de R et de T.

Remarque: La différence entre les opérateurs de théta-jointure et de produit cartésien consiste dans le fait que dans la thêta-
jointure, seules les combinaisons des tuples qui satisfont le prédicat de jointure apparaissent dans le résultat, tandis que dans le
produit toutes les combinaisons de tuples sont présentes.

Exemple:
Existe-t-il des personnes dont le nom est le même que celui d'un cours? Donner leurs noms.

π[nom] [nom=nomC] ( Personne × Cours )

SUPPORT DE COURS VERSION IMPRIMABLE Version 2.0


BASE DE DONNEES IHM/PHP| LE MODELE RELATIONNEL
avec un produit et une sélection ou
π[nom] ( Personne ∗[nom=nomC] Cours )
avec une thêta-jointure

Le résultat est une relation vide.

8. Division

Définition: Soient une relation R de schéma X et une relation V de schéma Y inclus dans X. La division de R par V, notée R /
V, crée une nouvelle relation T de schéma X - Y ne contenant que les n-uplets (v1, v2, ..., vn) tels que pour chaque n-uplet (w1,
w2, ..., wn) de V, R contient le n-uplet (v1, v2, ..., vn, w1, w2, ..., wn)
Exemple

9. Propriétés des opérateurs

Dans ce paragraphe, nous donnons les propriétés principales des opérateurs. Ces propriétés sont utiles pour l'optimisation des
requêtes.

9.1. Cascades de projections

Soient deux ensembles d'attributs tels que: {Ai1, Ai2, ....., Aij} {Ak1, Ak2, ....., Akl} ,
alors: π [Ai1, Ai2, ....., Aij] (π [Ak1, Ak2, ....., Akl] R) = π [Ai1, Ai2, ....., Aij] R

9.2. Cascades de sélections

[p1] ( [p2] R) = [p2] ( [p1] R) = [p1 p2] R)

9.3. Propriétés des jointures et du produit

" Commutativité:

# Jointure naturelle: R*S=S*R


# Thêta-jointure: R *[p] S = S *[p] R
# Produit cartésien: R×S=S×R

SUPPORT DE COURS VERSION IMPRIMABLE Version 2.0


BASE DE DONNEES IHM/PHP| LE MODELE RELATIONNEL
" Associativité:
# Jointure naturelle: si les relations R et S ont au moins un attribut commun, et si les relations S et T ont au moins un
attribut commun, alors: (R * S) * T = S * (R * T)
# Thêta-jointure: si les relations R, S et T n'ont aucun attribut commun, alors:
(R *[p1] S) *[p2] T = S *[p1] (R *[p2] T)
# Produit cartésien: si les relations R, S et T n'ont aucun attribut commun, alors:
(R × S) × T = S × (R × T)

9.4. Propriétés des opérateurs ensemblistes

Les opérateurs d'union et d'intersection sont commutatifs et associatifs. Ces propriétés sont directement dérivées de la théorie
des ensembles. Par contre, l'opérateur de différence n'est ni associatif ni commutatif.

IV- Conception de schémas relationnels

1. Perception du monde réel

Le monde réel peut être modélisé à l’aide d’entités qui représentent les objets ayant une existence visible et
d’associations entre ces objets.
A titre d’exemple, considérons des données modélisant les entités " personne " et " voiture " et l’association
" possède " qui traduit le fait qu’une personne est propriétaire d’une ou plusieurs voitures ; une personne est
caractérisée par son numéro de sécurité sociale, son nom, son prénom … la voiture par une immatriculation, sa
marque, sa couleur, … . A chaque occurrence d’association correspond une date d’achat et un prix.
Les entités " Personne " et " Voiture " seront représentées par les relations :

# Personne (NumSS, Nom, Prénom)


# Voiture (Imm, Marque, Couleur)

L’association " Possède " sera représentée par la relation :

# Possède (NummSS, Imm, Date, Prix)

Une mauvaise conception des entités et associations conduit à des relations problématiques.
Si par exemple on isole une seule entité " Propriétaire " contenant tous les attributs des trois relations
" Personne ", " Voiture " et " Possède ", on obtiendrait une relation du type :

NumSS Nom Prénom Imm Marque Couleur Date Prix


123 Durand Jean AB1 Renault Rouge 10/02/97 20 000
456 Martin Pierre CD2 Peugeot Verte 11/03/95 30 000

SUPPORT DE COURS VERSION IMPRIMABLE Version 2.0


BASE DE DONNEES IHM/PHP| LE MODELE RELATIONNEL
456 Martin Pierre EF3 Citroën Bleue 10/08/89 40 000
789 Smith Jack GH4 Peugeot Rouge 19/01/98 15 000
789 Smith Jack IJ5 Renault Verte 03/11/91 25 000
Cette relation souffre de plusieurs types d’anomalies :
! Tout d’abord des données sont redondantes ; par exemple Pierre Martin et Jack Smith apparaissent deux fois
(plus généralement une personne apparaît autant de fois qu’elle possède de voitures) => ces redondances
conduisent à des risques d’incohérences lors des mises à jour.
! D’autre part, il est nécessaire d’autoriser la présence de valeurs nulles dans une telle relation afin de pouvoir
conserver des voitures sans propriétaires ou des personnes ne possédant pas de voiture dans la base.

2. L’approche par décomposition

L’approche par décomposition pour concevoir des schémas relationnels tend, à partir d’une relation composée
de tous les attributs, appelée la relation universelle, à décomposer cette relation en sous relations qui ne
souffriraient pas d’anomalies.
Deux opérations élémentaires permettent la manipulation des relations : il s’agit d’une part de la projection et
d’autre part de la jointure.

2.1 Projection

La projection de la relation R de schéma R(A1,A2, …, An) sur les attributs Ai,Aj, …, Ak est une relation R’ de
schéma R’(Ai,Aj, …, Ak) obtenue par élimination des valeurs de R n’appartenant pas à R’ et par suppression des
tuples en doubles. On note la projection : π Ai, Aj, …, Ak (R).
Exemple :
π nom,prénom (Propriétaire) =
Nom Prénom
Durand Jean
Martin Pierre
Smith Jack

2.2 Jointure (naturelle)

La jointure de deux relations R et S de schémas respectifs R(A1,A2, …, An) et S (B1,B2, …, Bn) est une relation
T ayant pour attributs l’union des attributs de R et S, soit {A1,A2, …, An} U {B1,B2, …, Bn} et pour tuples tous
ceux obtenus par concaténation des tuples de R et S ayant mêmes valeurs pour les attributs de même nom. On
note la jointure : T=R X S
La jointure est l’opération inverse de la projection.
Ainsi : A1, A2, …, An (T) = R et B1, B2, …, Bn (T) = S
Exemple :
R

10

SUPPORT DE COURS VERSION IMPRIMABLE Version 2.0


BASE DE DONNEES IHM/PHP| LE MODELE RELATIONNEL
Marque Couleur
Renault Rouge
Peugeot Verte
Citroën Bleue
Renault Verte
S
Couleur Puissance
Rouge 6
Verte 9
Bleue 2
Bleue 5
Verte 6
RXS
Marque Couleur Puissance
Renault Rouge 6
Peugeot Verte 9
Peugeot Verte 6
Citroën Bleue 2
Citroën Bleue 5
Renault Verte 9
Renault Verte 6

2.3 Décomposition

La décomposition est le remplacement d’une relation R (A1, A2, …, An) par une collection de relations R1, R2,
… Rn obtenues par des projections de R et telles que la relation résultat des jointures R1 X R2 X … X Rn ait
même schéma que R.

Exemple :
Imm Marque Couleur Puissance Type
123X Renault Bleue 6 Safrane
456Y Renault Rouge 6 Safrane

• Décomposition 1

11

SUPPORT DE COURS VERSION IMPRIMABLE Version 2.0


BASE DE DONNEES IHM/PHP| LE MODELE RELATIONNEL
Imm Couleur Type
123X Bleue Safrane
456Y Rouge Safrane
q
Marque Puissance Type
Renault 6 Safrane

• Décomposition 2

Imm Type
123X Safrane
456Y Safrane

Couleur Puissance Type


Bleue 6 Safrane
Rouge 6 Safrane

Marque Type
Renault Safrane
Renault Safrane
Si l’on admet qu’à un type de véhicule sont associés une seule marque et une seule puissance, la première
décomposition est préférable à la seconde : en effet, seule la première permet de retrouver toutes les
informations par jointure (la couleur est " perdue " dans la décomposition 2).
La première décomposition est dite sans perte.
Une décomposition R en R1, R2, …, Rn est sans perte si :
R=R1 X R2 X … X Rn.
Le problème de la conception des bases de données relationnelles peut dont être vu comme celui de décomposer
la relation universelle composée de tous les attributs en sous relations ne souffrant pas d’anomalies et d’obtenir
une décomposition sans perte.

V- Dépendances fonctionnelles

1. Définition

On dit qu'il existe une dépendance fonctionnelle entre un attribut A1 et un attribut A2, on note A1 -> A2, si
connaissant une valeur de A1 on ne peut lui associer qu'une seule valeur de A2. On dit aussi que A1 détermine
A2. A1 est la source de la dépendance fonctionnelle et A2 le but.
X détermine Y $ Y dépend fonctionnellement de X

12

SUPPORT DE COURS VERSION IMPRIMABLE Version 2.0


BASE DE DONNEES IHM/PHP| LE MODELE RELATIONNEL
A titre d’exemple, dans la relation voiture, on a les dépendances fonctionnelles suivantes :

# Imm ! Couleur
# Type ! Marque
# Type ! Puissance
# (Type, Marque) ! Puissance

Il est essentiel de noter qu’une dépendance fonctionnelle est une assertion sur toutes les valeurs possibles et
non sur les valeurs actuelles : elle caractérise une intention et non une extension de la relation.

2. Type de Dépendance fonctionnelle

2.1 Dépendance fonctionnelle élémentaire

On dit qu'une dépendance fonctionnelle est élémentaire si la source ne comporte pas d'attributs superflus. La
question sur l'élémentarité d'une DF ne doit donc se poser que lorsque la partie gauche de la DF comporte
plusieurs attributs.
Dans notre exemple, toutes les DF sont élémentaires. Par contre, si nous avons les DF suivantes : A,B->C et A -
>C
La dépendance fonctionnelle A, B -> C n'est pas élémentaire puisque B est superflu.

2.2- Dépendance fonctionnelle directe

On dit que la dépendance fonctionnelle A -> B est directe s'il n'existe aucun attribut C tel que l'on puisse avoir
A -> C et C -> B. En d'autres termes, cela signifie que la dépendance entre A et B ne peut pas être obtenue par
transitivité.

3- Propriétés des dépendances fonctionnelles

Les dépendances fonctionnelles obéissent à certaines propriétés connues sous le nom d'axiomes d'Armstrong.

" Réflexivité : Y X ==> X ! Y


" Augmentation : X ! Y ==> XZ ! YZ
" Transitivité : X ! Y et Y ! Z ==> X ! Z

D'autres propriétés se déduisent de ces axiomes :

" Union : X ! Y et X ! Z ==> X ! YZ


" Pseudo-transitivité : X ! Y et YW ! Z ==> XW ! Z
" Décomposition : X ! Y et Z Y ==> X ! Z

13

SUPPORT DE COURS VERSION IMPRIMABLE Version 2.0


BASE DE DONNEES IHM/PHP| LE MODELE RELATIONNEL
L'intérêt de ces axiomes et des propriétés déduites est de pouvoir construire, à partir d'un premier ensemble de
dépendances fonctionnelles, l'ensemble de toutes les dépendances fonctionnelles qu'elles génèrent. On parle
alors de dépendance fonctionnelle élémentaire.

4. Graphe des dépendances fonctionnelles

Soit un ensemble F de dépendances fonctionnelles élémentaires. Dans le cas où tous les attributs gauches sont
uniques, il est possible de visualiser cet ensemble de dépendances par un graphe appelé graphe des dépendances
fonctionnelles.
Exemple :
F= {Imm ! Type ; Type ! Marque ; Type ! Puissance ; Imm ! Couleur}

• Fermeture transitive : Ensemble des DF élémentaires considérées enrichi de toutes les DF élémentaires déduites par
les axiomes d’Armstrong et leurs dérivées.

• Couverture minimale : Ensemble F des DF élémentaires associé à un ensemble d’attributs vérifiant les propriétés
suivantes :

% Aucune dépendance dans F n’est redondante ; c’est à dire pour toute dépendance fonctionnelle f de F, F-f n’est
pas équivalent à F ;
% Toute dépendance fonctionnelle élémentaire des attributs est dans la fermeture transitive de F

V – Normalisation

Les trois premières formes normales ont pour objectif de permettre la décomposition de relations sans perdre
d’informations.
Elles découlent de la notion de dépendance fonctionnelle.
L’objectif de la décomposition est d’aboutir à un schéma conceptuel représentant les entités et les associations
canoniques du monde réel.

1. Première forme normale

Une relation est en première forme normale si tout attribut contient une valeur atomique.
Cette forme normale est justifiée par la simplicité et l’esthétique (" tables rectangulaires "). Elle consiste
simplement à éviter les domaines composés de plusieurs valeurs.
Par exemple la relation Personne (Nom, Prénoms) sera décomposée en Personne_1(Nom, Prénom_1) et
Personne_2(Nom, Prénom_2).

2. Deuxième forme normale

Une relation est en deuxième forme normale si et seulement si :

% Elle est en première forme normale ;


% Tout attribut n’appartenant pas à une clé ne dépend pas que d’une partie de cette clé.

14

SUPPORT DE COURS VERSION IMPRIMABLE Version 2.0


BASE DE DONNEES IHM/PHP| LE MODELE RELATIONNEL
Par exemple, considérons la relation Fournisseur (Nom, Article, Adresse, Prix) ; la clé est (Nom, Article). On a
les dépendances fonctionnelles :
(Nom, Article) ! Prix et Nom ! Adresse
Par suite, une partie de la clé (Nom) détermine un attribut n’appartenant pas à la clé : cette relation n’est donc
pas en deuxième forme normale ; elle pourra être décomposée en deux relations qui elles sont en deuxième
forme normale :
Fournisseur (Nom, Adresse) et Produit (Nom, Article, Prix)

3. Troisième forme normale

Une relation est en troisième forme normale si et seulement si :

% Elle est en deuxième forme normale ;


% Tout attribut n’appartenant pas à une clé ne dépend pas d’un attribut non clé.

La troisième forme normale permet d’assurer l’élimination des redondances dues aux dépendances transitives.
Par exemple la relation Voiture (Imm, Marque, Type, Puissance, Couleur) n’est pas en troisième forme
normale. En effet, l’attribut Type (non clé) détermine les attributs Marque et Puissance. Il faut décomposer la
relation de la manière suivante :
Voiture (Imm, Type, Couleur) et Modèle (Type, Marque, Puissance)

4. Forme normale de Boyce-Codd (BCNF)

Considérons la relation Vins(Cru, Pays, Région) avec les dépendances fonctionnelles supposées : Région
! Pays et (Cru, Pays) ! Région
Cru Pays Région
Chenas France Beaujolais
Julienas France Beaujolais
Morgon France Beaujolais
Brouilly France Beaujolais
Chablis Etats-Unis Californie

Cette relation est bien en troisième forme normale car aucun attribut non clé ne dépend d’une partie de la clé ou
d’un attribut non clé. Cependant, on y trouve de nombreuses redondances.
Afin d’éliminer ces redondances, Boyce et Codd ont introduit une forme normale qui porte leur nom (Boyce
Codd Normal Form / BCNF).
Une relation est en BCNF si et seulement si les seules dépendances fonctionnelles élémentaires sont celles dans
lesquelles une clé détermine un attribut.
La relation Vins pourra être décomposée en deux relations :
Crus (Cru, Région) et Régions (Région, Pays)
La dépendance fonctionnelle (Cru, Pays) ! Région est perdue mais elle peut être recomposée par jointure.

15

SUPPORT DE COURS VERSION IMPRIMABLE Version 2.0


BASE DE DONNEES IHM/PHP| LE MODELE RELATIONNEL
La décomposition en forme normale BCNF est toutefois insuffisante pour éliminer les redondances et les
anomalies de mises à jour.
Afin d’approfondir la décomposition, il est nécessaire d’introduire la notion de dépendance multivaluée.

5. Dépendance multivaluée

Soit R (A1, A2, …, An) un schéma de relation et X et Y des sous ensembles de {A1,A2, …, An}.
On dit que X multi-détermine Y (X!! Y) si étant donnée des valeurs de X, il y a un ensemble de valeurs de Y
associées et cet ensemble est indépendant des autres attributs Z=R-X-Y de la relation R.
Une dépendance multivaluée est élémentaire si :
Pour une relation R, X!!Y

% Y n’est pas vide et est disjoint de X ;


% R ne contient pas une autre DM de type X’!! Y’ telle que X’! X et Y’! Y

6. Quatrième forme normale

Une relation est en quatrième forme normale si et seulement si les seules dépendances multi-valuées
élémentaires sont celles dans lesquelles une clé détermine un attribut.

16

SUPPORT DE COURS VERSION IMPRIMABLE Version 2.0

Vous aimerez peut-être aussi