De l'algèbre au calcul

Fondamental

Chaque requête algébrique est exprimable dans le calcul avec domaine actif.

Pour simplifier la présentation, nous utilisons ici une algèbre basée sur les numéros de colonnes au lieu des noms d'attributs. Soit q une requête algébrique d'arité n. Nous construisons q′ = {x1,...,xn∣φq} équivalente à q par induction sur les “sous-requêtes” de q. (Une requête est construite en appliquant une opération à une ou deux sous-requêtes.) En particulier, pour une sous-requête q′ de q, on définit φq′ par :

  1. si q′ est R pour R ∈ R : φq′ est R(x1,...,xm) où m = arité(R).

  2. si q′ est {u1,...,um} où chaque uj est un nuplet d'arité α : φq′ est

    (x1 = u1(1)∧ ⋅⋅⋅∧ xα = u1(α)) ∨ ... ∨ (x1 = um (1)∧ ⋅⋅⋅∧ xα = um(α )).

  3. si q′ est σF (q1) : φq′ est φq1∧ψF , où ψF est la formule obtenue à partir de F en remplaçant chaque numéro de colonne i par une nouvelle variable xi.

  4. si q′ est πi1,...,in(q1) : φq′ est

    ∃yi1 ...yin((x1 = yi1 ∧ ⋅⋅⋅∧ xn = yin) ∧ ∃yj1 ...∃yjlφq1(y1,...,ym)) où m=arite(q′).

    où j1,...,jl est une liste de [1,arite(q′)] -{i1,...,in}.

  5. si q′ est q1 × q2 : φq′ est φq1 ∧ φq2(xm1+1,...,xm1+m2) où m1=arite(q1) et m2=arite(q2).

  6. si q′ est q1 ∪ q2 : φq′ est φq1 ∨ φq2.

  7. si q′ est q1 - q2 : φq′ est φq1 ∧¬φq2.

Vous pouvez vérifier vous même les détails de cette construction.