

This operator was also proposed in Gyssens & Lakshamanan (1997). Analogous to the previous operator, let s be a MAD with schema S, let d be a new name of the set of names N appearing nowhere else in s, and let X ⊆ M be a set of measure attributes (it is important to note that, defining M as R  ∪_{1i≤n} X_{i}, the authors highlight the uniform or symmetric treatment of category attributes and measures).
We define unfold^{d}_{X}(s) as a table with schema where, for all di in D, par' (d_{i}) = par (d_{i}) and par' (d) = X and with instance tab_{S}' (rep(s)).
This operator, like the following three operators, has been proposed in Hurtado, Mendelzon, & Vaisman (1999).
The relate levels operator defines a rollup function between two independent levels belonging to a dimension. A necessary condition for this is the existence of a function f between the instance sets of the levels being related, such that the dimension instance remains consistent. Otherwise, the relate levels cannot be applied. Moreover, when conditions for relating two levels l_{a} and l_{b} are met, we must delete all the redundant rollup functions that may appear, which are not admitted in the model (we only include direct rollups in it). For instance, we must delete the rollup functions between levels l and l_{b} such that l ≼ l_{a} and l ≼ l_{b}.
An example of application of relate levels is shown in Figure 29.
Figure 29
The unrelate levels operator deletes a relation ≼ between two levels l_{a} and lb, such that l_{a} ≼ l_{b}. The operator must guarantee that levels which are lower than la in the hierarchy will still be able to reach the same levels they reached before the unrelate operation. For instance, if l_{a} ≼ l_{b} and l_{b} ≼ l_{c}, we must preserve l_{a} ≼ l_{c} by making it explicit, in case we delete l_{a} ≼ l_{b}, because, again, this relation was only implicit in the model.
The delete level operator deletes a level and its rollup functions. The level to be deleted cannot be the lowest one in the dimension (l_{inf}), unless it rollsup to only one higher level. As was the case with the relate levels operator, taking into account that we only define the direct rollups, when deleting a level we must add the functions between levels above and below it.
The add instance operator inserts a new element, say x, into a level l_{a} (i.e., an element not belonging to the instance set of l_{a}). We must provide the operator with the pairs (l_{i}, x_{i}), such that every li is a level to which la directly rollsup (l_{a} ≼ l_{i}), and RUP_{la}^{li} (x) = x_{i}), where RUP is a set of partial functions such that:
for each pair of levels l_{1}, l_{2} such that l_{1} ≼ l_{2}, there exists a rollup function (partial function) RUP_{l1}^{l2} : dom (l_{1}) → dom (l_{2});
for each pair of paths, in the graph with nodes in L and edges in ≼, τ_{1} = <l_{1}, l_{2}, …, l_{n1}, l_{n}> and τ_{2} = <l_{1}, l'_{2}, …, l'_{m1}, l_{m}>, l_{n} = l_{m}, we have
for each triple of levels l_{1}, l_{2}, l_{3} ∊ L (with L a finite set of levels) such that l_{1} ≼ l_{2} and l_{2} ≼ l_{3},
The delete instance operator deletes an element belonging to the instance set of a level la. It is only defined when no element of any level li, such that l_{1} ≼ l_{2} rollsup to the element being deleted.
An example of add instance and delete instance application is shown in Figure 30.
Figure 30
Other operators, which explicitly refer to "levels" (insert, add, and delete level) and add multiplicity, proposed in Pourabbas & Rafanelli (2000), have been described in Chapter 4.

