La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Algèbre relationnelle Dominique Laurent Université de Tours

Présentations similaires


Présentation au sujet: "Algèbre relationnelle Dominique Laurent Université de Tours"— Transcription de la présentation:

1 Algèbre relationnelle Dominique Laurent Université de Tours

2 Eléments de base zUnivers : ensemble fini d attributs, U zAttribut : associé à un ensemble de valeurs appelé domaine, dom(A) zSchéma relationnel : sous-ensemble non vide de l univers zn-uplet sur le schéma R : application de R dans l union des domaines des attributs de R

3 Eléments de base (exemple) zU = {num_et, nom_et, adr_et, num_p, nom_p, adr_p, num_c, nom_c} zR= {num_et, num_c} zt : R dom(num_et) dom(num_c) num_et n1 num_c n2 zNotation : t = (n1, n2)

4 Eléments de base (suite) zRelation sur R : ensemble fini de n- uplets définis sur R zBase de données sur U : ensemble de relations définies sur des schémas de U zRemarque : plusieurs relations d une même base peuvent avoir le même schéma

5 Exemple zBD = {etud, prof, cours, inscrit} zAvec : yetud[num_et, nom_et, adr_et] yprof[num_p, nom_p, adr_p] ycours[num_c, nom_c, num_p] yinscrit[num_et, num_c] zRemarque : on peut ajouter yanc_etud[num_et, nom_et, adr_et]

6 Algèbre relationnelle zCombine les relations pour exprimer les requêtes zFormalisme rigoureux dont le pouvoir d expression est « fort » : ~ logique du 1er ordre zPropriétés formelles pour optimiser le calcul des réponses

7 Opérations de base zOpérations ensemblistes : yunion, intersection, différence zOpérations relationnelles : yprojection ysélection yjointure yrenommage

8 Projection zr[R] et X sous-ensemble de R zProjection de r sur X : yrelation définie sur X contenant les restrictions sur X des n-uplets de r ynotation : x (r) y x (r) = {u | t dans r tel que u=t.R} zRemarque : attention à l écriture y x (r) = {t.R | t dans r}

9 Projection - Exemple zetud[num_et, nom_et, adr_et] zX = nom_et, adr_et z x (etud) yliste des noms et adresses des étudiants zAttention : si Y = nom_et, adr_p y y (etud) n est pas défini

10 Sélection zr[R] relation définie sur R zC condition de sélection de la forme yC = (A comp a), ou C = (A comp B) yC combinaison par les connecteurs logiques zSélection de r selon C yrelation définie sur R ynotation : C (r) y C (r) est l ensemble des n-uplets de r qui satisfont C

11 Sélection - Exemple zetud[num_et, nom_et, adr_et] zC = (adr_et = Casa ou num_et > 100) z C (etud) yliste des étudiants dont l adresse est Casa ou dont le numéro est supérieur à 100 z nom_et ( C (etud)) yliste des noms de ces étudiants zAttention : si C = (nom_p = nom_et) y C (etud) n est pas défini

12 Jointure zr[R] et s[S] deux relations zJointure de r par s yrelation définie sur R S ynotation : r s yr s = {t | t.R r et t.S s} zRemarques yune jointure est toujours définie yopération coûteuse à calculer

13 Jointure - Exemple zetud[num_et, nom_et, adr_et] inscrit[num_et, num_c] zetud inscrit ydéfinie sur num_et, nom_et, adr_et, num_c yliste des inscriptions des étudiants z nom_et,num_c (etud inscrit) yliste des noms des étudiants et des numéros des cours auxquels ils sont inscrits

14 Jointure - Exemple (suite) zetud prof ydéfinie? Sur quel schéma? ySignification intuitive? zetud etud ydéfinie? Sur quel schéma? ySignification intuitive?

15 Jointure - Propriétés z R (r s) = r ? z R (r s) S (r s) = r s ? zr[RS], R (r) S (r) = r ? z C (r s) = C (r) s ?

16 Renommage zr[R], A attribut de R, A1 nouveau nom pour A zRenommage de A en A1 dans r yrelation définie sur (R - {A}) {A1} ynotation : A1 A (r) y A1 A (r) contient les mêmes n-uplets que r zUtilisation : avoir deux versions distinctes d une même relation

17 Renommage - Exemple zNuméros des étudiants inscrits à plus d un cours ? yinscrit[num_et, num_c] (1ère version) y n num_c (inscrit) (2ème version) y n num_c (inscrit) inscrit (jointure) y num_c n ( n num_c (inscrit) inscrit) (sélection) z num_et ( num_c n ( n num_c (inscrit) inscrit))

18 Opérations ensemblistes zr[R] et s[R] définies sur le même schéma R zr s, r s, r - s ydéfinies sur R ysémantique habituelle zRemarque : r s = r s

19 Opérations ensemblistes - Exemples zListe de tous les noms, prof et étudiants y nom_p (prof) nom_et (etud) non défini y n nom_p ( nom_p (prof)) n nom_et ( nom_et (etud)) zNuméros des étudiants inscrits à un seul cours y num_et (inscrit) - num_et ( num_c n ( n num_c (inscrit) inscrit))

20 Opérations ensemblistes - Propriétés zSélection y C (r s) = C (r) C (s) ? zProjection y x (r s) = x (r) x (s) ? y x (r - s) = x (r) - x (s) ? zJointure y(r r) s = (r s) (r s) ?

21 Extension : quotient relationnel zListe des numéros des étudiants inscrits à tous les cours ? zn est dans la réponse si pour tout n_c dans cours, (n, n_c) est dans inscrit zD où la formule pour la réponse : y{n | ( (n_c,x) cours), (n, n_c) inscrit} zEcriture algébrique : yinscrit num_c (cours)

22 Extension : quotient relationnel zr[R] et s[S] telles que S R zQuotient de r par s yrelation définie sur R - S ynotation : r s yr s = {t | ( u s)( v r)(v.R=t et v.S=u)} zPropriété : yr s = R-S (r) - R-S (( R-S (r) s) - r)

23 Algèbre relationnelle et SQL zProjection, sélection, jointure : ySELECT yFROM yWHERE AND zRenommage : yau niveau des attributs yau niveau des relations

24 Algèbre relationnelle et SQL - Exemples z nom_et,adr_et ( num_c 123 (etud inscrit)) ySELECT nom_et, adr_et yFROM etud, inscrit yWHERE num_c 123 AND etud.num_et = inscrit.num_et

25 Algèbre relationnelle et SQL - Exemples z num_et ( num_c n ( n num_c (inscrit) inscrit)) ySELECT inscrit.num_et yFROM inscrit, inscrit inscr yWHERE inscrit.num_c inscr.num_c AND inscrit.num_et = inscr.num_et

26 Algèbre relationnelle et SQL zOpérations ensemblistes yunion, intersect, minus yentre deux clauses SELECT FROM WHERE zListe des noms et adresses des étudiants inscrits seulement au cours de numéro 123 yAlgèbre relationnelle ? ySQL ?

27 Quotient relationnel et SQL zr[A, B], s[B] zr s défini sur A par ySELECT distinct A FROM r WHERE NOT EXISTS ((SELECT r.A, s.B FROM r r, s WHERE r.A = r.A) MINUS (SELECT * FROM r))

28 Quotient relationnel et SQL zUtilisation des vues yCREATE VIEW AS ( ) zListe des noms des étudiants habitant Casa et inscrits à tous les cours assurés par un prof habitant Tours yCréer une vue pour chaque relation r et s yAppliquer la requête précédente

29 Fonctions en SQL zFonctions classiques : ymin, max, avg, count, sum zExemple : inscrit[num_et, num_c] yNombre de cours où l etudiant de num 123 est inscrit ySELECT count(distinct num_c) FROM inscrit WHERE num_et = 123

30 Fonctions en SQL et groupements zGénéraliser la requête précédente pour chaque étudiant zUtilisation de GROUP BY ySELECT num_et, count(distinct num_c) FROM inscrit GROUP BY num_et

31 Fonctions en SQL et groupements - Exemple zresult[num_et, num_c, note] zListe des numéros des étudiants inscrits à plus de 3 cours, avec leur moyenne générale ySELECT num_et, avg(note) FROM result GROUP BY num_et HAVING count(distinct num_c) > 3


Télécharger ppt "Algèbre relationnelle Dominique Laurent Université de Tours"

Présentations similaires


Annonces Google