Constrained Physical Database Design 209
As an example, consider the following constraint:
ASSERT size(C) - size(COrig) ≤ 200M
In this situation, D(C, F) =↓ for any C because any sequence of transfor-
mations starting with C will result in a smaller configuration, and therefore
the value of F always decreases. Although the definition of D is precise, in
practice it might be unfeasible to evaluate D for arbitrary values of F.Ifwe
cannot prove that D(C, F) ∈{↑, ↓, ↔} we return the unknown value “? ”. Op-
erationally, we evaluate D in a bottom-up manner. We first assign D values
for the primitive function calls:
D(C, size(C)) =↓
D(C, size(Tables[”R”])) =↔
D(C, cost(Q, C)) = if type(Q)isSELECT then ↑ else ?
and then propagate results through operators using