Loading [MathJax]/jax/output/CommonHTML/jax.js
+ - 0:00:00
Notes for current slide
Notes for next slide
%current%

Bases de Données : Introduction à l'algèbre relationnelle

2023-09-15

Licence MIASHS et Mathématiques

Bases de Données

Équipe BD

%current%

Plan

  • Un peu d'histoire

  • Schémas et relations

  • Formalisation alternative

  • Premiers opérateurs du langage de manipulation de données

  • Opérations complémentaires : les jointures

  • Variations sur les jointures

%current%

Le modèle relationnel

%current%
  • Formulé par E. Codd en 1970

  • Fondé sur la théorie des relations (partie de la théorie naïve des ensembles)

  • Propose une solution pour

    • la modélisation et
    • l'interrogation de données
  • Facile à traduire/mettre en œuvre dans des langages réels exemple~: Structured Query Language (SQL)

%current%

Un peu de formalisation

Rappel sur la notion de relation (au sens classique)

%current%

Domaine

-Domaine : ensemble d'éléments

Exemples : entiers, flottants, chaines de caractères, date, ...

Les types d'un langage de programmation comme C, Java, ...

%current%

Remarque

  • Un domaine peut se définir

    • en extension (en donnant la liste de toutes les valeurs possibles) ou

    • en intention (en donnant une propriété caractéristique).

%current%

Produit cartésien

  • Le Produit cartésien : d'une liste de domaines D1,D2,,Dk, noté

D1×D2××Dk

est l'ensemble

{(t1,t2,,tk); tiDi pour i=1,,k}

Un élément t=(t1,t2,,tk)D1×D2××Dk est appelé (k) -uplet

%current%

Relations (classiques)

Une Relation R est un sous-ensemble de

D1×D2××Dk

D1,...,Dk sont des domaines

RD1×D2××Dk

%current%

Exemple

Deux domaines

D1={1,2,5}D2={2,4}

Un produit cartésien

D1×D2={(1,2),(1,4),(2,2),(2,4),(5,2),(5,4)}

Une relation

R={(1,2),(1,4),(5,2),(5,4)}

Une relation est un (sous-) ensemble (d'un produit cartésien)

%current%

Exemple

Deux domaines

D1={1,2,5}D2={2,4}

Un produit cartésien

D1×D2={(1,2),(1,4),(2,2),(2,4),(5,2),(5,4)}

Une relation

R={(1,2),(1,4),(5,2),(5,4)}

Une relation est un (sous-) ensemble (d'un produit cartésien)

On peut représenter R par le tableau :

X1 X2
1 2
1 4
5 2
5 4

Chaque ligne de la table correspond à un élément de la relation R

%current%

Relations (classiques)

Dans ce cours, toutes les relations ont un nombre fini d'éléments !

Cardinalité de la relation R: |R|

On appelle cardinalité d'une relation R, notée |R|, le nombre d'éléments de R.

Arité de la relation R

Soit RD1×D2××Dk, l'entier k est appelé arité de R.

On parle parfois aussi de degré d'une relation.

Une relation binaire est une relation d'arité 2

%current%

Schémas et relations

%current%

Relations et schémas

  • Une relation (au sens classique) peut se voir comme une table à deux dimensions :

  • chaque ligne correspond alors à un k-uplet (si la relation est d'arité k),

  • chaque élément d'une colonne est à valeur dans un domaine.

  • Un domaine peut apparaître plusieurs fois dans la définition d'une relation.
%current%

Relations et schémas

  • Une relation (au sens classique) peut se voir comme une table à deux dimensions :

  • chaque ligne correspond alors à un k-uplet (si la relation est d'arité k),

  • chaque élément d'une colonne est à valeur dans un domaine.

  • Un domaine peut apparaître plusieurs fois dans la définition d'une relation.

En BD relationnelle, on veut pouvoir donner un nom à chaque colonne

  • Attribut: nom/rôle de la colonne. Précise la sémantique de celle-ci.

Pas deux attributs identiques dans une même table

%current%

L'idée de nommer les colonnes plutôt que de les désigner par une position/un numéro se retrouve dans les sytèmes qui manipulent des données tabulaires (Pandas/Python, R, Spark, ...).

Schéma d'une relation

Le Schéma d'une relation R est la donnée des attributs et domaines de la relation

Le schéma peut se noter

R(A1:D1,A2:D2,,Ak:Dk)

Ai : attribut et Di : domaine.

%current%

Exemple

ville : ensemble de chaînes de caractères (noms de villes).

heure : ensemble de chaînes de caractères de la forme XYhZTX,Y,Z,T sont des chiffres

En notation ISO une heure s'écrit 'HH:MM:SS' (s' on oublie le fuseau horaire) 2023-09-15 10:53:35

h-dep dest h-arr prov
13h15 Lyon 15h15 Paris
13h22 Nantes 15h30 Paris

Schéma: Train(h-dep:heure, dest:ville , h-arr:heure , prov:ville)

Arité : 4, Cardinalité : 2

L'ordre (des lignes ou colonnes) n'a pas vraiment d'importance

%current%

Relations et schémas : formalisation alternative

%current%

Formalisation alternative

  • En BD, l'ordre des éléments et l'ordre des colonnes n'a pas d'importance (on désigne les membres d'un k-uplet par leur nom plutôt que par leur position/rang)

  • La définition formelle diffère donc de celle d'une relation classique

  • Soient {A1,...,Ak} un ensemble fini et D1,...,Dk suite de domaines.

Une relation R de schéma R(A1:D1,A2:D2,,Ak:Dk) est la donnée d'un ensemble d'éléments, noté R et de k fonctions A1:RD1, ..., Ak:RDk.

Pour tout tR et ik, on note t.Ai=Ai(t) l'image par Ai de t.

Un élément t de R est appelé tuple de la relation R

%current%

L'ensemble des valeurs t.A1,....,t.Ak associées à un tR.

on fixe un ordre arbitraire et on note t=(t.A1,....,t.Ak) un tuple.

  • A un tuple t de R correspond les k valeurs t.A1,,t.Ak

  • On notera aussi R le domaine R d'une relation R.

%current%

Relations et schémas : formalisation

Exemple

La relation {Train}(h-dep:heure, dest:ville , harr:heure , prov:ville)

hdep dest harr prov
13h15 Lyon 15h15 Paris
13h22 Nantes 15h30 Paris

est constituée de deux tuples e1, e2 avec :

  • e1.hdep='13h15',
  • e1.dest='Lyon',
  • e1.harr='15h15',
  • e1.prov='Paris'
%current%

Résumé informel

  • RELATION = TABLE A DEUX DIMENSIONS

  • (NOM DE) COLONNE = ATTRIBUT

  • EN-TÊTE DU TABLEAU = SCHEMA DE LA RELATION

  • LIGNE = TUPLE

  • ENSEMBLE DES LIGNES = CONTENU DE LA RELATION

%current%

LMD : Opérateurs,

%current%

Opérateurs de base

%current%

Liste des opérateurs

L'algèbre relationnelle est d'abord un Langage de Manipulation de Données (LMD)}.

  • Union:

  • Intersection:

  • Différence:

  • Projection: Π

  • Sélection: σ

  • Produit cartésien: ×

  • Renommage: ρ

s'appliquent à des relations pour produire d'autres relations (le résultat).

%current%

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=R1R2 est constituée des tuples appartenant à R1 ou à R2.
  • T=R1R2 est constituée des tuples appartenant à R1 et à R2.

  • Schémas de R1R2, R1R2 sont les mêmes que ceux de R1 et R2

%current%

Union et intersection

Exemple

Train 1

h-dep dest num
13h15 Lyon 213
13h29 Marseille 1024
14h15 Lyon 214

Train 2

h-dep dest num
13h39 Avignon 43
14h15 Lyon 214

Train 1 Train 2

h-dep dest num
13h15 Lyon 213
13h29 Marseille 1024
14h15 Lyon 214
13h39 Avignon 43

Train 1 Train 2

h-dep dest num
14h15 Lyon 214
%current%

Différence

  • La différence de deux relations R1 et R2 (de même schéma) est une relation T

  • de même schéma que R1 et R2

  • constituée des tuples appartenant à R1 et n'appartenant pas à R2.

  • On note T=R1R2.

Opération non commutative : R1R2R2R1 (en général).

%current%

Exemple

Train 1

h-dep dest num
13h15 Lyon 213
13h29 Marseille 1024
14h15 Lyon 214

Train 2

h-dep dest num
13h39 Avignon 43
14h15 Lyon 214

Train 1 Train 2

h-dep dest num
13h15 Lyon 213
13h29 Marseille 1024
%current%

Produit Cartésien

  • Soient:

    • R1 de schéma R1(A1,A2,...,Ak)
    • R2 de schéma R2(B1,B2,...,B)
    • avec AiBj, pour tout i=1,...,k, j=1,..,
  • Dans le contexte "classique" : R1×R2={(e1,e2):e1R1,e2R2}

  • R=R1×R2 de schéma R(A1,A2,...,Ak,B1,B2,...,B). Le schéma de R est l'union des schémas de R1 et R2

  • En algèbre relationnelle, cette opération est commutative ( R1×R2=R2×R1 ) et associative

%current%

Produit cartésien : définition formelle

R=R1×R2 est la relation de schéma R(A1,A2,...,Ak,B1,B2,...,B) vérifiant~:

  • Pour tout tR, il existe t1R1, t2R2 tels que :

t.A1=t1.A1,,t.Ak=t1.Ak,t.B1=t2.B1,,t.B=t2.B

  • Réciproquement, pour tout t1R1, t2R2 , il existe tR tels que :

t.A1=t1.A1,,t.Ak=t1.Ak,t.B1=t2.B1,,t.B=t2.B

%current%

Produit cartésien : exemple

Train 1 × Train 2

h-dep(1) dest(1) num(1) h-dep(2) dest(2) num(2)
13h15 Lyon 213 13h39 Avignon 43
13h15 Lyon 213 14h15 Lyon 214
13h29 Marseille 1024 13h39 Avignon 43
13h29 Marseille 1024 14h15 Lyon 214
14h15 Lyon 214 13h39 Avignon 43
14h15 Lyon 214 14h15 Lyon 214
%current%

Projection ( π )

  • La projection d'une relation R de schéma R(A1,,Ak) sur les attributs Ai1,,Aip, i1,...,ip{1,...,k}, 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=πAi1,,Aip(R).

  • Définition formelle :

sStR n{1,,p} s.Ain=t.Ain

Élimination des doublons car une projection peut produire plusieurs fois le même tuple.

%current%

Projection : Exemple

Πdest, num(Train)

dest num
Lyon 213
Marseille 1024
Lyon 214
%current%

Sélection ( σ )

  • La sélection d'une relation R par une condition C est une relation S

    • de même schéma que R

    • dont les tuples sont ceux de R qui satisfont la condition C.

  • 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)

    • on peut utiliser des opérateurs arithmétiques de comparaison ( =,,,,<,> ) ainsi que des connecteurs logiques ( ¬,, )..

%current%

Sélection : Exemple

σdest='Lyon'Train 1

h-dep dest num
13h15 Lyon 213
14h15 Lyon 214

σdest='Lyon'hdep>14hTrain 1

h-dep dest num
14h15 Lyon 214
%current%

Renommage

  • Soit R de schéma R(A1,,Ak), le renommage d'un attribut Ai, ik, en B est une relation S :

  • de même contenu

  • de schéma S(A1,...,Ai1,B,Ai+1,...,Ak)

  • On le note S=ρAiB(R)

%current%

Exemple

Train :

h-dep dest num
13h15 Lyon 213
13h29 Marseille 1024
14h15 Lyon 214

ρnumnumero(Train)

h-dep dest numero
13h15 Lyon 213
13h29 Marseille 1024
14h15 Lyon 214
%current%

Utilité Va permettre d'étendre certains opérateurs pour des relations de schémas non-disjoints

%current%

Résumé

Algèbre relationnelle

  • opérations ensemblistes classiques.

  • Projection : élimine des colonnes

  • Sélection : élimine des lignes

Pour interroger une BD, on compose ces opérateurs :

Exemple

πnum(σdest=Lyon(Train))

Numéro des trains dont la ville de destination est 'Lyon'.

%current%

Opérations complémentaires : les jointures

%current%

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

%current%

Jointure

La jointure T=R1CR2 de deux relations R1 et R2 de schémas disjoints sous la condition C est la relation T:

  • de schéma la concaténation des schémas de R1 et R2

  • formée des tuples du produit cartésien R1×R2 qui satisfont la condition C

Règles de formation de la condition de jointure : comme pour la sélection

Définition formelle~:

R1CR2=σC(R1×R2)

%current%

Exemple

TrDep

hdep dest numdep
13h15 Lyon 213
13h29 Marseille 1024

TrArr

harr prov numarr
13h39 Avignon 43
15h15 Paris 213

TrDepnumdep>numarTrArr

hdep dest numdep harr prov numarr
13h15 Lyon 213 13h39 Avignon 43
13h29 Marseille 1024 13h39 Avignon 43
13h29 Marseille 1024 15h15 Paris 213
%current%

Équi-jointure, θ-jointure

Équi-jointure : Jointure avec égalité entre attributs de types comparables

TrDepnumdep=numarrTrArr

hdep dest numdep harr prov numarr
13h15 Lyon 213 15h15 Paris 213
%current%

Équi-jointure, θ-jointure

Équi-jointure : Jointure avec égalité entre attributs de types comparables

TrDepnumdep=numarrTrArr

hdep dest numdep harr prov numarr
13h15 Lyon 213 15h15 Paris 213

θ-jointure : condition de jointure entre attributs de types comparables et avec un opérateur différent de l'égalité, c'est-à-dire dans {<,>,,,}.

TrDepnumdep>numarrTrArr

%current%

Jointure naturelle

C'est une équi-jointure concernant les attributs communs de deux relations

On ne garde dans le résultat qu'une copie des attributs communs

On considère

  • R1 d'attributs A1,..,Ak,B1,...,Bh

  • R2 d'attributs A1,..,Ak,Bh+1,...,B

  • A1,...,Ak : attributs communs et {B1,...,Bh}{Bh+1,...,B}=

  • Soit A1,....,Ak tels que {A1,...,Ak}{A1,....,Ak}=

%current%

Jointure naturelle

Considérons S d'attributs A1,..,Ak,Bh+1,...,Bl définie par :

S=ρA1A1(ρA2A2((ρAkAk(R2)))

La jointure naturelle sur deux relations R1 et R2 est la relation

  • d'attributs A1,..,Ak,B1,...,Bh,Bh+1,...,B

  • définie par :

πA1,..,Ak,B1,...,Bh,Bh+1,...,B(R1CS)

C est (A1=A1)(A2=A2)(Ak=Ak)

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 cette opération : R1R2.

%current%

Jointure naturelle

Considérons S d'attributs A1,..,Ak,Bh+1,...,Bl définie par :

S=ρA1A1(ρA2A2((ρAkAk(R2)))

La jointure naturelle sur deux relations R1 et R2 est la relation

  • d'attributs A1,..,Ak,B1,...,Bh,Bh+1,...,B

  • définie par :

πA1,..,Ak,B1,...,Bh,Bh+1,...,B(R1CS)

C est (A1=A1)(A2=A2)(Ak=Ak)

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 cette opération : R1R2.

Pour éviter le renommage, on peut décider de préfixer les noms des attributs par ceux de la relation. La condition C devient :

(R1.A1=R2.A1)(R1.Ak=R2.Ak)

Inline footnotes text.

%current%

Exemple de Jointure naturelle

TrDep

hdep dest num
13h15 Lyon 213
13h29 Marseille 1024

TrArr

harr prov num
13h39 Avignon 43
15h15 Paris 213

TrDepTrArr

hdep dest num harr prov
13h15 Lyon 213 15h15 Paris
%current%

Exemples de requêtes

Base constituée des trois tables suivantes:

fournisseurs(fno, nom, adresse, ville)

produits(pno, design, prix, poids, couleur)

commandes(cno, fno, pno, qte)

%current%

Exemples de requêtes (suite)

  • déterminer les numéros des fournisseurs ayant comme nom "Durand"

πfno(σnom='Durand'(fournisseurs))

  • déterminer les références, prix et quantités des produits commandés à plus de 10 exemplaires.

πpno,prix,qte(σqte>10(commandesproduits))

%current%

Encore des opérations...

%current%

Jointure externe

  • Perte d'information dans jointure naturelle : les tuples ne satisfaisant pas la condition (non appariés) 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

  • On note cette opération entre deux relations R et S :

R+S

%current%

Jointure externe (exemple)

TrDep

hdep dest num
13h15 Lyon 213
13h29 Marseille 1024

TrArr

harr prov num
13h39 Avignon 43
15h15 Paris 213

TrDep+TrArr

hdep dest num harr prov
13h15 Lyon 213 15h15 Paris
13h29 Marseille 1024 - -
- - 43 13h39 Avignon
%current%

Division

La division ou quotient

  • d'une relation R de schéma R(A1,A2,,Ak)

  • par une relation S de schéma S(Ap+1,,Ak)

est la relation T de schéma T(A1,,Ap) formée des tuples qui complétés par chaque tuple de S donnent un tuple de R.

Autrement dit

tT(A1,,Ap)sS(Ap+1,,Ak)rR{t.A1=r.A1,,t.Ap=r.Aps.Ap+1=r.Ap+1,,s.Ak=r.Ak

On note T=R÷S

%current%

Division (exmple)

Voyage : contient pour chaque numéro de client la ville de départ et d'arrivée des voyages qu'il a effectué

numclient vdep varr
1 Paris Marseille
3 Marseille Lyon
1 Paris Nantes
5 Marseille Avignon
4 Paris Nantes
3 Paris Marseille
2 Caen Le Mans
3 Paris Nantes

Villes contient des couples villes de départ/villes d'arrivée

vdep varr
Paris Marseille
Paris Nantes
%current%

Division (exemple, suite)

Voyage÷Villes

numclient
1
3

Résultat : numéros des clients ayant effectué tous les voyages entre les villes de la table Villes (i.e. à la fois un Paris-Marseille et un Paris-Nantes.)

%current%

Interdéfinissabilité des opérateurs

  • L'union, la différence, le produit cartésien, la sélection et la projection et le renommage 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 : RCSσC(R×S)
  • Pour l'intersection : AB=AB((BA)(AB))
%current%

The End

%current%

Bases de Données : Introduction à l'algèbre relationnelle

2023-09-15

Licence MIASHS et Mathématiques

Bases de Données

Équipe BD

%current%
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow