Jointure externe

Introduction

La jointure est une opération qui entraîne la perte de certains tuples : ceux qui appartiennent à une des deux relations opérandes et qui n'ont pas de correspondance dans l'autre relation. Il est nécessaire dans certains cas de palier cette lacune, et l'on introduit pour cela la notion de jointure externe.

DéfinitionJointure externe

La jointure externe entre R1 et R2 est une jointure qui produit une relation R3 à laquelle on ajoute les tuples de R1 et de R2 exclus par la jointure, en complétant avec des valeurs nulles pour les attributs de l'autre relation.

DéfinitionJointure externe gauche

La jointure externe gauche entre R1 et R2 est une jointure externe pour laquelle on ajoute seulement les tuples de R1 (c'est à dire la relation de gauche) ayant été exclus.

Synonymes : Jointure gauche

DéfinitionJointure externe droite

La jointure externe droite entre R1 et R2 est une jointure externe pour laquelle on ajoute seulement les tuples de R2 (c'est à dire la relation de droite) ayant été exclus.

Bien entendu une jointure externe droite peut être réécrite par une jointure externe gauche (et réciproquement) en substituant les relations opérandes R1 et R2.

Synonymes : Jointure droite

Exemple

Soit les deux relations suivantes :

1
Homme (#Nom, Prénom, Age)
2
Voiture (#Type, #Marque, Propriétaire)

Soit les tuples suivants pour ces deux relations respectivement :

Homme

Dupont

Pierre

20

Durand

Jean

30

Martin

Georges

40

Voiture

Tesla

Model X

Dupont

Citroën

2 CV

Durand

Citroën

3 CV

NULL

Soit l'opération suivante :

1
R = JointureExterne (Homme, Voiture, Homme.Nom=Voiture.Propriétaire)

On obtient alors la relation R composée des tuples suivants :

R

Dupont

Pierre

20

Tesla

Model X

Dupont

Durand

Jean

30

Citroën

2 CV

Durand

Martin

Georges

40

NULL

NULL

NULL

NULL

NULL

NULL

Citroën

3 CV

NULL

Une jointure externe gauche n'aurait renvoyé que les trois premiers tuples et une jointure externe droite n'aurait renvoyée que les deux premiers et le dernier tuple.