Equivalence entre SQL et calcul relationnel

Méthode

La traduction en calcul relationnel est directe, et se fait de la manière automatique suivante.

Soit une requête SQL de la forme :

1
SELECT DISTINCT A1,A2, . . . ,An
2
FROM R1,R2, . . . ,Rm
3
WHERE <CONDITION(A1, . . . ,An,An+1, . . . ,An+k)>

Une expression de calcul relationnel correspondante se déduit directement par la relation suivante :

\(res=\{A_1, A_2,\ldots, A_n | \exists A_{n+1},\ldots, A_{n+k}, (CONDITION_{calcul}(A_1,\ldots, A_{n+k})\}\)

\(CONDITION_{calcul}\) lie les attributs aux tables correspondantes, ce qui de fait génère les jointure, ainsi que les conditions de restriction de la clause WHERE.

Remarque

Notons qu'on utilise le mot clé DISTINCT pour éliminer les doublons et se placer dans le cadre d'un calcul ensembliste. Si on ne met pas le mot clé DISTINCT alors la requête SQL est multi-ensembliste c'est-à-dire qu'elle peut retourner plusieurs fois le même n-uplet.