Base de Donnees Ihm/Php: I-Qu'est-ce Que Le Modèle Relationnel?
Base de Donnees Ihm/Php: I-Qu'est-ce Que Le Modèle Relationnel?
Base de Donnees Ihm/Php: 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.
• 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 :
• 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
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:
Clé étrangère : C'est un attribut (colonne) qui est clé primaire d'une autre relation.
• 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.
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.
" 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
Dupont Jean
Talon Achille
Rochat Marie
Martin Régis
Picard Anne
Martin Jules
Dupont 72
Talon 75
Rochat 72
Martin 74
Picard 76
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
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
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
On obtient en résultat, d'après la base de données fournie en exemple, une relation vide.
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.
! Liste des numéros des personnes qui n'ont rien à voir avec le cours de BD:
!Liste des numéros des personnes qui sont enseignants et étudiants simultanément (assistants-doctorants,…) :
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.
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
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.
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
" Commutativité:
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.
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 :
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 :
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
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
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
• Décomposition 2
Imm Type
123X Safrane
456Y 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
# 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.
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.
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é.
Les dépendances fonctionnelles obéissent à certaines propriétés connues sous le nom d'axiomes d'Armstrong.
13
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.
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).
14
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)
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
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
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