Sunteți pe pagina 1din 8

Sarah Cohen-Boulakia, Bases de donnes

1
Chapitre 3
Le modle relationnel
Sarah Cohen-Boulakia
LRI, Universit Paris-Sud 11, Orsay
Sarah Cohen-Boulakia, Bases de donnes
2
Modle relationnel
Un modle pour dcrire et manipuler les
donnes dune base de donnes
Invent par Codd en 1970 (IBM)
Le langage SQL est la norme choisie
aujourdhui pour crer et interroger une
base de donnes relationnelle
Sarah Cohen-Boulakia, Bases de donnes
3
Base de donnes relationnelle
Un BD relationnelle = un ensemble de relations
Une relation est une table qui comporte
Des colonnes : attributs
Des lignes : n-uplets, tuples (synonymes)
numSS nom prenom
17902567 Payen Olivier
2780289 Payen Judith
29005579 Quoti Mathilde
14504573 Renzi Paul
17702562 Salout Anne
24902567 Thibo Caroline
Relation CLIENT
Toutes les lignes sont
diffrentes (2 2)
Sarah Cohen-Boulakia, Bases de donnes
4
Schma de relation : nom de relation + nom et type
(domaine) de chaque colonne
Instance de relation : un ensemble fini de valeurs
(i.e. tuples, n-uplets) respectant le schma de
relation
Schma, Instance
numSS nom prenom
17902567 Payen Olivier
2780289 Payen Judith
29005579 Quoti Mathilde
14504573 Renzi Bastien
17702562 Salout Anne
24902567 Thibo Caroline
Relation CLIENT
Schma de la relation
CLIENT
CLIENT(numSS : int, nom :
string, prenom : string)
Instance : ensemble de
toutes les lignes
Sarah Cohen-Boulakia, Bases de donnes
5
Cardinalit, Arit
numSS nom prenom
17902567 Payen Olivier
2780289 Payen Judith
29005579 Quoti Mathilde
14504573 Renzi Bastien
17702562 Salout Anne
24902567 Thibo Caroline
Relation CLIENT
Cardinalit dune relation : Nombre de lignes (nb
tuples, nb n-uplets)
Arit dune relation : Nombre de colonnes
Cardinalit : 6, Arit : 3
Sarah Cohen-Boulakia, Bases de donnes
6
Dfinitions formelles (1/2)
Un schma de relation est form
1. dun nom R
2. dun ensemble dattributs Att(R)={A1,,An}
3. dun domaine Dom(Ai)
pour chaque attribut Ai Att(R) (i [1,n])
Larit de R est le cardinal de Att(R)
Le schma dune Base de donnes est lunion
des schma des relations qui la compose
CLIENT(numSS : int, nom : string, prenom : string)
Sarah Cohen-Boulakia, Bases de donnes
7
Dfinitions formelles (2/2)
Une instance de relation de schma R est un sous-
ensemble fini (ventuellement vide) de n-uplets prenant leur
valeur dans Dom(A1) x x Dom(An)
Soit t un tuple de R, soit A Att(R), on note t(A) la restriction
de t sur A
Considrons le tuple t=(17902567,Payen,Olivier) de la relation
CLIENT et considrons lattribut prenom
t(prenom) = Olivier
La cardinalit dune instance r de R est le nombre de n-
uplets de linstance de relation
- NB : 2 relations diffrentes peuvent avoir le mme schma
Une instance de base de donnes B est un ensemble
dinstances (ventuellement vide) pour chaque relation Ri
(1 i m) de B
Sarah Cohen-Boulakia, Bases de donnes
88
Passage du diag. de classes UML
au modle relationnel
Passage dun modle disposant de deux
structures (classes - associations) un
modle ne disposant que dune seule structure
(la relation i.e. la table)
Application dun ensemble de rgles qui
garantissent la cohrence smantique entre le
modle UML et le modle relationnel
Sarah Cohen-Boulakia, Bases de donnes
99
Problme : Rponse la requte Les personnes
de plus de 20 ans : 29005579 (Mathilde Quoti) ?
Prliminaire 1 : Les valeurs NULL
Une valeur NULL reprsente une valeur
indtermine pour un attribut
Par dfinition une cl nest jamais NULL
On vite au maximum les valeurs NULL
NumSS Nom Prnom
17902567 Payen Olivier
2780289 Payen Judith
29005579 Quoti Mathilde
14504573 Renzi Bastien
Age
32
14
27
NULL
Sarah Cohen-Boulakia, Bases de donnes
10 10
Prliminaire 2 : Cl trangre (1/2)
Intuition : la valeur dun attribut dune table
appartient toujours lensemble des valeurs dun
attribut dune autre table
Exemple
CLIENT(numClient : int, adresse : string, )
RESERVATION(numRes : int, clientRes : int)
clientRes cl trangre
clientRes de RESERVATION prend ses valeurs dans
lattribut numClient de la table CLIENT : seuls les clients
recenss dans la table CLIENT peuvent faire des
reservations
Sarah Cohen-Boulakia, Bases de donnes
11 11
Prliminaire 2 : Cl trangre (2/2)
Soient R et S deux relations. Lensemble dattributs
X de R forme une cl trangre de R ssi il existe Y
cl de S tel que R[X] S[Y]
CLIENT(numClient : int, adresse : string, )
RESERVATION(numRes : int, clientRes : int)
RESERVATION[ClientRes] CLIENT[numClient]
NB : Un SGBD ninterdit pas davoir des valeurs
NULL dans les cls trangres
Sarah Cohen-Boulakia, Bases de donnes
12 12
Passage UML relationnel : Classe
Rgles de passage pour une classe
Classe Relation de mme nom, avec les mmes
attributs que la classe + on prcise les types
(domaines)
Lidentifiant de la classe devient la cl de la relation
CLIENT
--------------
numSS {PK}: int
nom : string
prenom : string
CLIENT (numSS : int,
nom :string, prenom : string)
Modle UML
Modle relationnel
Sarah Cohen-Boulakia, Bases de donnes
13
Associations 1:1, 1:N, N:M
On regarde les valeurs maximum des cardinalits
1:1 MARIES : Un homme nest mari qu une femme et une femme
na quun mari (on ne gre pas les re-mariages)
1:N ACHETE ((1,1),(1,N)) et CONCERNE ((1,1), (0,N))
N:M A_POUR_ETAPE : un trajet est constitu de plusieurs tapes
(1,N) et une tape peut tre visite par plusieurs trains (1,M)
1:1
1:N N:M
TRAJET ETAPE CLIENT RESERVATION PERSONNE PERSONNE
MARIES ACHETE
A_POUR_ETAPE
Sarah Cohen-Boulakia, Bases de donnes
14 14
Passage association de type N:M (dfinition)
Association N:M relation de mme nom, avec
les attributs de lassociation
La cl est donne par lensemble des cls de
chaque relation qui sont aussi des cls trangres
ADRESSE
--------------
idAd {PK}: int
numRue : int
nomRue : string
codeP : int
ville : string
CLIENT
--------------
numSS {PK}: int
nom : string
prenom : string
age : int
1,N 1,N
ADRESSE(idAd: int, numRue: int, nomRue: string,
codeP: int, ville : string)
CLIENT(numSS: int, nom : string, prenom : string,
age : int)
HABITE(numSS : int, idAd : int)
Modle
UML
Modle
relationnel
Sarah Cohen-Boulakia, Bases de donnes
15
Passage association de type N:M (illustration)
ADRESSE(idAd : int, numRue : int, nomRue : string,
codeP: int, ville: string)
CLIENT(numSS : int, nom : string, prenom : string, age : int)
HABITE(numSS : int, idAd : int)
numSS nom prenom
17902567 Payen Olivier
2780289 Payen Judith
age
32
14
idAd numRue nomRue
001 18 Boileau
002 45 Gde Rue
codeP
91400
91400
ville
Orsay
Saclay
003
1bis
Pl dItalie 75013 Paris
004 32 Fleurs 49000 Angers
numSS idAd
17902567
17902567
2780289
2780289
001
001
004
002
Olivier habite Orsay et Anger
Judith habite Orsay et Saclay
ADRESSE
HABITE
CLIENT
Sarah Cohen-Boulakia, Bases de donnes
16 16
Passage association de type 1:N
(dfinition)
La cl ct 1 devient la cl trangre ct N
(nouvel attribut dans la relation cot N)
CLIENT(numSS: int, nom : string,
prenom : string)
RESERVATION(numRes: int,
classe : int, dateRes :Date,
numSS : int)
Modle UML
Modle relationnel
RESERVATION
-------------------------
numRes {PK} : int
Classe : int
dateRes : Date
CLIENT
--------------
numSS {PK}: int
nom : string
prenom : string
1,N 1,1 ACHETE
Sarah Cohen-Boulakia, Bases de donnes
17 17
Passage association de type 1:N (cls)
CLIENT(numSS: int, nom : string, prenom : string)
RESERVATION(numRes: int, Classe : int, dateRes :
Date, numSS : int)
Pour chaque rservation il ny a quun seul
Client (1:N)
Le numro du Client est inclus dans la table
RESERVATION
Le client de la table RESERVATION devra
apparatre dans la table Client (cl trangre)
Sarah Cohen-Boulakia, Bases de donnes
18
1:N avec Entit Faible (1/2)
Lentit faible a pour cl sa propre cl + celle de
lentit forte (qui est cl trangre)
CLIENT(nom: string, prenom : string,
idAd : int, Tel : int)
ADRESSE(idAd: int, numRue: int)
un client est
identifi par
son nom, son
prnom et son
adresse
Modle
relationnel
ADRESSE
--------------------
idAdd {PK}
numRue
nomRue
codeP
nomVille
CLIENT
-------------
nom {PK}
prenom {PK}
tel
1,1
1,N
Habite
UML
Sarah Cohen-Boulakia, Bases de donnes
19 19
1:N avec Entit Faible (2/2)
Lentit faible a pour cl sa propre cl + celle de
lentit forte (qui est cl trangre)
CLIENT(nom: string, prenom : string, idAd : int, tel : int)
ADRESSE(idAd: int, numRue: int)
Lidentifiant du Client est donn par (nom, prenom, idAd)
idAd prend sa valeur dans les adresses de la table ADRESSE
(colonne idAd) On ne considre que des clients qui ont une
adresse dans la table ADRESSE (cl trangre)
Sarah Cohen-Boulakia, Bases de donnes
20
2 cardinalits minimales 1
Fusion des classes (renommage possible)
La cl de lune des relation (au choix) est choisie
20
Passage Associations 1:1
VEHICULE
---------------------
immatricultaion {PK}: int
modele : string
marque : string
CLIENT
-------------------
numSS {PK} : int
nom : string
prenom : string
1,1 1,1
UML
VEHICULE_LOUE(immatriculation : int, modele : string, marque
: string, numSS : int, nom: string, prenom : string)
Ou bien
VEHICULE_LOUE(immatriculation : int, modele : string, marque
: string, numSS : int, nom: string, prenom : string)
Sarah Cohen-Boulakia, Bases de donnes
21
2 cardinalits minimales 1
Fusion des classes (renommage possible)
La cl de lune des relation (au choix) est choisie
21
Passage Associations 1:1
UML
VEHICULE_LOUE(immatriculation : int, modele : string, marque
: string, numSS : int, nom: string, prenom : string)
Ou bien
VEHICULE_LOUE(immatriculation : int, modele : string, marque
: string, numSS : int, nom: string, prenom : string)
Si deux classes sont trs diffrentes et ont beaucoup
dattributs, on peut crer deux tables, lune delle
contiendra en plus de ses attributs
la cl de lautre table
(cf. Relation 1:N)
VEHICULE
---------------------
immatricultaion : int
modele : string
marque : string
CLIENT
-------------------
numSS : int
nom : string
prenom : string
1,1
1,1
loue
Sarah Cohen-Boulakia, Bases de donnes
22 22
Passage : Hritage (dfinition)
Chaque classe fille relation
Cl primaire de la classe mre migre dans les relations
issues des classes filles et devient cl et cl
trangre
RESERVATION(numRes :
int, classe : int, dateRes :
Date)
RES_PASSAGER(numRes :
int, nBPas : int)
RES_FRET(numRes : int,
qteTonnes : int)
RESERVATION
-----------------------
numRes {PK}: int
classe : string
dateRes : Date
RES_FRET
------------------
qte : int
RES_PASSAGER
-------------------
nbPas : int
Sarah Cohen-Boulakia, Bases de donnes
23 23
Passage : Hritage (illustration)
RESERVATION(numRes : int, dateRes : Date)
RES_PASSAGER(numRes : int, nBPas : int)
RES_FRET(numRes : int, QteTonnes : float)
numRes nBPas
001 2
003 4
numRes classe dateRes
001 1 18/11/2007
002 2
19/11/2007
003
2
004 2
RESERVATION
RES_PASSAGER
22/11/2007
22/11/2007
RES_FRET
numRes qteTonnes
002 10,76
004 5,00
La rservation 001 concerne 2 passagers et t effectue le 18 Nov 2007
La rservation 002 concerne 10,76 tonnes de marchandise et a t effectue
le 19 Nov 2007
Sarah Cohen-Boulakia, Bases de donnes
24 24
Association n-aire
Lassociation n-aire devient une relation dont la
cl est forme de lensemble des cls des
classes qui sont toutes cls trangres
Ce processus a pu dj tre fait lors de la
modlation (remplacement de lassociation n-
aire par des associations binaires et une
nouvelle classe)
Sarah Cohen-Boulakia, Bases de donnes
25
Cas des cardinalits minimales 0 (1/3)
Cas des relations N:M
ADRESSE
----------------------
idAdd {PK}: int
numRue : int
nomRue : string
codeP : int
ville : string
CLIENT
------------
numSS {PK}: int
nom : string
prenom : string
1,N
0,N
On stocke des adresses qui ne sont pas forcement celles de clients
Aucun changement, les adresses ntant pas
associes des clients napparatrons simplement pas
dans la table Habite
ADRESSE(idAd : int, numRue :int, nomRue : string,
codeP : int, ville : string)
CLIENT(numSS: int, nom : string, prenom : string)
HABITE(numSS : int, idAd : int)
habite
Sarah Cohen-Boulakia, Bases de donnes
26
Cas des cardinalits minimales 0 (2/3)
Cas des relations 1:N
CLIENT(numSS: int, nom : string, prenom : string)
RESERVATION(numRes: int, classe : int, dateRes : Date,
numSS : int)
On garde les tables telles quelles mais la cl trangre
(numSS) de rservation pourra tre NULL
Si la cardinalit min est 0 cot N : aucun problme
Une rservation nest pas systmatiquement associe un client
RESERVATION
-------------------------
numRes {PK} : int
Classe : int
dateRes : Date
CLIENT
--------------
numSS {PK}: int
nom : string
prenom : string
1,N 0,1 achete
Sarah Cohen-Boulakia, Bases de donnes
27
Cas des cardinalits minimales 0 (3/3)
Cas des relations 1:1
VEHICULE_LOUE(immatriculation : int, modele : string, marque
: string, numSS : int, nom: string, prenom : string)
Si on sait que les valeurs NULL vont tre remplies
rapidement, on ne change rien
Sinon, on vite les valeurs NULL et on cr deux tables :
Une pour CLIENT, une pour VEHICULE avec une cl trangre
vers CLIENT
On stocke des clients qui nont pas forcment lou de vhicule
VEHICULE
---------------------
immatricultaion {PK}: int
modele : string
marque : string
CLIENT
-------------------
numSS{PK} : int
nom : string
prenom : string
0,1
1,1
loue
Sarah Cohen-Boulakia, Bases de donnes
28
Attribut dassociation
Cas N:M
Les attributs dassociation sont dans la table de
lassociation
Par exemple, Possede
Cas 1:N
Les attributs dassociation sont dans la table cot N
Cas 1:1
Les attributs dassociation sont dans la table unique
cre
Personne
Voiture
DateAchat : Date
Prix : int
possede
Sarah Cohen-Boulakia, Bases de donnes
29
Exercice 1
Proposer un ensemble de tables pour le
diagramme UML suivant
EMPLOYE
---------------------
numSS : int
Nom : string
Prenom : string
telephone : int
Salaire : float
DEPARTEMENT
--------------------
idDep : int
Nom : string
Budget : int
1,N
1,1
1,N
1,N
gere
travaille

S-ar putea să vă placă și