Algèbre relationnelle

publicité
Algèbre relationnelle : interrogation de données
BD4
S.B. F.C. N. G.dR.
Licence MIASHS, Master ISIFAR, Paris-Diderot
Janvier 2015
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
1/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
1 / 54
.
Introduction
Le modèle relationnel
▷ Inventé par Codd en 1970
▷ Fondements théoriques basés sur la théorie des relations.
▷ Propose un modèle pour la modélisation et l’interrogation de
données
▷ Facile à traduire dans des langages ”réels” (ex. SQL)
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
2/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
2 / 54
.
Les tables/relations
Un exemple de table
Relations
Example
Table player dans la base tennis
pid
71
72
73
74
75
name
Vince Spadea
Igor Andreev
Jiri Vanek
Benjamin Becker
Dudi Sela
gender
M
M
M
M
M
code
USA
RUS
CZE
GER
ISR
lastname
Spadea
Andreev
Vanek
Becker
Sela
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
4/54
.
.
.
.
.
. . . .
. . . .
firstname
Vince
Igor
Jiri
Benjamin
Dudi
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
4 / 54
.
Les tables/relations
Un exemple de table
Relations
Example
Table player dans la base tennis
pid
71
72
73
74
75
name
Vince Spadea
Igor Andreev
Jiri Vanek
Benjamin Becker
Dudi Sela
gender
M
M
M
M
M
code
USA
RUS
CZE
GER
ISR
lastname
Spadea
Andreev
Vanek
Becker
Sela
firstname
Vince
Igor
Jiri
Benjamin
Dudi
Une table comme player est un tableau à deux dimensions, chaque
ligne ou tuple contient des informations concernant un individu (ici un
joueur de tennis professionnel. Ces informations sont des valeurs
d’attributs. Ici les attributs qui définissent le schéma de la table sont pid,
name, gender, code, last_name, first_name. Dans la vie d’un table, on ajoute,
on supprime et on modifie souvent les lignes d’une table. On modifie
beaucoup plus rarement les attributs.
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
4/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
4 / 54
.
Les tables/relations
Un exemple de table
Schema de la table player
Table "tennis.player"
Column
pid
name
gender
code
lastname
firstname
Indexes :
"Playerpkey"
Type
integer
character
character
character
character
character
varying(30)
varying(1)
varying(3)
varying
varying
Modifiers
not null
default NULL ::character varying
default NULL ::character varying
default NULL ::character varying
PRIMARY KEY, btree (pid)
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
5/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
5 / 54
.
Les tables/relations
Formalisation
Un peu de formalisation
- Domaine : ensemble dénombrable d’éléments
Example
entiers, chaines de caractères, date, ...
- Un domaine peut se définir aussi bien par extension (en donnant la
liste de toutes les valeurs possibles) ou par intention (en en donnant
une propriété caractéristique).
- Produit Cartésien : d’une liste de domaines D1 , D2 , . . . , Dk , noté
D1 × D2 × · · · × Dk , est ensemble des k-uplets (ou tuples)
(v1 , v2 , . . . , vk )
où, pour chaque i, vi ∈ Di .
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
6/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
6 / 54
.
Les tables/relations
Formalisation
Relations
- Relations : sous-ensemble de D1 × D2 × · · · × Dk où D1 , ..., Dk sont des
domaines.
Example
D1 = {1, 2, 5}, D2 = {2, 4}.
D1 × D2 = {(1, 2), (1, 4), (2, 2), (2, 4), (5, 2), (5, 4)}.
R = {(1, 2), (1, 4), (5, 2), (5, 4)}.
On peut représenter R par le tableau :
1
1
5
5
2
4
2
4
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
7/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
7 / 54
.
Les tables/relations
Cardinalité et arité
Relations
Cardinalité d’une relation R
nombre de tuples (lignes) de R.
Example
Si R = D1 × D2 alors |R| = |D1 | × |D2 |.
Arité d’une relation R
Nombre de colonnes de la relation R (nombre d’attributs qui
constituent chaque tuple de R)
On parle parfois de degré d’une relation.
Example
Soit R ⊆ D1 × D2 × · · · × Dk ,
Arité de R = longueur d’un tuple de R = k
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
8/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
8 / 54
.
Les tables/relations
Cardinalité et arité
Relations
- Un domaine peut apparaitre plusieurs fois dans la définition d’une
relation.
- Attribut : nom/rôle de la colonne. Précise la sémantique de celle-ci.
Pas deux attributs identiques dans une table.
- Schéma d’une relation : liste des attributs et domaines de la relation.
Peut se noter
R(A1 : D1 , A2 : D2 , . . . , Ak : Dk )
où Ai : attribut et Di : domaine.
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
9/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
9 / 54
.
Les tables/relations
Clés et références
Relations
Example
Table player dans la base tennis
pid
71
72
73
74
75
name
Vince Spadea
Igor Andreev
Jiri Vanek
Benjamin Becker
Dudi Sela
gender
M
M
M
M
M
code
USA
RUS
CZE
GER
ISR
lastname
Spadea
Andreev
Vanek
Becker
Sela
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
10/54
.
.
.
.
.
. . . .
. . . .
firstname
Vince
Igor
Jiri
Benjamin
Dudi
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
10 / 54
.
Les tables/relations
Clés et références
Clé, références, etc
- La clé d’une relation est un ensemble minimal d’attributs dont la
valeur détermine complètement un tuple.
Example
Ville(code_postal, nom, population)
la valeur de Code_postal détermine entièrement un tuple.
- Une référence ou (clé étrangère) est un (groupe d’) attribut dont les
valeurs sont prises parmi celles d’une clé d’une autre table.
Example
Ville(code_postal, nom, population)
Département(numéro, nom, population, CP_préfecture)
la valeur de Code_préfecture fait référence au Code_postal de sa
préfecture qui est une ville.
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
11/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
11 / 54
.
Les tables/relations
Clés et références
Schema de country_codes
Table "tennis.countrycodes"
Type
Modifiers
Column
code
character varying(3)
not null
country
character varying(100)
default NULL ::character varying
Indexes :
"CountryCodespkey" PRIMARY KEY, btree (code)
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
13/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
13 / 54
.
Les tables/relations
Clés et références
Schema de country_codes
Table "tennis.countrycodes"
Type
Modifiers
Column
code
character varying(3)
not null
country
character varying(100)
default NULL ::character varying
Indexes :
"CountryCodespkey" PRIMARY KEY, btree (code)
Identifiant
code est une clé primaire ou identifiant pour la table country_code.
Référence
Dans la table player, c’est une clé étrangère ou référence qui permet de lier un tuple de player à un
tuple de country_code
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
13/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
13 / 54
.
Les tables/relations
Clés et références
Résumé informel
▷ RELATION = TABLE A DEUX DIMENSIONS
▷ (NOM DE) COLONNE = ATTRIBUT
▷ EN-TÊTE DU TABLEAU = SCHEMA DE LA RELATION (description du type,
définition intentionnelle)
▷ LIGNE = TUPLE
▷ ENSEMBLE DES LIGNES = CONTENU DE LA RELATION (définition
extensionnelle)
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
14/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
14 / 54
.
Algèbre relationnelle
Algèbre relationnelle
Une algèbre
C’est un ensemble E munis d’opérations internes ⊤, ⊥, +, ×, . . .. Une
opération prend en argument des (ou un) éléments de l’ensemble et
produit un élément de l’ensemble.
Exemple : R muni de +, ×, −, /, . . .
Algèbre relationnelle
C’est une algèbre qui opère sur l’ensemble des tables/relations.
Dans un SGBD
le langage de manipulation de données (SQL) met en oeuvre
l’algèbre relationnelle (et bien d’autres choses).
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
15/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
15 / 54
.
Opérateurs de base
Liste des opérateurs
Liste des opérateurs
L’algèbre relationnelle comme Langage de Manipulation de données
(LMD).
Opérateurs de base
- Union ∪
- Intersection ∩
- Différence \
- Projection Π
- Sélection σ
- Produit cartésien (déjà vu) ×
Manipulent des relations pour produire d’autres relations (le résultat).
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
16/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
16 / 54
.
Opérateurs de base
Opérateurs unaires
Projection Π
▷ La projection d’une relation R de schéma R(A1 , . . . , Ak ) sur les
attributs Ai1 , . . . , Aip est la relation S
- de schéma S(Ai1 , . . . , Aip )
- dont les tuples sont obtenus par élimination des attributs non mentionnés
dans Ai1 , . . . , Aip (et par élimination des doublons).
▷ On note S = πAi
1
,...,Aip (R).
Élimination des doublons
car une projection peut produire plusieurs fois le même tuple.
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
17/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
17 / 54
.
Opérateurs de base
Opérateurs unaires
Schema de tournament
Table ”tennis.tournament”
Column
Type
Modifiers
tid
integer
not null
name
character varying
location
character varying
startdate date
enddate
date
numrounds integer
ttype
character varying
surface
character varying
Indexes :
"Tournamentpkey" PRIMARY KEY, btree (tid)
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
18/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
18 / 54
.
Opérateurs de base
Opérateurs unaires
Tuples de tournament
tid
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
name
Australian Open
Australian Open
French Open
French Open
US Open
US Open
Wimbledon
Wimbledon
Heineken Open
Heineken Open
Brasil Open 2007
Brasil Open 2007
Countrywide Classic
Countrywide Classic
BMW Open
location
Melbourne, Australia
Melbourne, Australia
Roland Garros, Paris
Roland Garros, Paris
Flushing Meadows, NY
Flushing Meadows, NY
London, Great Britain
London, Great Britain
Auckland, New Zealand
Auckland, New Zealand
Costa do Sauipe, Brasil
Costa do Sauipe, Brasil
Los Angeles, CA, USA
Los Angeles, CA, USA
Munich, Germany
startdate
2007-01-15
2007-01-15
2007-05-26
2007-05-26
2007-08-27
2007-08-27
2007-06-25
2007-06-25
2007-01-08
2007-01-08
2007-02-12
2007-02-12
2007-07-16
2007-07-16
2007-04-30
enddate
2007-01-28
2007-01-28
2007-06-10
2007-06-10
2007-09-09
2007-09-09
2007-07-08
2007-07-08
2007-01-14
2007-01-14
2007-02-18
2007-02-18
2007-07-22
2007-07-22
2007-05-06
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
19/54
rounds
7
6
7
6
7
6
7
6
5
4
5
4
5
4
5
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
ttype
Singles
Doubles
Singles
Doubles
Singles
Doubles
Singles
Doubles
Singles
Doubles
Singles
Doubles
Singles
Doubles
Singles
. . . .
. . . .
.
surface
Hard
Hard
Clay
Clay
Hard
Hard
Grass
Grass
Hard
Hard
Clay
Clay
Hard
Hard
Clay
.
.
.
.
.
.
.
.
Janvier 2015
19 / 54
.
Opérateurs de base
Opérateurs unaires
Projection
Projection de la table tournament sur les colonnes location et surface.
location
Melbourne, Australia
Auckland, New Zealand
Flushing Meadows, NY, USA
Munich, Germany
London, Great Britain
...
surface
Hard
Hard
Hard
Clay
Grass
...
πlocation,surface tournament
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
20/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
20 / 54
.
Opérateurs de base
Opérateurs unaires
Sélection
- La sélection d’une relation R par une condition C est une relation S
- de même schéma que R (même arité)
- dont les tuples sont ceux de R qui satisfont la condition C (cardinalité de S
≤ cardinalité de R)
- On note S = σC (R).
- La condition C s’exprime
- à l’aide des noms d’attributs de la relation ou de constantes (pour les
opérandes)
- peut utiliser des opérateurs arithmétique de comparaisons (=, ̸=, ≤, ≥, <, >)
ainsi que des connecteurs logique (¬, ∧, ∨)..
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
22/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
22 / 54
.
Opérateurs de base
Opérateurs unaires
Tuples de tournament
tid
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
name
Australian Open
Australian Open
French Open
French Open
US Open
US Open
Wimbledon
Wimbledon
Heineken Open
Heineken Open
Brasil Open 2007
Brasil Open 2007
Countrywide Classic
Countrywide Classic
BMW Open
location
Melbourne, Australia
Melbourne, Australia
Roland Garros, Paris
Roland Garros, Paris
Flushing Meadows, NY
Flushing Meadows, NY
London, Great Britain
London, Great Britain
Auckland, New Zealand
Auckland, New Zealand
Costa do Sauipe, Brasil
Costa do Sauipe, Brasil
Los Angeles, CA, USA
Los Angeles, CA, USA
Munich, Germany
startdate
2007-01-15
2007-01-15
2007-05-26
2007-05-26
2007-08-27
2007-08-27
2007-06-25
2007-06-25
2007-01-08
2007-01-08
2007-02-12
2007-02-12
2007-07-16
2007-07-16
2007-04-30
enddate
2007-01-28
2007-01-28
2007-06-10
2007-06-10
2007-09-09
2007-09-09
2007-07-08
2007-07-08
2007-01-14
2007-01-14
2007-02-18
2007-02-18
2007-07-22
2007-07-22
2007-05-06
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
23/54
rounds
7
6
7
6
7
6
7
6
5
4
5
4
5
4
5
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
ttype
Singles
Doubles
Singles
Doubles
Singles
Doubles
Singles
Doubles
Singles
Doubles
Singles
Doubles
Singles
Doubles
Singles
. . . .
. . . .
.
surface
Hard
Hard
Clay
Clay
Hard
Hard
Grass
Grass
Hard
Hard
Clay
Clay
Hard
Hard
Clay
.
.
.
.
.
.
.
.
Janvier 2015
23 / 54
.
Opérateurs de base
Opérateurs unaires
Sélection sur tournament
Sélection des tuples pour lesquels l’attribut ttype vaut ’Singles’
tid
14
12
6
8
0
10
2
4
name
BMW Open
Countrywide Classic
Wimbledon
Heineken Open
Australian Open
Brasil Open 2007
French Open
US Open
location
Munich, Germany
Los Angeles, CA,
London, Great Britain
Auckland, New Zealand
Melbourne, Australia
Costa do Sauipe, Brasil
Roland Garros, Paris
Flushing Meadows, NY, USA
startdate
2007-04-30
2007-07-16
2007-06-25
2007-01-08
2007-01-15
2007-02-12
2007-05-26
2007-08-27
enddate
2007-05-06
2007-07-22
2007-07-08
2007-01-14
2007-01-28
2007-02-18
2007-06-10
2007-09-09
rounds
5
5
7
5
7
5
7
7
ttype
Singles
Singles
Singles
Singles
Singles
Singles
Singles
Singles
surface
Clay
Hard
Grass
Hard
Hard
Clay
Clay
Hard
σttype=′ Singles′ tournament
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
24/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
24 / 54
.
Opérateurs de base
Opérateurs unaires
Renommage
Renommage d’une table
consiste à renommer explicitement certains attributs.
On peut souhaiter renommer des attributs pour
- mettre en correspondance deux schémas (préalable à certaines
opérations binaires)
- traduire une base d’usage internationale (localisation)
Renommage dans country_codes
pays
Afghanistan
Netherlands Antilles
Albania
Algeria
Andorra
code
AFG
AHO
ALB
ALG
AND
ρcountry→pays country_codes
Cette opération ne change rien au contenu de la table, elle définit un
nouveau schéma, avec un nouveau nom d’attribut
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
26/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
26 / 54
.
Opérateurs de base
Opérateurs binaires
Union et intersection
L’union et l’intersection sont des opérations portant sur deux relations R1
et R2 de même schéma.
- T = R1 ∪ R2 est constituée des tuples appartenant à R1 ou à R2 mais
pas nécessairement aux deux
- T = R1 ∩ R2 est constituée des tuples appartenant à R1 et à R2
Le schémas de R1 ∪ R2 , R1 ∩ R2 est égal à celui de R1 (et à celui de R2 !)
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
27/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
27 / 54
.
Opérateurs de base
Opérateurs binaires
Différence ensembliste
- La différence de deux relations R1 et R2 (de même schéma) est une
relation T de même schéma constituée des tuples appartenant à R1
et n’appartenant pas à R2 .
- On note T = R1 − R2 .
- Opération non commutative : R1 − R2 ̸= R2 − R1 (en général).
Example
On veut calculer la liste des joueurs qui ont participé à Roland Garros
(French Open) mais pas à Wimbledon.
Il faut (et il suffit de) calculer la liste des pid des joueurs qui ont participé
à Roland Garros, la liste des pid des joueurs qui ont participé à Wimbledon
et faire la différence.
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
29/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
29 / 54
.
Opérateurs de base
Opérateurs binaires
Produit Cartésien
- Déjà défini : construit des ”produits” de relation.
- Le schéma de R1 × R2 est la concaténation des schémas de R1 et R2
- arité de R1 × R2 = arité de R1 × arité de R2
- En algèbre relationnelle, cette opération est commutative :
R1 × R2 = R2 × R1
- cardinalité de R1 × R2 = cardinalité de R1 × cardinalité de R2
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
30/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
30 / 54
.
Opérateurs de base
Opérateurs binaires
Résumé
Algèbre relationnelle
- opérations ensemblistes classiques.
- Projection : élimine des colonnes
- Sélection : élimine des lignes
Pour interroger une BD, on combine ces opérateurs :
Example
πnum (σdest=′ Lyon′ (Train))
Numéro des trains dont la ville de destination est ’Lyon’.
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
32/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
32 / 54
.
Opérations complémentaires : les jointures
Les jointures
On va définir des opérations pratiques pour la manipulation de
données : les jointures.
- Jointure
- Jointure naturelle
- θ-jointure et équi-jointure
- Les jointures externes
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
33/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
33 / 54
.
Opérations complémentaires : les jointures
Jointure
La jointure T = R1 ▷◁C R2 de deux relations R1 et R2 sous la condition C
est la relation T
- de schéma : la concaténation des schéma de R1 et R2
- formée des tuples du produit cartésien R1 × R2 qui satisfont la
condition C
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
34/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
34 / 54
.
Opérations complémentaires : les jointures
Jointure
π... (player ▷◁C country_codes)
lastname
Spadea
Andreev
Vanek
Becker
Sela
Srichaphan
Gicquel
Jones
Tsonga
Lapentti
firstname
Vince
Igor
Jiri
Benjamin
Dudi
Paradorn
Marc
Alun
Jo-Wilfried
Nicolas
country
United States
Russia
Czech Republic
Germany
Israel
Thailand
France
Australia
France
Ecuador
code
USA
RUS
CZE
GER
ISR
THA
FRA
AUS
FRA
ECU
gender
M
M
M
M
M
M
M
M
M
M
Jointure de player et de country_codes sur la condition player.code =
country_codes.code, puis projection sur last_name, first_name, country, code,
gender
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
35/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
35 / 54
.
Opérations complémentaires : les jointures
Équi-Jointure et θ-jointure
Équi-jointure
La condition de jointure porte sur des attributs de types comparables et
impose l’égalité.
Dans l’exemple précédent, la jointure est une équi-jointure.
θ-jointure
condition de jointure entre attributs de types comparables et avec un
opérateur différents de l’égalité i.e. {<, >, ≤, ≥, ̸=}.
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
37/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
37 / 54
.
Opérations complémentaires : les jointures
Jointure naturelle
R1 d’attributs A1 , .., Ak , B1 , ..., Bh
R2 d’attributs A1 , .., Ak , C1 , ..., Cl
A1 , ..., Ak : attributs communs.
- La jointure naturelle sur deux relations R1 et R2 est la relation
- d’attributs A1 , .., Ak , B1 , ..., Bh , C1 , ..., Cl
- définie par :
σA1 ,..,Ak ,B1 ,...,Bh ,C1 ,...,Cl (R1 ▷◁C R2 )
où C = R1 .A1 = R2 .A1 ∧ . . . ∧ R1 .Ah = R2 .Ah
Autrement dit, on réalise une équi-jointure sur tous les attributs
communs et on ne garde qu’un seul ”exemplaire” de ces attributs
communs par projection.
- On note : R1 ▷◁ R2 .
- Lorsqu’on prend seulement une partie des attributs communs, on
spécifie le nom de ceux-ci en indice.
Example
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
La jointure entre player et country_codes est une jointure naturelle
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
38/54
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
38 / 54
.
Opérations complémentaires : les jointures
Représentation graphique - arbre de requête
πname,country
σgender=′ female′
▷◁code
player country_codes
Pour : πname,country σgender=′ female′ (player ▷◁code country_codes)
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
41/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
41 / 54
.
Encore des opérations...
Jointure externe
- Perte d’information dans jointure naturelle : les tuples ne satisfaisant
pas la condition disparaissent.
- On ajoute ”symboliquement” une ligne dont les valeurs sont vides (ou
avec valeur spéciale NULL) pour garder les tuples initiaux ”non
satisfaisants” après la jointure.
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
42/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
42 / 54
.
Encore des opérations...
Jointure externe (définition)
Jointure externe à droite ▷◁ext
entre deux tables R et S, sous la condition C, est une table :
- de même schéma que R ▷◁C S
- contenant les tuples de R ▷◁C S ...
- et pour chaque tuple t2 de S tel qu’il n’existe pas de tuple t1 tel que
(t1 , t2 ) vérifie la condition C, un tuple de la forme (NULL, t2 ) où les
attributs provenant de R ne sont pas renseignés ...
- Notation R ▷◁ext
C S
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
43/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
43 / 54
.
Encore des opérations...
Jointure externe
Jointure externe
Jointure externe à droite entre player et country_code avec une
equi-jointure sur l’attribut commun code, puis sélection sur la condition
last_name est nulle et projection sur quelques attributs provenant des
tables player et country_codes (10 premiers résultats affichés).
lastname
firstname
country
Venezuela
Tajikistan
Iraq
Côte d Ivoire
Cameroon
Malaysia
Egypt
Indonesia
Organization of Eastern Caribbean States (OECS) (Davis Cup Entity)
Saudi Arabia
code
VEN
TJK
IRQ
CIV
CMR
MAS
EGY
INA
ECA
KSA
gender
A noter
Dans un SGBD, les jointures externes sont un moyen commode pour
réaliser la différence entre tables.
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
45/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
45 / 54
.
Encore des opérations...
Division
Division
Division de R par S
- relation R de schéma R(A1 , A2 , . . . , Ak )
- relation S de schéma S(Ap+1 , . . . , Ak ) (Schema de S ⊂ Schema de R)
La division (ou le quotient) de R par S est une relation T de schéma
T (A1 , . . . , Ap ) formée des tuples qui, concaténés à chaque tuple de S,
donnent un tuple de R.
On note
T =R÷S
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
46/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
46 / 54
.
Encore des opérations...
Division
Tables played_in et registration
Dans la base tennis, on trouve les tables registration et played_in, qui
permettent de déterminer quels joueurs se sont inscrits à quel tournoi.
Chaque tuple de played_in représente l’inscription d’un joueur ou d’une
équipe de double à un tournoi
Column
tid
registrnum
seed
Type
integer
integer
integer
Modifiers
not null
not null
- L’attribut tid indique le tournoi concerné (un tuple de tournament
identifié par son attribut tid.
- L’attribut registration est un numéro d’inscription
- L’attribut seed, quand il est renseigné, permet de repérer les têtes de
série.
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
47/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
47 / 54
.
Encore des opérations...
Division
Table registration
Si la base tennis ne concernait que des compétitions en simple (single),
nous pourrions représenter les inscriptions de manière très simple : par
des couples (tid,pid). Pour pouvoir représenter de façon homogène les
inscriptions aux tournois en simple et en double, on a choisi d’utiliser
deux tables played_in et registration.
Table "tennis.registration"
Column
registrnum
pid
Type
integer
integer
Modifiers
not null
not null
Pour chaque inscription à un tournoi (tuple de played_in identifié par
registrnum), on trouvera un ou deux tuples dans registration. Ce ou ces
tuples permettent de savoir quel(s) joueur(s) portent quels numéros
d’inscription.
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
48/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
48 / 54
.
Encore des opérations...
Division
Division : les joueurs qui ont participé à tous les
tournois du grand schlem
Le grand schlem est formé par quatre tournois : Autralian Open, French
Open, Wimbledon et US Open.
Attention
Cette question n’est pas la même que la question :
quels sont les joueurs qui ont participé à au moins un tournoi du grand
schlem ?
Pourtant ...
Nous allons commencer par construire une requête qui correspond
presque à cette question intermédiaire.
Nous calculons les couples (tid,pid) qui correspondent à une inscription
à un tournoi du grand schlem (table GSI).
Pour répondre à la question de départ, il suffit de diviser GSI par sa
projection sur tid.
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
49/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
49 / 54
.
Encore des opérations...
Division
Division : les joueurs qui ont participé à tous les
tournois du grand schlem (...)
Calcul des tid des tournois du grand schlem
GS ← πtid σname∈(′ FrenchOpen′ ,...,′ Wimbledon′ ) tournament
Calcul des couples (tid,pid) correspondant aux jours participant à au
moins un tournoi du grand schlem
GSI ← πtid,pid (GS ▷◁ played_in ▷◁ registration)
Les pid des joueurs ayant participé à tous les tournois du grand schlem
R ← GSI ÷ (πtid GSI)
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
50/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
50 / 54
.
Les opérateurs de base et les autres
Interdéfinissabilité des opérateurs
L’union, la différence, le produit cartésien, la sélection et la
projection sont suffisants pour définir tous les opérateurs que l’on a
vu.
Mais avoir un panel plus large d’opérateurs simplifie l’écriture des
requêtes.
Quelques définitions
- Pour la Jointure : R ▷◁C S ≡ σC (R × S)
- Pour l’intersection : A ∩ B = A ∪ B − ((B − A) ∪ (A − B))
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
53/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
53 / 54
.
Les opérateurs de base et les autres
Définition de la division
- R de schéma R(A1 , A2 , . . . , Ak ), S de schéma S(Ap+1 , . . . , Ak )
est la relation T = R ÷ S de schéma T (A1 , . . . , Ap ).
−
πA1 ,...,Ap
πA1 ,...,Ap
R
−
×
R
πA1 ,...,Ap S
R
.
BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot)
Algèbre relationnelle
54/54
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
Janvier 2015
54 / 54
.
Téléchargement