典型 XML 视图更新解析
1. 引言
在数据库领域,视图是通过对数据库源数据进行查询而定义的。视图定义决定了视图中显示的数据,而视图实例通常并不实际存储在数据库中,而是在每次查询视图时根据视图定义从源数据动态生成。
在数据库应用中,许多用户没有权限访问数据库的所有数据,他们通常只能使用视图来检索所需的数据。在数据集成应用中,由于安全原因,用户直接访问源数据变得更加困难。当这些用户需要更新数据库数据时,他们会对视图进行更新操作,期望下次访问视图时视图实例会发生相应的变化,这种更新方式被称为视图更新。
然而,视图更新不能直接应用于视图实例,因为虚拟视图是动态生成的,并不实际存储。即使是物化视图(实际存储视图实例),直接对实例进行更新也可能导致源数据和实例之间的不一致。因此,需要一个翻译过程将视图更新转换为对源数据的更新。
假设视图定义为 (V),视图实例为 (V_i),视图的源数据为 (S_i),且 (V_i = V(S_i))。用户希望对视图实例 (V_i) 应用视图更新 (\delta V),即 (\delta V(V_i))。视图更新翻译的目标是找到一个过程,以 (V) 和 (\delta V) 为输入,生成对源数据 (S_i) 的更新 (\delta S),使得下次用户访问视图时,视图实例的变化符合用户的期望,即 (V(\delta S(S_i)) = \delta V(V_i))。
在翻译过程中,容易出现两种典型的异常情况:视图副作用和源文档过度更新。视图副作用是指翻译后的源更新对源数据的更改超过了必要的程度,导致视图实例的变化超出了用户的预期,从而违反了上述等式。源文档过度更新则是指对源文档进行了不必要的更改,尽管等式仍然成立,但
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



