31
Algèbre relationnelle Dominique Laurent Université de Tours [email protected]

Algèbre relationnelle

  • Upload
    mariel

  • View
    25

  • Download
    0

Embed Size (px)

DESCRIPTION

Algèbre relationnelle. Dominique Laurent Université de Tours [email protected]. Eléments de base. Univers : ensemble fini d ’attributs, U Attribut : associé à un ensemble de valeurs appelé domaine, dom(A) Schéma relationnel : sous-ensemble non vide de l ’univers - PowerPoint PPT Presentation

Citation preview

Page 1: Algèbre relationnelle

Algèbre relationnelle

Dominique LaurentUniversité de [email protected]

Page 2: Algèbre relationnelle

Eléments de base

Univers : ensemble fini d ’attributs, UAttribut : associé à un ensemble de

valeurs appelé domaine, dom(A)Schéma relationnel : sous-

ensemble non vide de l ’universn-uplet sur le schéma R :

application de R dans l ’union des domaines des attributs de R

Page 3: Algèbre relationnelle

Eléments de base (exemple)

U = {num_et, nom_et, adr_et,num_p, nom_p, adr_p,num_c, nom_c}

R= {num_et, num_c}t : R dom(num_et) dom(num_c)

num_et n1num_c n2

Notation : t = (n1, n2)

Page 4: Algèbre relationnelle

Eléments de base (suite)

Relation sur R : ensemble fini de n-uplets définis sur R

Base de données sur U : ensemble de relations définies sur des schémas de U

Remarque : plusieurs relations d ’une même base peuvent avoir le même schéma

Page 5: Algèbre relationnelle

Exemple

BD = {etud, prof, cours, inscrit}Avec :

etud[num_et, nom_et, adr_et] prof[num_p, nom_p, adr_p] cours[num_c, nom_c, num_p] inscrit[num_et, num_c]

Remarque : on peut ajouter anc_etud[num_et, nom_et, adr_et]

Page 6: Algèbre relationnelle

Algèbre relationnelle

Combine les relations pour exprimer les requêtes

Formalisme rigoureux dont le pouvoir d ’expression est « fort » : ~ logique du 1er ordre

Propriétés formelles pour optimiser le calcul des réponses

Page 7: Algèbre relationnelle

Opérations de base

Opérations ensemblistes : union, intersection, différence

Opérations relationnelles : projection sélection jointure renommage

Page 8: Algèbre relationnelle

Projection

r[R] et X sous-ensemble de RProjection de r sur X :

relation définie sur X contenant les restrictions sur X des n-uplets de r

notation : x(r)

x(r) = {u | t dans r tel que u=t.R}

Remarque : attention à l ’écriture x(r) = {t.R | t dans r}

Page 9: Algèbre relationnelle

Projection - Exemple

etud[num_et, nom_et, adr_et]X = nom_et, adr_etx(etud)

liste des noms et adresses des étudiants

Attention : si Y = nom_et, adr_p y(etud) n ’est pas défini

Page 10: Algèbre relationnelle

Sélection

r[R] relation définie sur RC condition de sélection de la forme

C = (A comp a), ou C = (A comp B) C combinaison par les connecteurs

logiquesSélection de r selon C

relation définie sur R notation : C(r)

C(r) est l ’ensemble des n-uplets de r qui satisfont C

Page 11: Algèbre relationnelle

Sélection - Exemple

etud[num_et, nom_et, adr_et]C = (adr_et = Casa ou num_et > 100)C(etud)

liste des étudiants dont l ’adresse est Casa ou dont le numéro est supérieur à 100

nom_et(C(etud)) liste des noms de ces étudiants

Attention : si C = (nom_p = nom_et) C(etud) n ’est pas défini

Page 12: Algèbre relationnelle

Jointure

r[R] et s[S] deux relationsJointure de r par s

relation définie sur R S notation : r s r s = {t | t.R r et t.S s}

Remarques une jointure est toujours définie opération coûteuse à calculer

Page 13: Algèbre relationnelle

Jointure - Exemple

etud[num_et, nom_et, adr_et] inscrit[num_et, num_c]

etud inscrit définie sur num_et, nom_et, adr_et, num_c liste des inscriptions des étudiants

nom_et,num_c(etud inscrit) liste des noms des étudiants et des numéros

des cours auxquels ils sont inscrits

Page 14: Algèbre relationnelle

Jointure - Exemple (suite)

etud prof définie? Sur quel schéma? Signification intuitive?

etud etud définie? Sur quel schéma? Signification intuitive?

Page 15: Algèbre relationnelle

Jointure - Propriétés

R(r s) = r ?

R(r s) S(r s) = r s ?

r[RS], R(r) S(r) = r ?

C(r s) = C(r) s ?

Page 16: Algèbre relationnelle

Renommage

r[R] , A attribut de R , A1 nouveau nom pour A

Renommage de A en A1 dans r relation définie sur (R - {A}) {A1} notation : A1A(r)

A1A(r) contient les mêmes n-uplets que r

Utilisation : avoir deux versions distinctes d ’une même relation

Page 17: Algèbre relationnelle

Renommage - Exemple

Numéros des étudiants inscrits à plus d ’un cours ? inscrit[num_et, num_c] (1ère

version)

nnum_c(inscrit) (2ème version)

nnum_c(inscrit) inscrit (jointure)

num_cn(nnum_c(inscrit) inscrit)(sélection)

num_et(num_cn(nnum_c(inscrit) inscrit))

Page 18: Algèbre relationnelle

Opérations ensemblistes

r[R] et s[R] définies sur le même schéma R

r s , r s , r - s définies sur R sémantique habituelle

Remarque : r s = r s

Page 19: Algèbre relationnelle

Opérations ensemblistes - Exemples

Liste de tous les noms, prof et étudiants nom_p(prof) nom_et(etud) non défini

nnom_p(nom_p(prof)) nnom_et(nom_et(etud))

Numéros des étudiants inscrits à un seul cours num_et(inscrit) -

num_et(num_cn(nnum_c(inscrit) inscrit))

Page 20: Algèbre relationnelle

Opérations ensemblistes - Propriétés

Sélection C(r s) = C(r) C(s) ?

Projection x(r s) = x(r) x(s) ?

x(r s) = x(r) x(s) ?

x(r - s) = x(r) - x(s) ?

Jointure (r r’) s = (r s) (r’ s) ?

Page 21: Algèbre relationnelle

Extension : quotient relationnel

Liste des numéros des étudiants inscrits à tous les cours ?

n est dans la réponse si pour tout n_c dans cours, (n, n_c) est dans inscrit

D ’où la formule pour la réponse : {n | ( (n_c,x) cours), (n, n_c) inscrit}

Ecriture algébrique : inscrit num_c(cours)

Page 22: Algèbre relationnelle

Extension : quotient relationnel

r[R] et s[S] telles que S RQuotient de r par s

relation définie sur R - S notation : r s r s = {t | (us)(v r)(v.R=t et v.S=u)}

Propriété : r s = R-S(r) - R-S ((R-S(r) s) - r)

Page 23: Algèbre relationnelle

Algèbre relationnelle et SQL

Projection, sélection, jointure : SELECT <attributs de la projection> FROM <relations de l ’expression> WHERE <condition de sélection>

AND<conditions de jointure>Renommage :

au niveau des attributs au niveau des relations

Page 24: Algèbre relationnelle

Algèbre relationnelle et SQL - Exemples

nom_et,adr_et(num_c123(etud inscrit))

SELECT nom_et, adr_et FROM etud, inscrit WHERE num_c 123

AND etud.num_et = inscrit.num_et

Page 25: Algèbre relationnelle

Algèbre relationnelle et SQL - Exemples

num_et(num_cn(nnum_c(inscrit) inscrit))

SELECT inscrit.num_et FROM inscrit, inscrit inscr WHERE inscrit.num_c inscr.num_c

AND inscrit.num_et = inscr.num_et

Page 26: Algèbre relationnelle

Algèbre relationnelle et SQL

Opérations ensemblistes union, intersect, minus entre deux clauses SELECT FROM WHERE

Liste des noms et adresses des étudiants inscrits seulement au cours de numéro 123 Algèbre relationnelle ? SQL ?

Page 27: Algèbre relationnelle

Quotient relationnel et SQL

r[A, B] , s[B]r s défini sur A par

SELECT distinct A FROM rWHERE NOT EXISTS

((SELECT r’.A, s.B FROM r r’ , s

WHERE r.A = r’.A)MINUS

(SELECT * FROM r))

Page 28: Algèbre relationnelle

Quotient relationnel et SQL

Utilisation des vues CREATE VIEW <nom_de_vue> AS

(<requête SQL>)

Liste des noms des étudiants habitant Casa et inscrits à tous les cours assurés par un prof habitant Tours Créer une vue pour chaque relation r et s Appliquer la requête précédente

Page 29: Algèbre relationnelle

Fonctions en SQL

Fonctions classiques : min, max, avg, count, sum

Exemple : inscrit[num_et, num_c] Nombre de cours où l ’etudiant de num

123 est inscrit SELECT count(distinct num_c)

FROM inscritWHERE num_et = 123

Page 30: Algèbre relationnelle

Fonctions en SQL et groupements

Généraliser la requête précédente pour chaque étudiant

Utilisation de GROUP BY SELECT num_et, count(distinct num_c)

FROM inscritGROUP BY num_et

Page 31: Algèbre relationnelle

Fonctions en SQL et groupements - Exemple

result[num_et, num_c, note]Liste des numéros des étudiants

inscrits à plus de 3 cours, avec leur moyenne générale

SELECT num_et, avg(note)FROM resultGROUP BY num_etHAVING count(distinct num_c) > 3