Modèle-Représentation de la Connaissance relationnelle (M-RCr)
Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet
Transcript of Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet
![Page 1: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/1.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Bases de données (3)Algèbre relationnelle
Stéphane Gonnord, Laurent Jouhet
Lycée du parc - Lyon
![Page 2: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/2.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Plan
SQL vs Maths
Projections et sélections
Jointures
Agrégation
Autres opérateurs
![Page 3: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/3.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Vous comprenez ça ?
γMAX(c)(
depγCOMPTAGE :c(departements onJCD
(σpop≥104communes
)))
SELECT max(c)FROM
(SELECT dep, COUNT(*) AS cFROM departements JOIN communesON departements.id=communes.depWHERE pop>=10000GROUP BY dep)
Quel est le nombre maximal de communes de plus de 10000 habitantspar département ?
![Page 4: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/4.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Vous comprenez ça ?
γMAX(c)(
depγCOMPTAGE :c(departements onJCD
(σpop≥104communes
)))SELECT max(c)FROM
(SELECT dep, COUNT(*) AS cFROM departements JOIN communesON departements.id=communes.depWHERE pop>=10000GROUP BY dep)
Quel est le nombre maximal de communes de plus de 10000 habitantspar département ?
![Page 5: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/5.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Vous comprenez ça ?
γMAX(c)(
depγCOMPTAGE :c(departements onJCD
(σpop≥104communes
)))SELECT max(c)FROM
(SELECT dep, COUNT(*) AS cFROM departements JOIN communesON departements.id=communes.depWHERE pop>=10000GROUP BY dep)
Quel est le nombre maximal de communes de plus de 10000 habitantspar département ?
![Page 6: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/6.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
L’objet de l’algèbre relationnelle
• Manipuler des relations (ensembles de tuples typés).
• Des opérateurs pour construire des relations à partir d’autresrelations.
• Binaires : union, intersection, ... produit, jointure (et division).
• Unaires : projections, sélections.
• Des opérateurs d’agrégation.
![Page 7: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/7.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
ExemplesTrois relations différentes
communesid dep nom pop
. . . . . . . . . . . .69023 69 Lyon 484344
. . . . . . . . . . . .2B050 2B Calvi 5394
. . . . . . . . . . . .
departementsid reg nom
. . . . . . . . .69 82 Rhône. . . . . . . . .2B 94 Haute-Corse. . . . . . . . .
regionsid nom
. . . . . .82 Rhône-Alpes. . . . . .94 Corse. . . . . .
![Page 8: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/8.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
ExemplesEt trois de plus
eleveside nom prenom
0 Lions Jacques-Louis1 Laurent Jean
. . . . . . . . .
profsidp nom prenom
0 Théron Pierre1 Brun Jules
. . . . . . . . .
collesprof eleve semaine note
2 8 1 161 0 6 19
. . . . . . . . . . . .
![Page 9: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/9.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Projections
• Permet de choisir des colonnes
• Analogue de SELECT, attention !
• πA1,...,Ak R ou πA1,...,Ak (R) : on ne prend que les attributs A1, ...,Ak
• Exemple :• En français : «Donner les élèves (identifiants) et les notes pour
toutes les colles.»• En SQL : SELECT eleve,note FROM colles.• En algèbre relationnelle : πeleve,note(colles).
collesprof eleve semaine note
2 8 1 161 0 6 19
. . . . . . . . . . . .
→
πeleve,note(colles)eleve note
8 160 19
. . . . . .
![Page 10: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/10.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Projections
• Permet de choisir des colonnes
• Analogue de SELECT, attention !
• πA1,...,Ak R ou πA1,...,Ak (R) : on ne prend que les attributs A1, ...,Ak
• Exemple :• En français : «Donner les élèves (identifiants) et les notes pour
toutes les colles.»• En SQL : SELECT eleve,note FROM colles.• En algèbre relationnelle : πeleve,note(colles).
collesprof eleve semaine note
2 8 1 161 0 6 19
. . . . . . . . . . . .
→
πeleve,note(colles)eleve note
8 160 19
. . . . . .
![Page 11: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/11.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Sélections/restrictions
• Permet de choisir des lignes
• Conditions de type WHERE ...
• σCR ou σC(R), avec C la condition (formule logique portant surles attributs)
• Exemple :• En français : «Quelles sont les villes de plus de 10000
habitants ?»• En SQL : SELECT * FROM communes WHERE pop>=10000• En algèbre relationnelle : σpop≥10000(communes).
communesid dep nom pop
69023 69 Lyon 4843442B050 2B Calvi 5394
. . . . . . . . . . . .
σpop≥10000(communes)id dep nom pop
69023 69 Lyon 48434479049 79 Bressuire 18615
. . . . . . . . . . . .
![Page 12: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/12.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Sélections/restrictions
• Permet de choisir des lignes
• Conditions de type WHERE ...
• σCR ou σC(R), avec C la condition (formule logique portant surles attributs)
• Exemple :• En français : «Quelles sont les villes de plus de 10000
habitants ?»• En SQL : SELECT * FROM communes WHERE pop>=10000• En algèbre relationnelle : σpop≥10000(communes).
communesid dep nom pop
69023 69 Lyon 4843442B050 2B Calvi 5394
. . . . . . . . . . . .
σpop≥10000(communes)id dep nom pop
69023 69 Lyon 48434479049 79 Bressuire 18615
. . . . . . . . . . . .
![Page 13: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/13.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
On peut composer !
• Exemple : nom des villes de plus de 100000 habitants : traduireen SQL et algèbre relationnelle.
• SELECT nom FROM communes WHERE pop>=100000
• πnomσpop≥105(communes).
ExerciceEst-ce que ça commute ?
πnom(σpop≥105(communes)) =?σpop≥105(πnom(communes))
πeleve,note(σnote≥19(colles)) =?σnote≥19(πeleve,note(colles))
![Page 14: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/14.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
On peut composer !
• Exemple : nom des villes de plus de 100000 habitants : traduireen SQL et algèbre relationnelle.
• SELECT nom FROM communes WHERE pop>=100000
• πnomσpop≥105(communes).
ExerciceEst-ce que ça commute ?
πnom(σpop≥105(communes)) =?σpop≥105(πnom(communes))
πeleve,note(σnote≥19(colles)) =?σnote≥19(πeleve,note(colles))
![Page 15: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/15.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
On peut composer !
• Exemple : nom des villes de plus de 100000 habitants : traduireen SQL et algèbre relationnelle.
• SELECT nom FROM communes WHERE pop>=100000
• πnomσpop≥105(communes).
ExerciceEst-ce que ça commute ?
πnom(σpop≥105(communes)) =?σpop≥105(πnom(communes))
πeleve,note(σnote≥19(colles)) =?σnote≥19(πeleve,note(colles))
![Page 16: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/16.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Produit : beurk
• Deux tables :communesnom dep
Lyon 69Calvi 2BCorte 2B
departementsid nom
69 Rhône2B Haute-Corse
• Et leur produit :communes×departements
nom dep id nom
Lyon 69 69 RhôneLyon 69 2B Haute-CorseCalve 2B 69 RhôneCalvi 2B 2B Haute-CorseCorte 2B 69 RhôneCorte 2B 2B Haute-Corse
![Page 17: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/17.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Produit : beurk
• Deux tables :communesnom dep
Lyon 69Calvi 2BCorte 2B
departementsid nom
69 Rhône2B Haute-Corse
• Et leur produit :communes×departements
nom dep id nom
Lyon 69 69 RhôneLyon 69 2B Haute-CorseCalve 2B 69 RhôneCalvi 2B 2B Haute-CorseCorte 2B 69 RhôneCorte 2B 2B Haute-Corse
![Page 18: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/18.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Jointure : produit avec sélection
• Formellement :R1on
CR2 = σC(R1×R2)
• t1 JOIN t2 ON (C) et t1,t2 WHERE (C) sont proches... maisdifférentes ? (Boîte noire) !
• Par exemple : C = (dep = id)
communes onCdepartements
nom dep id nom
Lyon 69 69 RhôneCalvi 2B 2B Haute-CorseCorte 2B 2B Haute-Corse
![Page 19: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/19.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Jointure : produit avec sélection
• Formellement :R1on
CR2 = σC(R1×R2)
• t1 JOIN t2 ON (C) et t1,t2 WHERE (C) sont proches... maisdifférentes ? (Boîte noire) !
• Par exemple : C = (dep = id)
communes onCdepartements
nom dep id nom
Lyon 69 69 RhôneCalvi 2B 2B Haute-CorseCorte 2B 2B Haute-Corse
![Page 20: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/20.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Jointure : produit avec sélection
• Formellement :R1on
CR2 = σC(R1×R2)
• t1 JOIN t2 ON (C) et t1,t2 WHERE (C) sont proches... maisdifférentes ? (Boîte noire) !
• Par exemple : C = (dep = id)
communes onCdepartements
nom dep id nom
Lyon 69 69 RhôneCalvi 2B 2B Haute-CorseCorte 2B 2B Haute-Corse
![Page 21: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/21.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Fonctions d’agrégation
• But : regrouper des lignes, et évaluer une fonction sur cesregroupements.
• Syntaxe strange :
A1,...,Ak γf1(B1),...,fi(Bi)table
• « Regroupe selon les attributs Ai , et calcule les valeurs fi sur lesattributs Bi »
• SQL :
SELECT A1,..,Ak,f1(B1),...,fi(Bi)FROM tableGROUP BY A1,...,Ak
• Attention, les autres champs sont perdus ! En particulier lors ducalcul du maximum !
![Page 22: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/22.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Fonctions d’agrégation
• But : regrouper des lignes, et évaluer une fonction sur cesregroupements.
• Syntaxe strange :
A1,...,Ak γf1(B1),...,fi(Bi)table
• « Regroupe selon les attributs Ai , et calcule les valeurs fi sur lesattributs Bi »
• SQL :
SELECT A1,..,Ak,f1(B1),...,fi(Bi)FROM tableGROUP BY A1,...,Ak
• Attention, les autres champs sont perdus ! En particulier lors ducalcul du maximum !
![Page 23: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/23.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Fonctions d’agrégation
• But : regrouper des lignes, et évaluer une fonction sur cesregroupements.
• Syntaxe strange :
A1,...,Ak γf1(B1),...,fi(Bi)table
• « Regroupe selon les attributs Ai , et calcule les valeurs fi sur lesattributs Bi »
• SQL :
SELECT A1,..,Ak,f1(B1),...,fi(Bi)FROM tableGROUP BY A1,...,Ak
• Attention, les autres champs sont perdus ! En particulier lors ducalcul du maximum !
![Page 24: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/24.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Fonctions d’agrégation
• But : regrouper des lignes, et évaluer une fonction sur cesregroupements.
• Syntaxe strange :
A1,...,Ak γf1(B1),...,fi(Bi)table
• « Regroupe selon les attributs Ai , et calcule les valeurs fi sur lesattributs Bi »
• SQL :
SELECT A1,..,Ak,f1(B1),...,fi(Bi)FROM tableGROUP BY A1,...,Ak
• Attention, les autres champs sont perdus ! En particulier lors ducalcul du maximum !
![Page 25: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/25.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Exemples
• Population des différents départements :
depγSOMME(pop)(communes)
• Avec le nom du département ?
σn(
dep,departements.nom:nγSOMME(pop)(R)),
où R = communes on departements
• Moyenne des différents élèves ? (sans les noms)
eleveγMOYENNE(note)colles
• Et enfin : γMAX(c)(
depγCOMPTAGE:c(departements onJCD
(σpop≥104 communes
)))
![Page 26: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/26.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Exemples
• Population des différents départements :
depγSOMME(pop)(communes)
• Avec le nom du département ?
σn(
dep,departements.nom:nγSOMME(pop)(R)),
où R = communes on departements
• Moyenne des différents élèves ? (sans les noms)
eleveγMOYENNE(note)colles
• Et enfin : γMAX(c)(
depγCOMPTAGE:c(departements onJCD
(σpop≥104 communes
)))
![Page 27: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/27.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Exemples
• Population des différents départements :
depγSOMME(pop)(communes)
• Avec le nom du département ?
σn(
dep,departements.nom:nγSOMME(pop)(R)),
où R = communes on departements
• Moyenne des différents élèves ? (sans les noms)
eleveγMOYENNE(note)colles
• Et enfin : γMAX(c)(
depγCOMPTAGE:c(departements onJCD
(σpop≥104 communes
)))
![Page 28: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/28.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Exemples
• Population des différents départements :
depγSOMME(pop)(communes)
• Avec le nom du département ?
σn(
dep,departements.nom:nγSOMME(pop)(R)),
où R = communes on departements
• Moyenne des différents élèves ? (sans les noms)
eleveγMOYENNE(note)colles
• Et enfin : γMAX(c)(
depγCOMPTAGE:c(departements onJCD
(σpop≥104 communes
)))
![Page 29: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/29.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Exemples
• Population des différents départements :
depγSOMME(pop)(communes)
• Avec le nom du département ?
σn(
dep,departements.nom:nγSOMME(pop)(R)),
où R = communes on departements
• Moyenne des différents élèves ? (sans les noms)
eleveγMOYENNE(note)colles
• Et enfin : γMAX(c)(
depγCOMPTAGE:c(departements onJCD
(σpop≥104 communes
)))
![Page 30: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/30.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Exemples
• Population des différents départements :
depγSOMME(pop)(communes)
• Avec le nom du département ?
σn(
dep,departements.nom:nγSOMME(pop)(R)),
où R = communes on departements
• Moyenne des différents élèves ? (sans les noms)
eleveγMOYENNE(note)colles
• Et enfin : γMAX(c)(
depγCOMPTAGE:c(departements onJCD
(σpop≥104 communes
)))
![Page 31: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/31.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
Exemples
• Population des différents départements :
depγSOMME(pop)(communes)
• Avec le nom du département ?
σn(
dep,departements.nom:nγSOMME(pop)(R)),
où R = communes on departements
• Moyenne des différents élèves ? (sans les noms)
eleveγMOYENNE(note)colles
• Et enfin : γMAX(c)(
depγCOMPTAGE:c(departements onJCD
(σpop≥104 communes
)))
![Page 32: Algèbre relationnelle Stéphane Gonnord, Laurent Jouhet](https://reader035.fdocuments.fr/reader035/viewer/2022062411/62acf26396a5b653420cc392/html5/thumbnails/32.jpg)
SQL vs Maths Projections et sélections Jointures Agrégation Autres opérateurs
• Union
• Intersection
• Différence
Uniquement quand ça a du sens !