Il existe un lien profond entre SQL et la théorie des ensembles, car le modèle relationnel sur lequel repose SQL (développé par Edgar F. Codd) s'inspire directement des concepts mathématiques de la théorie des ensembles. Voici comment ces deux domaines sont connectés :
- Tables comme ensembles
Dans une base de données relationnelle, chaque table peut être vue comme un ensemble d’éléments (les lignes ou tuples). Chaque ligne représente un élément unique de cet ensemble, et les colonnes (attributs) définissent les propriétés de ces éléments.
- Exemple : Une table Clients avec les colonnes id, nom, ville est un ensemble de clients, où chaque client est un tuple unique.
- Opérations ensemblistes en SQL
SQL utilise des opérations qui reflètent les opérations de base de la théorie des ensembles :
- Union : L’opérateur UNION combine les éléments de deux ensembles (résultats de deux requêtes) en éliminant les doublons.
- Exemple : SELECT nom FROM Clients UNION SELECT nom FROM Fournisseurs ;
Donne l’ensemble des noms présents dans les deux tables.
- Intersection : L’opérateur INTERSECT retourne les éléments communs à deux ensembles.
- Exemple : SELECT nom FROM Clients INTERSECT SELECT nom FROM Fournisseurs ;
Donne les noms qui sont à la fois clients et fournisseurs.
- Différence : L’opérateur EXCEPT (ou MINUS dans certains SGBD) retourne les éléments présents dans un ensemble mais pas dans un autre.
- Exemple : SELECT nom FROM Clients EXCEPT SELECT nom FROM Fournisseurs
Donne les noms des clients qui ne sont pas fournisseurs.
- Produit cartésien
Le produit cartésien en théorie des ensembles (toutes les combinaisons possibles d’éléments de deux ensembles) est représenté en SQL par une jointure implicite sans condition (ou une CROSS JOIN).
- Exemple : SELECT * FROM Clients, Commandes ;
Produit toutes les paires possibles entre les clients et les commandes.
- Projection et sélection
- Projection : En théorie des ensembles, cela correspond à extraire un sous-ensemble d’attributs. En SQL, c’est le rôle de SELECT avec des colonnes spécifiques (par exemple SELECT nom, ville FROM Clients).
- Sélection : Filtrer les éléments d’un ensemble selon une condition .
Exemple : SELECT * FROM Clients WHERE ville = 'Paris' ;
Cette requête revient à créer un sous-ensemble basé sur un critère.
- Relations et jointures
Les jointures (JOIN) en SQL reflètent l’idée de combiner des ensembles en fonction de relations entre leurs éléments. Par exemple, une INNER JOIN peut être vue comme une intersection basée sur une condition (par exemple, une clé commune).
Fondement théorique
Le modèle relationnel de Codd repose sur l’algèbre relationnelle, qui est une formalisation mathématique utilisant la théorie des ensembles. Les opérations de l’algèbre relationnelle (union, intersection, différence, projection, sélection, jointure) sont directement traduites en instructions SQL. Cela garantit que SQL est rigoureux et cohérent d’un point de vue mathématique.