Algèbre relationnelle dans les SGBD avec exemples
⚡ Résumé intelligent
L'algèbre relationnelle dans les SGBD est un langage de requêtes procédural qui prend des relations en entrée et produit de nouvelles relations en sortie. Elle regroupe les opérateurs en trois catégories : unaires, ensemblistes et binaires, fournissant ainsi le cadre théorique que les moteurs SQL traduisent en plans d'exécution de requêtes.

Qu’est-ce que l’algèbre relationnelle ?
Algèbre relationnelle SQL est un langage de requêtes procédural qui accepte des instances de relations en entrée et renvoie de nouvelles instances de relations en sortie. Il applique récursivement un ensemble fixe d'opérateurs sur une ou plusieurs relations, et le résultat de chaque opérateur est lui-même une relation pouvant être utilisée comme entrée pour l'opération suivante. Les moteurs SQL s'appuient sur cette algèbre pour planifier et exécuter les requêtes.
Algèbre relationnelle de base Operations
Les opérateurs d'algèbre relationnelle se répartissent en trois groupes.
Relationnel Unaire Operations
- SÉLECTIONNER (σ)
- PROJET (π)
- RENOMMER (ρ)
Operations de la théorie des ensembles
- UNION (∪)
- INTERSECTION (∩)
- DIFFÉRENCE (−)
- PRODUIT CARTÉSIEN (×)
Relationnel Binaire Operations
- INSCRIPTION
- DIVISION
Les sections ci-dessous présentent chaque opérateur à l'aide d'exemples concrets.
SÉLECTIONNER (σ)
Le SELECT L'opération sélectionne un sous-ensemble de tuples qui satisfont un prédicat donné. Le symbole sigma σ le désigne :
σp(r)
où σ est l'opérateur, p est la condition propositionnelle, et r est la relation (table). SELECT préserve le schéma et ignore les lignes qui ne satisfont pas au prédicat.
Exemple 1
σ topic = "Database" (Tutorials)
Sélectionne des tuples à partir de Tutoriels où le sujet est égal à « Base de données ».
Exemple 2
σ topic = "Database" AND author = "guru99" (Tutorials)
Sélectionne des tuples à partir de Tutoriels où le sujet est « Base de données » et l'auteur est guru99.
Exemple 3
σ sales > 50000 (Customers)
Sélectionne des tuples à partir de Clients dont la valeur des ventes est supérieure à 50 000.
Projection (π)
Le projection L'opérateur de projection supprime tous les attributs de la relation d'entrée, à l'exception de ceux listés, produisant ainsi un sous-ensemble vertical. La projection élimine également les lignes dupliquées résultant de la suppression.ping attributs. Le symbole pi π le désigne.
Exemple : Considérez le tableau suivant.
| N ° de client | Nom du client | Statut |
|---|---|---|
| 1 | Active | |
| 2 | Amazon | Active |
| 3 | Apple | Inactif |
| 4 | Alibaba | Active |
Projection basée sur le nom et le statut du client :
π CustomerName, Status (Customers)
| Nom du client | Statut |
|---|---|
| Active | |
| Amazon | Active |
| Apple | Inactif |
| Alibaba | Active |
Renommer (ρ)
Le rebaptiser L'opérateur est une opération unaire qui attribue un nouveau nom à un attribut (ou à une relation entière). Par exemple, ρ(a/b) R renomme l'attribut b de relation R à aLa fonction Renommer est particulièrement utile lorsque vous devez effectuer une auto-jointure ou joindre deux relations qui partagent des noms d'attributs.
syndicat Operation (∪)
Le UNION opérateur, noté par ∪, renvoie tous les tuples qui apparaissent dans la relation A ou la relation B, en supprimant automatiquement les doublons.
Result ← A ∪ B
Pour qu'une union soit valide :
- A et B doivent avoir le même nombre d'attributs (même arité).
- Les domaines d'attributs correspondants doivent être compatibles.
- Les tuples en double sont supprimés automatiquement.
Exemple. Considérons ces deux tableaux :
| Tableau A | Tableau b | |||
|---|---|---|---|---|
| colonne 1 | colonne 2 | colonne 1 | colonne 2 | |
| 1 | 1 | 1 | 1 | |
| 1 | 2 | 1 | 3 | |
A ∪ B donne:
| colonne 1 | colonne 2 |
|---|---|
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
Différence d'ensemble (−)
Le symbole moins désigne différence d'ensemble. Le résultat de A − B est une relation contenant tous les tuples qui sont dans A mais pas dans B.
- A et B doivent être compatibles avec l'union.
- Les noms et les domaines des attributs doivent correspondre.
Exemple : A − B
| colonne 1 | colonne 2 |
|---|---|
| 1 | 2 |
Intersection (∩)
Le intersection opérateur, noté par ∩, définit une relation contenant chaque tuple qui apparaît à la fois dans A et B. A et B doivent être compatibles par union.
Définition visuelle d'une intersection.
Exemple : A ∩ B
| colonne 1 | colonne 2 |
|---|---|
| 1 | 1 |
Produit cartésien (×) dans un SGBD
Le produit cartésien Cette opération combine tous les tuples d'une relation avec tous les tuples d'une autre, en fusionnant leurs colonnes. Le résultat, pris isolément, est rarement utile, mais combiné à un prédicat SELECT, il constitue la base d'une jointure. On l'appelle également produit cartésien ou jointure croisée.
Exemple : σ colonne 2 = '1' (A × B)
L'expression renvoie chaque ligne de A × B dont column 2 la valeur est 1.
| colonne 1 | colonne 2 |
|---|---|
| 1 | 1 |
| 1 | 1 |
Joignez-vous au Operations
A rejoindre est un produit cartésien suivi d'un prédicat de sélection. Les jointures sont notées par le ⋈ ce symbole vous permet de combiner de manière significative des tuples apparentés issus de différentes relations.
Types de jointure :
- Jointures internes : Jointure thêta, jointure équi, jointure naturelle.
- Jointures externes : Joints gauche, droit et extérieur complet.
Jointure interne
Dans une jointure intérieureSeuls les tuples qui satisfont aux critères de correspondance sont inclus ; les autres sont écartés.
Rejoindre Thêta
La forme générale de JOIN est la suivante : Rejoindre Theta, noté θ. La jointure Theta peut utiliser n'importe quelle condition de comparaison dans ses critères de sélection.
A ⋈θ B
Par exemple :
A ⋈ A.column 2 > B.column 2 (B)
| colonne 1 | colonne 2 |
|---|---|
| 1 | 2 |
Equi Join
Lorsqu'une jointure Theta utilise uniquement des conditions d'égalité, elle devient une Equi join.
A ⋈ A.column 2 = B.column 2 (B)
| colonne 1 | colonne 2 |
|---|---|
| 1 | 1 |
L'assemblage en équivalence est l'un des styles d'assemblage les plus utilisés, et RDBMS L'optimiseur de requêtes consacre généralement des efforts considérables à son optimisation.
Jointure naturelle (⋈)
A Jointure naturelle Nécessite un attribut (colonne) commun aux relations. Cet attribut partagé doit avoir le même nom et le même domaine. Le résultat contient une copie de la colonne correspondante.
Considérons ces deux tableaux.
| Tableau C | |
|---|---|
| En | Carrée Réf |
| 2 | 4 |
| 3 | 9 |
| Tableau D | |
|---|---|
| En | Cube |
| 2 | 8 |
| 3 | 27 |
C ⋈ D produit:
| En | Carrée Réf | Cube |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 27 |
Jointure externe
An jointure externe conserve les tuples qui satisfont aux critères de correspondance et Les tuples qui ne le font pas, en remplissant les colonnes manquantes avec NULL.
Jointure externe gauche (A ⟕ B)
La jointure externe gauche conserve tous les tuples de la relation de gauche. Si une ligne de A n'a pas de ligne correspondante dans B, les attributs fournis par B sont remplis avec la valeur NULL.
Considérez les tableaux suivants :
| Tableau A | |
|---|---|
| En | Carrée Réf |
| 2 | 4 |
| 3 | 9 |
| 4 | 16 |
| Tableau b | |
|---|---|
| En | Cube |
| 2 | 8 |
| 3 | 18 |
| 5 | 75 |
A ⟕ B donne:
| En | Carrée Réf | Cube |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | NULL |
Jointure extérieure droite (A ⟖ B)
La jointure externe droite conserve chaque tuple dans la relation appropriée. Si une ligne de B n'a pas de correspondance dans A, les colonnes fournies par A sont remplies avec la valeur NULL.
A ⟖ B donne:
| En | Cube | Carrée Réf |
|---|---|---|
| 2 | 8 | 4 |
| 3 | 18 | 9 |
| 5 | 75 | NULL |
Jointure extérieure complète (A ⟗ B)
La jointure externe complète conserve tous les tuples des deux relations, que la condition de jointure soit remplie ou non. Les valeurs manquantes de part et d'autre deviennent NULL.
A ⟗ B donne:
| En | Carrée Réf | Cube |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | NULL |
| 5 | NULL | 75 |
OperaRésumé de référence du tore
Utilisez ce tableau de référence pour vous rappeler en un coup d'œil le rôle de chaque opérateur.
| Operation (Symbole) | Interet |
|---|---|
| SÉLECTIONNER (σ) | Sélectionne un sous-ensemble de tuples qui satisfont un prédicat donné. |
| PROJET (π) | Ne conserve que les attributs listés et supprime les lignes en double. |
| UNION (∪) | Renvoie tous les tuples apparaissant dans A ou B sans doublons. |
| DIFFÉRENCE D'ENSEMBLE (−) | Renvoie les tuples de A qui ne sont pas dans B. |
| INTERSECTION (∩) | Renvoie les tuples apparaissant à la fois dans A et B. |
| PRODUIT CARTÉSIEN (×) | Combine chaque tuple de A avec chaque tuple de B. |
| JOINTURE INTERNE | Ne conserve que les tuples qui correspondent à la condition de jointure. |
| JONCTION THÊTA (θ) | Jointure de forme générale utilisant n'importe quel prédicat de comparaison. |
| REJOINDRE ÉQUI | Jointure thêta utilisant uniquement des comparaisons d'égalité. |
| JONCTION NATURELLE (⋈) | Fusionne les relations sur les attributs qui partagent le même nom et le même domaine. |
| JONCTION EXTÉRIEURE GAUCHE (⟕) | Conserve tous les tuples de la relation de gauche, remplit ceux de droite avec NULL. |
| JONCTION EXTÉRIEURE DROITE (⟖) | Conserve tous les tuples de la relation de droite, remplit ceux de gauche avec NULL. |
| Jonction extérieure complète (⟗) | Conserve tous les tuples des deux relations, en remplaçant les valeurs manquantes par NULL. |



