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