Modèle relationnel, Algèbre relationnel

Transcription

Modèle relationnel, Algèbre relationnel
Relation
Une relation est un sous-ensemble du produit
cartésien d'une liste de domaines.
Chaque relation est identifiée par un nom.
Représentation sous la forme d'une table à 2
dimensions :
des colonnes, attributs.
des lignes, enregistrements ou n-uplets.
43
OlivierCuré [[email protected]]
Attribut
Un attribut prend ses valeurs dans domaine de
valeurs. Un attribut est identifié par un nom.
Exemple :
titre
Alien
44
année nomDir prénomDir annéeNaissDir
1979
Scott
Ridley
1943
Reservoir Dogs 1992
Tarantino
Quentin
1963
The thing
1982
Carpenter
John
1948
Volte-face
1997
Woo
John
1946
Pulp Fiction
1995
Tarantino
Quentin
1963
OlivierCuré [[email protected]]
Clés
Clé : un ensemble d'attributs dont le regroupement
des valeurs identifie sans ambiguité un n-uplet
(tuple).
Clé candidate (candidate key): une clé pour laquelle
aucun sous-ensemble n'est une clé. Une clé
minimale.
Clé primaire (primary key): une clé candidate
sélectionnée pour être la clé principale d'une
relation. Une clé primaire par relation.
45
OlivierCuré [[email protected]]
Clé externe
Une clé externe (foreign key) est un ensemble
d'attributs dans une relation qui correspondent
exactement à la clé primaire d'une autre relation.
Le nom des attributs ne doivent pas nécessairement
correspondre mais les domaines doivent être
identiques.
46
OlivierCuré [[email protected]]
Un exemple
Une relation sur les films
titre
année
Alien
1979
Reservoir Dogs 1992
The thing
1982
Volte-face
1997
Pulp Fiction 1995
Terminator
1984
Ghosts of Mars2001
Mad Max
1979
Mad Max 2
1981
nomDir prénomDir
Scott
Ridley
Tarantino Quentin
Carpenter John
Woo
John
Tarantino Quentin
Cameron James
Carpenter John
Miller
George
Miller
George
annéeNaissDir
1943
1963
1948
1946
1963
1954
1948
1945
1945
Quelques problèmes : Supprimer un film, ajouter un réalisateur, modifier la date de naissance
d'un réalisateur, Cohérence des données.
47
OlivierCuré [[email protected]]
Un exemple (2)
Une relation sur les
films
titre
Alien
Reservoir Dogs
The thing
Volte-face
Pulp Fiction
Terminator
Ghosts of Mars
Mad Max
Mad Max 2
48
Une autre relation sur les réalisateurs
idDir nomDir prénomDir annéeNaissDir
Scott
Ridley
1943
année idDir1
2
Tarantino Quentin
1963
1979 1
3
Carpenter John
1948
1992 2
4
Woo
John
1946
1982 3
5
Cameron James
1954
1997 4
6
Miller
George
1945
1995 2
1984 5
2001 3
Problèmes précédents : Supprimer un film, ajouter un
1979 6
réalisateur, modifier la date de naissance d'un réalisateur,
Cohérence des données.
1981 6
OlivierCuré [[email protected]]
Schéma d'une relation
Le schéma d'une relation correspond à l'ensemble :
nom de la relation, liste des attributs (avec
domaines) et indication de la clé primaire (souligné).
R : A1, A2, ..., An
Schéma d'une base de données est l'ensemble des
schémas des relations de la base.
49
OlivierCuré [[email protected]]
Schémas, exemple
Schéma des relations :
film (titre, année, idDir)
realisateur (idDir, nomDir, prenomDir, anneéNaisDir)
Schéma de la base de données :
film, realisateur
50
OlivierCuré [[email protected]]
Mapping EA - relationnel
Une type d'entité devient une relation.
Une propriété devient un attribut.
Une propriété identifiante devient une clé primaire.
Une association devient une relation et sa
représentation est fonction des cardinalités.
51
OlivierCuré [[email protected]]
Transformation des associations
en relations
Les cardinalités maximales de l'association sont de 1
:
L'identifiant d'une entité est utilisé comme clé
étrangère de l'autre relation, ou inversement.
Entity1(a1,
Entity2(a2,
ou
Entity1(a1,
Entity2(a2,
52
...)
..., #a1)
...,#a2)
...)
OlivierCuré [[email protected]]
Transformation des associations
en relations (2)
La cardinalité maximale d'une association est à n et
l'autre à 1 :
L'identifiant de l'entité (*:n) devient une clé
étrangère de l'entité (*:1).
Entity1(a1, ..., #a2)
Entity2(a2, ...)
53
OlivierCuré [[email protected]]
Transformation des associations
en relations (3)
Les cardinalités maximales sont à n :
L'association devient une relation et sa clé
primaire se compose des identifiants des entités.
Entity1(a1, ...)
Entity2(a2, ...)
Asso1(#a1,#a2, a3)
54
OlivierCuré [[email protected]]
Exemple
mapping
relations n,m
(1)
Schéma relationnel
Produit (numPro, nomPro)
Client (numCli, nomCli)
Achat (#numCli,#numPro)
(2)
55
OlivierCuré [[email protected]]
Transformation des associations
en relations (4)
Dans le cas d'une association « is-a », il est
possible de voir la solution avec un point de vue
orienté objet (duplication des attributs de la superclasse dans la sous-classe) ou bien entité-association
(duplication de l'indentifiant de la super-classe dans
la sous-classe).
Personne(id_pers,nom)
Vision OO :
joueur(id_pers, club)
arbitre(id_pers, niveau)
Vision EA :
joueur(id_pers, nom, club)
arbitre(id_pers, nom, niveau)
56
OlivierCuré [[email protected]]
Transformation des associations
en relations (5)
Dans le cas d'une association récursive, l'attribut clé
primaire de la relation est dupliquée sous la forme
d'une clé étrangère.
Employe (id_emp, nom_emp,
#id_emp_manager)
57
OlivierCuré [[email protected]]
Exemple Bibliothèque
58
OlivierCuré [[email protected]]
Schémas de la bibliothèque
Schéma relationnel
Mot_cle (numMC , valeurMC)
Ouvrage (numOuv, titreOuv, nomAuteurOuv, editeurOuv)
Exemplaire (numEx, dateAchat, #numEmp, #numOuv)
Emprunteur (numEmp, nomEmp, adrEmp)
MotCle_Ouvrage (#numMC, #numOuv)
Schéma de la base de données
Mot_cle, Ouvrage, Exemplaire, Emprunteur, MotCle_Ouvrage
59
OlivierCuré [[email protected]]
Autre exemple
On gère des patients et des docteurs qui sont des
personnes. Pour chaque personne, on stocke le NSS,
le nom, le prénom, l'adresse. Pour un docteur nous
avons en plus un numéro d'ordre.
Un docteur soigne un patient et peut lui prescrire un
test (portant un nom et identifié par un numéro).
On désire stocker la date et le résultat d'un test
donné pour un patient et prescrit par un docteur.
60
OlivierCuré [[email protected]]
Correction
exemple
61
OlivierCuré [[email protected]]
Son schéma relationnel
Personne(NSS, nom, prenom, adrNumRue, adrRue, adrVille)
Patient (NSS)
Docteur(NSS, numOrdre) Test(numTest, nomTest)
Soigne (#NSSPatient,#NSSDocteur)
EffectuerTest (#NSSDocteur, #NSSPatient, #NumTest, date, resultat)
62
OlivierCuré [[email protected]]
4.
Algèbre
relationnel
63
OlivierCuré [[email protected]]
Objectif
Effectuer des opérations sur le modèle relationnel.
Algèbre relationnel :
Théorique
Fondement du traitement des requêtes.
Notation formelle (plus 'propre' et plus compact
que le SQL).
Récupération et manipulation (mise-à-jour,
suppression, insertion) des données de la BD.
Base de l'optimisation des requêtes SQL.
Ce n'est pas un langage de programmation
(déclaratif, pas procédural).
64
OlivierCuré [[email protected]]
Les langages des SGBD
LDD ou Langage pour la Définition des Données
(Data Definition Language - DDL)
définition de l'ensemble du schéma de la base de données.
LMD ou Langage pour la Manipulation des
Données ( Data Manipulation Language - DML)
consultation, modification, suppression et ajout des
données.
LCD ou Langage pour le Contrôle des Données
(Data Control Language - DCL)
définition des permissions d'accès, administration.
OlivierCuré [[email protected]]
Algèbre et calcul
relationnels pour le LMD
Deux représentations sont à la base de
l'implémentation des langages de requêtes :
Algèbre relationnel (relational algebra)
Très pratique pour représenter un plan d'exécution,
plus opérationnel que le calcul relationnel.
Concerne le 'comment faire'.
Calcul relationnel (relational calculus)
Permet aux utilisateurs de décrire ce qu'ils veulent
plutôt que de décrire comment l'obtenir. Plus
déclaratif que l'algèbre relationnel. Concerne le
'quoi faire'.
OlivierCuré [[email protected]]
Exemple
titre
année idDir
Alien
1979
1
Reservoir Dogs 1992
2
The thing
1982
3
Volte-face
1997
4
Pulp Fiction
1995
2
Terminator
1984
5
Ghosts of Mars 2001
3
Mad Max
1979
6
Mad Max 2
1981
6
idDir
nomDir
prénomDir
1
Scott
Ridley
2
Tarantino
Quentin
3
Carpenter
John
4
Woo
John
5
Cameron
James
6
Miller
George
SQL
SELECT nomDir, titre
FROM realisateur r, film f
WHERE r.idDir=f.idDir;
Algèbre relationnel
annéeNaissDir
1943
1963
1948
1946
1954
1945
∏ (nomDir, film) (Film ><idDir Realisateur)
Calcul relationnel
{R.nomDir, F.titre | R ∈ Realisateur ∧ ∃ F(F ∈ Film ∧ R.idDir = F.idDir) }
OlivierCuré [[email protected]]
Opérations sur l'algèbre
relationnel
Théorie des opérations est formellement
définie et équivalente à la logique du
premier ordre.
Les opérateurs relationnels transforment
une, ou une paire, de relations en un résultat
qui est lui aussi une relation.
Ce résultat peut-être exploité dans d'autres
requêtes.
Les opérations éliminent les duplicats.
OlivierCuré [[email protected]]
Algèbre relationnel
Un ensemble d'opérations formelles
permettant de décrire des requêtes
sous une forme algébrique.
Opérations sur les ensembles :
Union : ∪
R
Intersection : ∩
Différence : Opérations algébriques :
S
unaire (sélection, projection)
Binaire (jointures et division)
69
OlivierCuré [[email protected]]
Projection
Opération algébrique sélectionnant un
sous-ensemble des attributs d'une
relation
Symbole : ∏
Syntaxe : Résultat = ∏
(attributs)
Relation
Exemple : R1 = ∏ (prenomDir)realisateur
Quentin
John
James
George
70
OlivierCuré [[email protected]]
Projection (2)
Le nombre de n-uplets d'une relation
résultat d'une opération de projection
R, est inférieur ou égal au nombre de nuplets de la relation R.
L'opération de projection n'est pas
commutative.
Si liste2 contient les attributs de liste1,
liste1 ⊆ liste2 on peut écrire :
∏
71
(liste1)
(∏
(liste2)
(R))= ∏
(liste1)
(R)
OlivierCuré [[email protected]]
Sélection
Opération permettant la sélection d'un sousensemble des n-uplets d'une relation
satisfaisant une condition.
Symbole : σ
Syntaxe : Résultat = σ
(condition)
Relation
Opérateurs sur la condition :
=,<>,<,<=,>,>=.
Exemple : R1 = σ
3
72
Carpenter
John
(annéeNaisDir=1948)
realisateur
1948 OlivierCuré [[email protected]]
Sélection (2)
Le degré (nombre d'attributs) d'une relation résultat
d'une opération de sélection sur R est identique au
degré de la relation R.
La sélection est une opération commutative :
σ
(cond1)
(σ
(cond2)
(R)) = σ
(cond2)
(σ
(R))
(cond1)
Cascade d'opérations :
σ
73
(cond1)
(σ
(cond2)
(R)) = σ
(cond1 et cond2)
(R)
OlivierCuré [[email protected]]
Projection et sélection
On peut effectuer des opérations avec des
projections et sélections.
Exemple : Nom du réalisateur dont l'année de
naissance est 1948.
∏ (nomDir) (σ (anNaisDir=1948) realisateur)
74
OlivierCuré [[email protected]]
Produit cartésien
Le produit cartésien de 2 relations R1 (A1,A2, ..,An)
de i n-uplets et de R2 (B1,B2, ..,Bm) de j n-uplets est
une relation de degré n+m et de i*j n-uplets R3
(A1,A2,..,An,B1,B2,..,Bm).
Le résultat de R1xR2 est une relation incluant toutes
les combinaisons de n-uplets de R1 et R2.
On exploite le produit cartésien en conjunction avec
les autres opérateurs.
75
OlivierCuré [[email protected]]
Exemple de produit cartésien
R1
Att1 Att2
a1
b1
a1
b2
a2
b1
a2
b2
a3
b2
a4
b2
76
R2
Att3 c1
c2
R3 = R1xR2
Att1 Att2 Att3
a1
b1
c1
a1
b1
c2
a1
b2
c1
a1
b2
c2
a2
b1
c1
a2
b1
c2
a2
b2
c1
a2
b2
c2
a3
b2
c1
a3
b2
c2
a4
b2
c1
a4
b2
c2
3 attributs et
12 n-uplets
OlivierCuré [[email protected]]
Union, Intersection et différence
Ces opérations sont binaires et comportent 2
relations qui doivent être compatibles.
Soit la relation R1(A1,A2,..,An)
La fonction dom(Ai) retourne le domaine de Ai.
Exemple : Personne (nss, nom)
dom(nss) = des numéros de SS.
dom(nom) = des noms.
2 relations sont compatibles pour les opérations
sur les ensembles ssi pour R1(A1,A2,..,An) et
R2(B1,B2,..,Bm), n=m et dom(Ai) = dom(Bi),
1<=i<=n.
77
OlivierCuré [[email protected]]
Union [∪ ]
L'union de 2 relations R1(A1,A2,..,An) et
R2(B1,B2,..,Bn) est une relation R3(C1,C2,..,Cn) de
manière à avoir dom(Ci) = Dom(Ai) = Dom(Bi) pour
1<= i <= n.
Le résultat de R1 ∪ R2 est une relation incluant tous
les n-uplets qui sont dans R1 ou R2 ou bien dans R1
et R2, en éliminant les duplicats.
Union est commutative : R ∪ S = S ∪ R
78
OlivierCuré [[email protected]]
Exemple union
R1
Num
12345
13344
26688
25434
R2
79
R
R=R1 ∪ R2
Num
12345
13344
Num
26688
13344
25434
28866
28866
OlivierCuré [[email protected]]
Intersection [∩ ]
L'intersection de 2 relations R1(A1,A2,..,An) et
R2(B1,B2,..,Bn) est une relation R3(C1,C2,..,Cn) de
manière à avoir dom(Ci) = Dom(Ai) ∩ Dom(Bi) pour
1<= i <= n.
Le résultat de R1 ∩ R2 est une relation incluant
seulement les n-uplets qui sont dans R1 qui
apparaissent aussi dans R2.
Intersection est commutative : R ∩ S = S ∩ R .
80
OlivierCuré [[email protected]]
Exemple intersection
R1
Num
12345
13344
26688
25434
R
R=R1 ∩ R2
Num
13344
R2
Num
13344
28866
81
OlivierCuré [[email protected]]
Différence [- ]
La différence de 2 relations R1(A1,A2,..,An) et
R2(B1,B2,..,Bn) est une relation R3(C1,C2,..,Cn) de
manière à avoir dom(Ci) = Dom(Ai) − Dom(Bi) pour
1<= i <= n.
Le résultat de R1 − R2 est une relation incluant tous
les n-uplets qui se trouvent dans R1 et pas dans R2.
Différence n'est pas commutative.
82
OlivierCuré [[email protected]]
Exemple union
R1­R2
R1
Num
Num
12345
12345
13344
26688
26688
25434
25434
R2 ­ R1
Num
R2
Num
28866
13344
28866
83
OlivierCuré [[email protected]]
Jointure
Composition de deux relations sur un domain
commun.
La jointure de 2 relations R1(A1,A2,..,An) et
R2(B1,B2, .., Bm) est une relation R3 de degré k =
n+m et dont les attributs sont (A1, A2, .., An, B1, B2,
..,Bm).
Symbole : ><
Syntaxe : Résultat = R1 ><
Equivalence avec
84
σ
condition
(condition)
R2
(R1 x R2)
OlivierCuré [[email protected]]
Jointures
Un jointure avec une condition d'égalité est une
équi-jointure.
On parle de jointure naturelle lorsque la condition
compare des attributs dont le nom est identique. Le
symbole utilisé est alors '*' et il n'est pas nécessaire
d'indiquer la condition.
Exemple : R1(A1,A2,A3,A4) et S(A1,B1,B2,B3)
Q = R * S est équivalent à Q' = R ><R.A1=S.A1 S
On parle de théta-jointure lorsque les noms des
attributs sont différents.
85
OlivierCuré [[email protected]]
Renommer des attributs et
relations
Pour effectuer des jointures naturelles plus
facilement, on peut utiliser l'opérateur ρ qui permet
de renommer des attributs et/ou des relations.
Exemple : R1(A1,A2,A3)
ρ
(R)
renomme R en S et les
S(B1,B2,B3)
attributs An en Bn.
86
ρ
S ρ
B1,B2,B3
(R) renomme R en S.
(R) renomme An en Bn.
OlivierCuré [[email protected]]