Algèbre relationnelle

Transcription

Algèbre relationnelle
Algèbre relationnelle
Algèbre relationnelle
SB AD FC
Algèbre relationnelle
Janvier 2016
1 / 58
Janvier 2016
2 / 58
Introduction
Introduction
SB AD FC
Algèbre relationnelle
Introduction
Le modèle relationnel
Inventé par Codd (IBM) 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)
SB AD FC
Algèbre relationnelle
Janvier 2016
3 / 58
Janvier 2016
4 / 58
Les tables/relations
Les tables/relations
SB AD FC
Algèbre relationnelle
Les tables/relations
Relations
Exemple
ville : ensemble de noms de villes
heure : ensemble de chaînes de caractères de la forme XYhZT où X,Y,Z,T
sont des chiffres.
h-dép
13h15
13h22
Train
dest
h-arr
Lyon
15h15
Nantes 15h30
prov
Paris
Paris
Schéma : Train (h-dép: heure ; dest: ville ; h-arr:heure ; prov:ville)
Arité : 4
Cardinalité : 2
SB AD FC
Janvier 2016
Algèbre relationnelle
5 / 58
Les tables/relations
Exemple de Relation
Exemple
Table player dans la base tennis
pid name
gender
71 Vince Spadea
M
72 Igor Andreev
M
73 Jiri Vanek
M
74 Benjamin Becker M
75 Dudi Sela
M
SB AD FC
code
USA
RUS
CZE
GER
ISR
last_name
Spadea
Andreev
Vanek
Becker
Sela
first_name
Vince
Igor
Jiri
Benjamin
Dudi
Janvier 2016
6 / 58
Algèbre relationnelle
Les tables/relations
Sur la table player
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.
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.
SB AD FC
Janvier 2016
Algèbre relationnelle
7 / 58
Les tables/relations
Schema de la table player
Schema
Le schéma nous donne la liste des colonnes et le type/domaine de chaque
colonne.
Le schéma nous indique de quoi les lignes sont faites.
Table "tennis.player"
Type
Modifiers
Column
pid
integer
not null
name
character varying(30) default NULL::character varying
gender
character varying(1)
default NULL::character varying
code
character varying(3)
default NULL::character varying
last_name character varying
first_name character varying
Indexes:
"Player_pkey" PRIMARY KEY, btree (pid)
SB AD FC
Janvier 2016
8 / 58
Algèbre relationnelle
Formalisation
Formalisation
SB AD FC
Janvier 2016
Algèbre relationnelle
9 / 58
Formalisation
Un peu de formalisation
Domaine : ensemble dénombrable d’éléments, (entiers, chaines de
caractères, date, . . . )
Un domaine peut se définir
par extension (en donnant laliste de toutes les valeurs possibles)
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 l’ensemble des k-uplets (ou tuples)
(v1 , v2 , . . . , vk )
où, pour chaque i, vi ∈ Di .
SB AD FC
Janvier 2016
10 / 58
Algèbre relationnelle
Formalisation
Relations
Définition
Une relation est un sous-ensemble du produit cartésien
D1 × D2 × · · · × Dk
où D1 , ..., Dk sont des domaines.
Exemple
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
SB AD FC
Algèbre relationnelle
Janvier 2016
11 / 58
Janvier 2016
12 / 58
Cardinalité et arité
Cardinalité et arité
SB AD FC
Algèbre relationnelle
Cardinalité et arité
Relations
Cardinalité d’une relation R
nombre de tuples (lignes) de R.
Exemple
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.
Exemple
Soit R ⊆ D1 × D2 × · · · × Dk ,
Arité de R = longueur d’un tuple de R = k
SB AD FC
Janvier 2016
Algèbre relationnelle
13 / 58
Cardinalité et arité
Relations
Domaine peut apparaitre plusieurs fois dans la définition d’une même
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.
SB AD FC
Janvier 2016
14 / 58
Algèbre relationnelle
Clés et références
Clés et références
SB AD FC
Janvier 2016
Algèbre relationnelle
15 / 58
Clés et références
Clés, références, etc
Définition
La clé d’une relation est un ensemble minimal d’attributs dont la valeur
détermine complètement un tuple
Ville(code_postal, nom, population)
la valeur de code_postal détermine entièrement un tuple.
Définition
Une référence ou (clé étrangère) est un (groupe d’) attribut(s) dont les valeurs
sont prises parmi celles d’une clé d’une autre table
Ville(code_postal, nom, population)
Departement(numero, nom, population, code_prefecture)
la valeur de code_prefecture fait référence au code_postal de sa préfecture
qui est une ville.
SB AD FC
Janvier 2016
16 / 58
Algèbre relationnelle
Clés et références
Schema de country_codes
\d atp.country_codes
+----------+------------------------+-------------+
| Column
| Type
| Modifiers
|
|----------+------------------------+-------------|
| code
| character varying(3)
| not null
|
| country | character varying(100) |
|
+----------+------------------------+-------------+
Indexes:
"pk_country_codes" PRIMARY KEY, btree (code)
Referenced by:
TABLE "fk_player_code" CONSTRAINT "atp.player"
FOREIGN KEY (code)
REFERENCES atp.country_codes(code)
SB AD FC
Janvier 2016
Algèbre relationnelle
17 / 58
Clés et références
Schema de country_codes (suite)
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
SB AD FC
Janvier 2016
18 / 58
Algèbre relationnelle
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})
SB AD FC
Algèbre relationnelle
Janvier 2016
19 / 58
Janvier 2016
20 / 58
Algèbre relationnelle
Algèbre relationnelle
SB AD FC
Algèbre relationnelle
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).
SB AD FC
Algèbre relationnelle
Janvier 2016
21 / 58
Janvier 2016
22 / 58
Opérateurs de base
Opérateurs de base
SB AD FC
Algèbre relationnelle
Opérateurs de base
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)
SB AD FC
Janvier 2016
Algèbre relationnelle
23 / 58
Opérateurs de base
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.
SB AD FC
Janvier 2016
24 / 58
Algèbre relationnelle
Opérateurs de base
Schema de tournament
+-----------+-------------------+--------------------------------+
| Column
| Type
| Modifiers
|
|-----------+-------------------+--------------------------------|
| tid
| integer
| not null default
nextval('atp.tournament_tid_seq'::regclass) |
| name
| character varying |
|
| location | character varying |
|
| startdate | date
|
|
| enddate
| date
|
|
| numrounds | integer
|
|
| ttype
| character varying |
|
| surface
| character varying |
|
| outlier
| boolean
|
|
+-----------+-------------------+--------------------------------+
SB AD FC
Janvier 2016
Algèbre relationnelle
25 / 58
Opérateurs de base
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
SB AD FC
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
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
Janvier 2016
surface
Hard
Hard
Clay
Clay
Hard
Hard
Grass
Grass
Hard
Hard
Clay
Clay
Hard
Hard
Clay
26 / 58
Algèbre relationnelle
Opérateurs de base
Projection (exemple)
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
SB AD FC
Janvier 2016
Algèbre relationnelle
27 / 58
Opérateurs de base
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 (=, 6=, ≤, ≥, <, >) ainsi
que des connecteurs logique (¬, ∧, ∨)..
SB AD FC
Janvier 2016
28 / 58
Algèbre relationnelle
Opérateurs de base
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
Janvier 2016
29 / 58
σttype=0 Singles0 tournament
SB AD FC
Algèbre relationnelle
Opérateurs de base
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
SB AD FC
Janvier 2016
30 / 58
Algèbre relationnelle
Opérateurs binaires
Opérateurs binaires
SB AD FC
Janvier 2016
Algèbre relationnelle
31 / 58
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 !)
SB AD FC
Janvier 2016
32 / 58
Algèbre relationnelle
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 6= R2 − R1 (en général).
#### Exemple 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.
SB AD FC
Janvier 2016
Algèbre relationnelle
33 / 58
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
SB AD FC
Janvier 2016
34 / 58
Algèbre relationnelle
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 :
πnum (σdest=0 Lyon0 (Train))
Numéro des trains dont la ville de destination est Lyon.
SB AD FC
Algèbre relationnelle
Janvier 2016
35 / 58
Janvier 2016
36 / 58
Opérations complémentaires : les jointures
Opérations complémentaires : les jointures
SB AD FC
Algèbre relationnelle
Opérations complémentaires : les jointures
Les jointures
Opérations (très) pratiques
pour la manipulation de données : les jointures.
Jointure
Jointure naturelle
θ-jointure et équi-jointure
Les jointures externes
SB AD FC
Janvier 2016
Algèbre relationnelle
37 / 58
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
SB AD FC
Janvier 2016
38 / 58
Algèbre relationnelle
Opérations complémentaires : les jointures
Jointure
π... (player ./C country_codes)
last_name
Spadea
Andreev
Vanek
Becker
Sela
Srichaphan
Gicquel
Jones
Tsonga
Lapentti
first_name
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}
SB AD FC
Janvier 2016
Algèbre relationnelle
39 / 58
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. {<, >, ≤, ≥, 6=}.
SB AD FC
Janvier 2016
40 / 58
Algèbre relationnelle
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.
Notation : R1 ./ R2 .
Lorsqu’on prend seulement une partie des attributs communs, on spécifie le
nom de ceux-ci en indice.
Exemple
La jointure entre player et country_codes est une jointure naturelle (l’attribut
AD FC
Janvier 2016
41 / 58
commun SBest
code).
Algèbre relationnelle
Opérations complémentaires : les jointures
Représentation graphique - arbre de requête
πname,country
σgender=0 female0
./code
player country_codes
Pour : πname,country σgender=0 female0 (player ./code country_codes)
SB AD FC
Janvier 2016
42 / 58
Algèbre relationnelle
Encore des opérations. . .
Encore des opérations. . .
SB AD FC
Janvier 2016
Algèbre relationnelle
43 / 58
Encore des opérations. . .
Jointure externe
1
2
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.
SB AD FC
Janvier 2016
44 / 58
Algèbre relationnelle
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
SB AD FC
Algèbre relationnelle
Janvier 2016
45 / 58
Janvier 2016
46 / 58
Jointure externe
Jointure externe
SB AD FC
Algèbre relationnelle
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).
last_name
first_name
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.
SB AD FC
Algèbre relationnelle
Janvier 2016
47 / 58
Janvier 2016
48 / 58
Division
Division
SB AD FC
Algèbre relationnelle
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)
Définition
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.
Notation
T =R÷S
SB AD FC
Janvier 2016
Algèbre relationnelle
49 / 58
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.
SB AD FC
Janvier 2016
50 / 58
Algèbre relationnelle
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.
SB AD FC
Algèbre relationnelle
Janvier 2016
51 / 58
Janvier 2016
52 / 58
Division
Table registration (visualisation)
\d atp.registration
+------------+---------+-------------+
| Column
| Type
| Modifiers
|
|------------+---------+-------------|
| registrnum | integer | not null
|
| pid
| integer |
|
+------------+---------+-------------+
Indexes:
"fki_registration_played_in" btree (registrnum)
Foreign-key constraints:
"fk_registration_played_in" FOREIGN KEY (registrnum)
REFERENCES atp.played_in(registrnum)
"fk_registration_player" FOREIGN KEY (pid)
REFERENCES atp.player(pid)
"fk_registrnum_played_in" FOREIGN KEY (registrnum)
REFERENCES atp.played_in(registrnum)
ON UPDATE CASCADE ON DELETE CASCADE
SB AD FC
Algèbre relationnelle
Division
Table registration (suite)
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.
SB AD FC
Janvier 2016
Algèbre relationnelle
53 / 58
Division
Division : les joueurs qui ont participé à tous les tournois du grand
schlem au moins une fois
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
SB AD FC
Janvier 2016
54 / 58
Algèbre relationnelle
Division
Division : les joueurs qui ont participé à tous les tournois du grand
schlem (. . . )
Calcul des tid des tournois du grand schlem
GS ← πtid σname∈(0 FrenchOpen0 ,...,0 Wimbledon0 ) 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)
SB AD FC
Algèbre relationnelle
Janvier 2016
55 / 58
Janvier 2016
56 / 58
Les opérateurs de base et les autres
Les opérateurs de base et les autres
SB AD FC
Algèbre relationnelle
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))
SB AD FC
Algèbre relationnelle
Janvier 2016
57 / 58
Janvier 2016
58 / 58
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 )
La relation T = R ÷ S de schéma T (A1 , . . . , Ap ).
−
πA1 ,...,Ap
πA1 ,...,Ap
R
−
R
×
πA1 ,...,Ap
S
R
SB AD FC