DBMS - Algèbre relationnelle
Bonjour, futurs magiciens des bases de données ! Je suis ravi de vous guider dans cette aventure passionnante à travers le monde magique de l'Algèbre relationnelle. En tant que quelqu'un qui enseigne l'informatique depuis plus d'années que je ne veux admettre (disons simplement que je me souviens quand les disquettes étaient vraiment souples), je peux vous assurer que maîtriser ce sujet sera comme acquérir un superpouvoir dans le domaine des bases de données. Alors, plongeon dans l'aventure !
Algèbre relationnelle
Imaginez que vous organisez votre grande collection de figurines d'action de super-héros (ou peut-être que c'est juste moi). L'Algèbre relationnelle est comme avoir un ensemble de superpouvoirs qui vous permettent de manipuler et de requêter votre collection de manière incroyablement utile. C'est la fondation de la manière dont nous interagissons avec les bases de données relationnelles, en fournissant un cadre théorique pour les opérations sur les relations (tables).
Concepts de base
Avant de commencer à lancer des symboles fancy, mettons en place quelques règles de base :
- Les relations sont des ensembles de tuples (lignes)
- Les attributs sont les en-têtes de colonnes
- Les opérations produisent de nouvelles relations comme leur résultat
Maintenant, regardons les superpouvoirs (opérations) que nous avons à notre disposition :
Opération | Symbole | Description |
---|---|---|
Sélectionner | σ | Filtre les lignes en fonction d'une condition |
Projeter | ∏ | Sélectionne des colonnes spécifiques |
Union | ∪ | Combine deux relations compatibles |
Difference d'ensemble | − | Supprime les tuples d'une relation qui apparaissent dans une autre |
Produit cartésien | Χ | Combine chaque ligne d'une relation avec chaque ligne d'une autre |
Renommer | ρ | Renomme les attributs ou les relations |
Opération de sélection (σ)
L'opération de sélection est comme avoir la vision rayonnante pour votre base de données. Elle vous permet de filtrer les lignes en fonction d'une condition spécifique.
Syntaxe : σ
Disons que nous avons une table appelée Heroes
:
| Name | Power | Age |
|--------|--------------|-----|
| Bruce | Intelligence | 35 |
| Clark | Flight | 30 |
| Diana | Strength | 5000|
| Barry | Speed | 28 |
Si nous voulons trouver tous les héros de moins de 100 ans :
σ Age < 100 (Heroes)
Cela nous donnerait :
| Name | Power | Age |
|--------|--------------|-----|
| Bruce | Intelligence | 35 |
| Clark | Flight | 30 |
| Barry | Speed | 28 |
Voyez ? Nous avons filtré Diana, notre merveilleuse femme sans âge !
Opération de projection (∏)
L'opération de projection est comme avoir un pistolet à réduction. Elle vous permet de sélectionner des colonnes spécifiques, réduisant la largeur de votre relation.
Syntaxe : ∏<liste d'attributs>(relation)
Utilisant notre table Heroes
, si nous ne voulons que les noms et les pouvoirs :
∏ Name, Power (Heroes)
Résultat :
| Name | Power |
|--------|--------------|
| Bruce | Intelligence |
| Clark | Flight |
| Diana | Strength |
| Barry | Speed |
Nous avons réduit notre table, nous concentrant uniquement sur ce dont nous avons besoin !
Opération d'union (∪)
L'opération d'union est comme la fusion dans Dragon Ball Z - elle combine deux relations compatibles.
Syntaxe : Relation1 ∪ Relation2
Disons que nous avons une autre table appelée Sidekicks
:
| Name | Power | Age |
|--------|---------|-----|
| Robin | Acrobat | 22 |
| Jimmy | None | 25 |
Nous pouvons combiner Heroes
et Sidekicks
:
Heroes ∪ Sidekicks
Résultat :
| Name | Power | Age |
|--------|--------------|-----|
| Bruce | Intelligence | 35 |
| Clark | Flight | 30 |
| Diana | Strength | 5000|
| Barry | Speed | 28 |
| Robin | Acrobat | 22 |
| Jimmy | None | 25 |
Maintenant, nous avons une super équipe !
Difference d'ensemble (−)
La différence d'ensemble est comme avoir un rayon de désintégration. Elle supprime les tuples d'une relation qui apparaissent dans une autre.
Syntaxe : Relation1 − Relation2
Si nous voulons trouver les héros qui ne sont pas des sidekicks :
Heroes − Sidekicks
Cela nous donnerait notre table Heroes
d'origine, car aucun d'eux n'est dans la table Sidekicks
.
Produit cartésien (Χ)
Le produit cartésien est comme créer des univers alternatifs où chaque héros rencontre chaque sidekick.
Syntaxe : Relation1 Χ Relation2
Heroes Χ Sidekicks
Cela résulterait dans une table avec toutes les combinaisons possibles de héros et de sidekicks. C'est une grande table, donc je ne vais pas la montrer en entier, mais voici un extrait :
| HName | HPower | HAge | SName | SPower | SAge |
|--------|--------------|------|-------|---------|------|
| Bruce | Intelligence | 35 | Robin | Acrobat | 22 |
| Bruce | Intelligence | 35 | Jimmy | None | 25 |
| Clark | Flight | 30 | Robin | Acrobat | 22 |
| Clark | Flight | 30 | Jimmy | None | 25 |
...
Opération de renommage (ρ)
L'opération de renommage est comme avoir un pouvoir de modification de la réalité. Elle vous permet de changer les noms des attributs ou des relations.
Syntaxe : ρ new_name (old_name)
Si nous voulons renommer l'attribut Power
en Superpower
:
ρ Superpower←Power (Heroes)
Résultat :
| Name | Superpower | Age |
|--------|--------------|-----|
| Bruce | Intelligence | 35 |
| Clark | Flight | 30 |
| Diana | Strength | 5000|
| Barry | Speed | 28 |
Calcul relationnel
Maintenant, pour notre dernier acte, penchons-nous brièvement sur le Calcul relationnel. Si l'Algèbre relationnelle est sur "comment" obtenir des données, le Calcul relationnel est sur "quoi" obtenir des données. C'est une manière déclarative de spécifier des requêtes de base de données.
Il y en a deux types :
- Calcul relationnel par tuples (TRC)
- Calcul relationnel par domaines (DRC)
Par exemple, en TRC, pour trouver tous les héros avec "Flight" comme leur pouvoir :
{H | H ∈ Heroes ∧ H.Power = "Flight"}
Cela dit "Donne-moi tous les tuples H de Heroes où H's Power est Flight."
Et voilà, jeunes padawans ! Vous venez de monter en niveau dans vos compétences en bases de données. Souvenez-vous, avec un grand pouvoir vient une grande responsabilité - utilisez ces opérations d'algèbre relationnelle avec sagesse, et vous serez bientôt en train de requêter des bases de données comme un pro en un rien de temps. Maintenant, allaitez et organiser vos données avec la précision d'un véritable super-héros !
Credits: Image by storyset