29 0 88KB
L'Algèbre Relationnelle
Une algèbre est un ensemble avec des opérations fermées sur cet ensemble. Une algèbre relationnelle est un ensemble d’opérations agissant sur des relations et produisant des relations
4 opérations ensemblistes (union, intersection, différence, produit cartésien) 3 opérations spécifiques des BD relationnelles (sélection, projection, jointure)
Remarques sur l'algèbre relationnelle L'algèbre relationnelle permet l‘étude des opérateurs entre eux (commutativité, associativité, groupe d'opérateurs minimaux,...) équivalence de certaines expressions programmes d'optimisation qui transforment toute requête en sa forme équivalente la plus efficace
L'opération de jointure est très coûteuse : proportionnelle au nombre de n-uplets (m*n pour deux relations jointes) toujours préférable de faire les restrictions le plus tôt possible afin de manipuler des tables les plus réduites possibles.
Pourquoi une requête est-elle meilleure qu'une autre ? Une requête n'est pas l'unique solution d'un problème.
efficacités différentes Exemple :
Fournisseur (N°fno , Nom, Adresse, Ville) Produit (N°prod , Designation, Prix, Poids, Couleur) Commande (N°comm, N°fno, N°prod, , Quantité) Produit = 8 lignes * 5 colonnes * 10 char = 400 char Commande = 10 lignes * 4 colonnes * 10 char = 400 char Références, prix et quantités des produits commandés en plus de 10 exemplaires par commande ?
L'Algèbre Relationnelle Nature : L'algèbre relationnelle permet le calcul sur les relations à l'aide d'opérateurs pour obtenir de nouvelles relations. Motivation : On peut extraire les informations que l'on souhaite à partir de la base de données les décrivant à l'aide d'une expression algébrique relationnelle.
L'Algèbre Relationnelle Utilité : l Formaliser des requêtes sur des bases de données l Permet d’avoir un schéma de requête avant de programmer « physiquement » cette requête l Automatiser la création de requêtes l Preuves de résultats ou d'égalité entre questions ... Ce qu'il y a derrière les langages comme SQL !
Les opérateurs de l'algèbre relationnelle l
Les opérateurs unaires (1 opérande relation) – Projection Π – Sélection σ
l
Les opérateurs binaires (2 opérandes relation) – – – – – –
Produit Cartésien × Jointure Différence Union ∪ Intersection ∩ Division ÷
La projection Π l l l
Signature : Relation × Liste d'attributs → Relation Notation : PROJY(R) ou ΠY(R) Elle ne conserve que les types d'attributs (colonnes) Y de la relation et supprime les doublons
COMMANDE Objet
Client
Nb
table
Klein
4
table
Klein
2
placard
Blériot
3
Π Objet, Client(R)
Objet
Client
table
Klein
placard
Blériot
La Sélection σ l l l
l
Signature : Relation × Expression Logique → Relation Notation : SELECT C(R) ou σ C (R) La sélection ne conserve de la relation que les tuples (lignes) qui vérifient l'expression logique sur noms d'attributs (construite avec les opérateurs logiques ¬, ∨, ∧ et les comparaisons =, , ≥, ≠, ≤). Le schéma relationnel est conservé.
R Chauffeur
Départ
Destination
Bébert
Paris
Bordeaux
Karl
Paris
Le Havre
Tonio
Paris
Le Havre
Dédé
Lyon
Marseille
Chauffeur
Départ
Destination
Karl
Paris
Le Havre
Tonio
Paris
Le Havre
σ Départ="Paris"∧Destination="Le Havre" (R)
Le Produit Cartésien × l
Signature :
Relation × Relation → Relation
l
Notation :
PROD(R1, R2) ou R1 × R 2
l
On renomme les types d'attributs que R1 et R2 ont en commun, puis on concatène chaque tuple de la relation R1 avec chaque tuple de la relation R2 pour former l'extension.
Remarques :
On doit renommer les types d'attributs en double. On obtient toutes les combinaisons possibles !
Le Produit Cartésien (exemple) Stock1
Fabrication
Pièce
Nb-P
Fournisseur
Pièce
Nb
Objet
vis
2000
Germond
vis
8
table
écrou
4000
Martin
écrou
8
table
charnière
500
André
charnière
4
placard
poignée
200
André
vis
16
placard
×
Pièce1
Nb-P
Fournisseur
Pièce2
Nb
Objet
vis
2000
Germond
vis
8
table
vis
2000
Germond
écrou
8
table
vis
2000
Germond
charnière
4
placard
vis
2000
Germond
vis
16
placard
écrou
4000
Martin
vis
8
table
écrou
4000
Martin
écrou
8
table
…
…
...
...
...
...
La θ-Jointure l l l
Signature : Relation × Relation × θ-Expression → Relation Notation : JOIN θ-Expression (R,S) ou R θ-Expression S La jointure est la superposition de tout enregistrement de R avec un enregistrement de S dans laquelle on ne garde que les tuples qui vérifient la θ-Expression.
Remarque :
Comme pour le produit cartésien, on renommera les types d'attributs communs à R et à S.
La θ-Jointure (exemple) Stock1
Fabrication
Pièce
Nb-P
Fournisseur
Pièce
Nb
Objet
vis
2000
Germond
vis
8
table
écrou
4000
Martin
écrou
8
table
charnière
500
André
charnière
4
placard
poignée
200
André
vis
16
placard
Stock.pièce = Fabrication.pièce
Pièce1
Nb-P
Fournisseur
Pièce2
Nb
Objet
vis
2000
Germond
vis
8
table
vis
2000
Germond
vis
16
placard
écrou
4000
Martin
écrou
8
table
charnière
500
André
charnière
4
placard
θ -Expression vérifiée
Décomposition de la θ-Jointure La θ-Jointure est composée à partir de la sélection et du produit cartésien. R
θ
S = σθ (S × R)
Equi-jointure et Jointure naturelle l
l
Dans l'équi-jointure, la θ-expression est omise. On ne garde que les tuples pour lesquels les valeurs des colonnes communes à R et S sont égales. La jointure naturelle notée R*S ou R S est une équijointure dans laquelle on ne garde qu'une seule des colonnes communes.
Remarque :
La jointure naturelle peut également s'exprimer à l'aide d'une sélection, d'un produit cartésien et d'une projection.
La Jointure naturelle (exemple) Stock1
Fabrication
Pièce
Nb-P
Fournisseur
Pièce
Nb
Objet
vis
2000
Germond
vis
8
table
écrou
4000
Martin
écrou
8
table
charnière
500
André
charnière
4
placard
poignée
200
André
vis
16
placard
Pièce
Nb-P
Fournisseur
Nb
Objet
vis
2000
Germond
8
table
vis
2000
Germond
16
placard
écrou
4000
Martin
8
table
charnière
500
André
4
placard
L'union ∪ et l'intersection ∩ Union l Signature : Relation × Relation → Relation l Notation : R∪S l Pour deux tables R et S de même schéma relationnel, l'union retourne les tuples qui sont dans R, dans S ou dans R et dans S. Intersection l Signature : Relation × Relation → Relation l Notation : R∩S l Pour deux tables R et S de même schéma relationnel, l'intersection retourne les tuples qui sont à la fois dans R et dans S.
La différence Signature : Relation × Relation → Relation l Notation : R-S l Pour deux tables R et S de même schéma relationnel, l'union retourne les tuples qui sont dans R à l'exception de ceux qui sont également dans S.
Les exemples Stock1 Pièce
Nb-P
Fournisseur
vis
2000
Germond
écrou
4000
Martin
charnière
500
André
poignée
200
André
Stock1 ∪ Stock2 Pièce
Nb-P
Fournisseur
vis
2000
Germond
écrou
4000
Martin
charnière
500
André
poignée
200
André
vis
5000
Dupont
axe
200
Gauthier
Stock1 ∩ Stock2 Stock2 Pièce
Nb-P
Fournisseur
vis
5000
Dupont
écrou
4000
Martin
axe
200
Gauthier
Pièce
Nb-P
Fournisseur
écrou
4000
Martin
Stock2 - Stock1 Pièce
Nb-P
Fournisseur
vis
5000
Dupont
axe
200
Gauthier
La division ÷ l l l
Signature :
Relation × Relation → Relation
Notation : R÷S La division de la relation R(X,Y) par la relation S(Y) est une relation T(X) dont l'extension est composée de la projection de R sur X... (rien de tel qu'un bon exemple)
Remarque : La division est pratique, mais elle n'est quasiment jamais implantée...
Exemple de division ÷ Compétition Discipline
Participant
surf
Alex
ski
Fred
ski
Alex
luge
Damien
luge
Luc
Qui fait du surf et du ski ? ∧
∧
Compétition ÷ Quelle_discipline Participant
Quelle_discipline Genre ski surf
Alex
Requêtes en Algèbre Relationnelle (1) Sur tous les stocks, quels sont les noms des pièces avec un nombre inférieur à 500?
ΠPièce(σNB-P