Toute l'algèbre relationnelle est basée sur 5 opérateurs de bases :
Avec les 5 opérateurs de base on peut créer les 3 opérateurs suivants:
La projection est un opérateur unaire. La projection de R1 sur une partie de ses attributs donne une relation R2 dont le schéma est limité par les attributs spécifiés par la projection.
Il est possible que lors d'une projection, certains doublons apparaissent, dans ce cas ils sont considérés comme étant mathématiquement identiques et sont donc supprimés.
Soit la relation suivante :
Tremblay | Pierre | 20 |
Gagné | Jean | 30 |
Personne (Nom, Prénom, Age)
Quel est le résultat de l'opération :
R = Projection (Personne, Nom, Age)
Tremblay | 20 |
Gagné | 30 |
La restriction est un opérateur unaire. La restriction de R1, étant donnée une condition C, produit une relation R2 de même schéma que R1 et dont les tuples sont les tuples de R1 vérifiant la condition C.
Soit la relation suivante :
Tremblay | Pierre | 20 |
Gagné | Jean | 30 |
Personne (Nom, Prénom, Age)
Quel est le résultat de l'opération :
R = Restriction (Personne, Age>25)
Gagné | Jean | 30 |
Soit les deux relations suivantes :
Homme (Nom, Prénom, Age)
Voiture (Type, Marque)
Tremblay |
Pierre |
20 |
Gagné |
Jean |
30 |
Tesla |
Model X |
Dodge |
Ram 1500 |
Quel est le résultat de l'opération suivante :
R = Produit (Homme, Voiture)
On obtient alors la relation R composée des tuples suivants :
Tremblay | Pierre | 20 | Tesla | Model X |
Tremblay | Pierre | 20 | Dodge | Ram 1500 |
Gagné | Jean | 30 | Tesla | Model X |
Gagné | Jean | 30 | Dodge | Ram 1500 |
Le produit cartésien est rarement utilisé seul, mais il est la base de la jointure !
La jointure est une opération binaire. La jointure de R1 et R2, étant donné une condition C portant sur des attributs de R1 et de R2, de même domaine, produit une relation R3 ayant pour schéma la juxtaposition de ceux des relations R1 et R2 et pour tuples l'ensemble de ceux obtenus par concaténation des tuples de R1 et de R2, et qui vérifient la condition C.
Soit les deux relations suivantes :
Homme (Nom, Prénom, Age)
Voiture (Type, Marque, Propriétaire)
Tremblay |
Pierre |
20 |
Gagné |
Jean |
30 |
Tesla |
Model X |
Tremblay |
Dodge |
Ram 1500 |
Gagné |
Dodge |
caravan |
Tremblay |
Quel est le résultat de l'opération suivante :
R = Jointure (Homme, Voiture, Homme.Nom=Voiture.Propriétaire)
Tremblay |
Pierre |
20 |
Gagné |
Jean |
30 |
Tesla |
Model X |
Tremblay |
Dodge |
Ram 1500 |
Gagné |
Dodge |
caravan |
Tremblay |
Quel est le résultat de l'opération suivante :
R = Jointure (Homme, Voiture, Homme.Nom=Voiture.Propriétaire)
Tremblay | Pierre | 20 | Tesla | Model X | Tremblay |
Tremblay | Pierre | 20 | Dodge | caravan | Tremblay |
Gagné | Jean | 30 | Dodge | Ram 1500 | Gagné |
R(Nom, prenom, age, type, marque, propriétaire )
Une jointure naturelle est une jointure dont la condition est l'égalité des attributs de même nom des deux tables impliquées dans la jointure.
soit deux relations :
R1 (A, B, C)
R2 (A, D)
alors ces deux notations sont équivalentes
Jointure(R1,R2,R1.A=R2.A)
JointureNaturelle(R1,R2)
La jointure entraine la perte de certains tuples (ceux qui ne répondent pas à la condition, plus précisément ceux qui n'ont pas de correspondance dans l'autre relation). Dans certains cas on veut quand même inclure ces tuples. Pour faire cela, on utilise une jointure externe.
Il existe 3 types de jointures externes :
Soit les deux relations suivantes :
Homme (Nom, Prénom, Age)
Voiture (Type, Marque, Propriétaire)
Tremblay |
Pierre |
20 |
Gagné |
Jean |
30 |
Tesla |
Model X |
Tremblay |
Dodge |
Ram 1500 |
Null |
Quel est le résultat de l'opération suivante :
R = JointureExterne (Homme, Voiture, Homme.Nom=Voiture.Propriétaire)
Tremblay |
Pierre |
20 |
Tesla |
Model X |
Tremblay |
Gagné |
Jean |
30 |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
Dodge |
Ram 1500 |
NULL |
Soit les deux relations suivantes :
Homme (Nom, Prénom, Age)
Voiture (Type, Marque, Propriétaire)
Tremblay |
Pierre |
20 |
Gagné |
Jean |
30 |
Tesla |
Model X |
Tremblay |
Dodge |
Ram 1500 |
Null |
Quel est le résultat de l'opération suivante :
R = JointureExterneGauche (Homme, Voiture, Homme.Nom=Voiture.Propriétaire)
Tremblay |
Pierre |
20 |
Tesla |
Model X |
Tremblay |
Gagné |
Jean |
30 |
NULL |
NULL |
NULL |
Soit les deux relations suivantes :
Homme (Nom, Prénom, Age)
Voiture (Type, Marque, Propriétaire)
Tremblay |
Pierre |
20 |
Gagné |
Jean |
30 |
Tesla |
Model X |
Tremblay |
Dodge |
Ram 1500 |
Null |
Quel est le résultat de l'opération suivante :
R = JointureExterneDroite (Homme, Voiture, Homme.Nom=Voiture.Propriétaire)
Tremblay |
Pierre |
20 |
Tesla |
Model X |
Tremblay |
NULL |
NULL |
NULL |
Dodge |
Ram 1500 |
NULL |
Les opérateurs ensemblistes ne s'effectuent que sur des relations de même schéma.
Soit 2 relations :
| Nom | Sexe |
|---|---|
| felix |
mâle |
| Pixel |
femelle |
| olaf | mâle |
| Nom | Sexe |
|---|---|
| felix |
mâle |
| minette |
femelle |
| simba | mâle |
| Nom | Sexe |
|---|---|
| felix |
mâle |
| minette |
femelle |
| simba | mâle |
| Pixel |
femelle |
| olaf | mâle |
| Nom | Sexe |
|---|---|
| felix |
mâle |
| Nom | Sexe |
|---|---|
| Pixel |
femelle |
| olaf | mâle |
La division est une opération binaire. Elle ne peut se faire que si les deux relations ont un attribut en commun (même nom et domaine). R1÷R2 produit une relation R3 qui comporte les attributs appartenant à R1 mais n'appartenant pas à R2 et l'ensemble des tuples qui concaténés à ceux de R2 donnent toujours un tuple de R1.
Cette opération est très peu utilisée.
Elle est obtenue en combinant le produit, la restriction et la différence.
personne | age | métier |
|---|---|---|
Tremblay | 20 | Ingénieur |
Tremblay | 20 | Professeur |
Gagné | 30 | Professeur |
métier |
|---|
Ingénieur |
Professeur |
personne | age |
|---|---|
Tremblay | 20 |