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 pallier cette lacune, et l'on introduit pour cela la notion de jointure externe.
Définition : Jointure 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éfinition : Jointure 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éfinition : Jointure 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
Syntaxe :
R = JointureExterne (R1, R2, condition)
R = JointureExterneGauche (R1, R2, condition)
R = JointureExterneDroite (R1, R2, condition)
Exemple :
Soit les deux relations suivantes : Personne (nom, prénom, age)
et Voiture (type, marque, propriétaire)
nom | prénom | age |
---|---|---|
Dupont | Pierre | 20 |
Durand | Jean | 30 |
Martin | Georges | 40 |
type | marque | propriétaire |
---|---|---|
Tesla | Model X | Dupont |
Citroën | 2 CV | Durand |
Citroën | 3 CV | NULL |
Soit l'opération suivante : R = JointureExterne (Homme, Voiture, Homme.Nom=Voiture.Propriétaire)
On obtient alors la relation R composée des tuples suivants :
nom | prénom | age | type | marque | propriétaire |
---|---|---|---|---|---|
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é que les deux premiers et le dernier tuple.
Complément : Syntaxes alternatives
R = +⋈+ (R1, R2, condition)
(jointure externe)
R = +⋈ (R1, R2, condition)
(jointure externe gauche)
R = ⋈+ (R1, R2, condition)
(jointure externe droite)
R = R1 +⋈+(condition) R2
R = R1 +⋈(condition) R2
R = R1 ⋈+(condition) R2