考虑一个关系 R1 (roll no,marks)。假设 R1 中的条目是 (1,20) 和 (2,25),并且让 roll no 和 tags 的域都是正整数。
现在是一个元组微积分表达式,如 { t | ~ (t 属于 R1) } 是不安全的,因为我们可以拥有无限数量的元组。假设我限制了 roll no 的域并将标记为 1 到 50 之间的正整数。现在上面的表达式仍然不安全吗?我认为它不应该是不安全的,因为我们有一个有限的域。
考虑一个关系 R1 (roll no,marks)。假设 R1 中的条目是 (1,20) 和 (2,25),并且让 roll no 和 tags 的域都是正整数。
现在是一个元组微积分表达式,如 { t | ~ (t 属于 R1) } 是不安全的,因为我们可以拥有无限数量的元组。假设我限制了 roll no 的域并将标记为 1 到 50 之间的正整数。现在上面的表达式仍然不安全吗?我认为它不应该是不安全的,因为我们有一个有限的域。
有限与无限在查询是否安全方面起着一定的作用。但是,当没有域是无限的时,查询并不是安全的。
安全查询是其语法保证域独立性的查询。与域无关的查询是其结果可以使用基础关系上的关系代数运算符来计算的查询。关系运算符不能(通过设计)计算具有基本关系标题但不在其中的元组的关系。因为R
那是{ t | t NOT IN R }
。我会给出一个等效的关系表达式,但没有一个,这就是重点。另一种说法是,与域无关的查询无论其域是什么都返回相同的结果。(因此得名。)示例中使用了无限域因为具有无限域的依赖于域的查询将在其结果中具有无限数量的行,并且预计该无限结果显然表明它无法计算。无论如何,这些域独立性的定义并不是说当没有无限域时查询是域独立/安全的。
关系代数运算符仅限于计算可在微积分中表达的元组集合,其中每个 NOT 都跟在 AND 之后,并且所有此类 AND NOT 和所有 OR 都具有具有相同属性的操作数。前者通过 MINUS 计算,后者通过 UNION 计算。计算有限域的域相关/不安全查询结果很简单。(毕竟,我们知道什么元组不在关系中。)但是所需的额外关系运算符具有基于基本关系域的基数乘积的计算复杂性,而不是基于少得多的元组数量。基础关系。关系代数的特定运算符被特别选择以避免那些查询/计算。
(令人信服的证明/解释依赖于通过有效的推理规则从公认的假设和定理中推导出来。如果你想找出推理中的缺陷,你需要根据你接受和分享的参考给出它。)
PS如果您使用域和数据详细计算示例,那么您会发现即使使用有限域也很难找到返回其值的关系代数表达式。因为一个都没有。(在与域独立性/安全性相同的意义上使用“关系代数”。)