您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

2020春季数据库-->关系演算安全性的理解

bubuko 2022/1/25 20:10:07 其他 字数 2486 阅读 1017 来源 http://www.bubuko.com/infolist-5-1.html

一、安全关系元组演算表达式 先来看一个例子,{ t |?┐( t ∈ instructor) } ,不在instructor中的元组有无限多个,且大多数这样的元组所包含的值并不在数据库中,故我们通常不希望有这样的表达式。 此时,需要对元组关系演算进行限制,引入元组关系公式P的域(domain),用d ...

一、安全关系元组演算表达式

  先来看一个例子,{ t | ┐( t ∈ instructor) } ,不在instructor中的元组有无限多个,且大多数这样的元组所包含的值并不在数据库中,故我们通常不希望有这样的表达式。

  此时,需要对元组关系演算进行限制,引入元组关系公式P的域(domain),用dom(P)表示P所引用的所有值的集合,既包括P自身用到的值,又包括P中涉及的关系的元组中出现的所有值。P的域是P中显式出现的值名称出现在P中的关系的所有值的集合。这里给出一个例子,dom(t∈instructor ^ t[salary] >80000) 为 :80000 和 出现在instructor中的所有值的集合;dom(┐( t ∈ instructor))为:出现在instructor中的所有值的集合。

  如果出现在表达式{ t | P(t) }结果中的所有值均来自dom(P),则说该表达式是安全的。{ t | ┐( t ∈ instructor) } 不安全,,因为dom(┐( t ∈ instructor))是出现在instructor中的所有值的集合,但很可能有某个不在instructor中的元组t,它包含不在instructor中出现的值,即它允许在结果中出现不在表达式的域中的值。

  安全的表达式一定包含有限的结果,因此限定只有安全的元组关系演算表达式被认为是允许的。

这里给出定义:

技术分享图片

 

 

 

二、安全关系域演算表达式

  同关系的元组演算,关系域演算中,也可能出现产生结果为无限关系的表达式,例如:{ <i,n,d,s> | ┐( <i,n,d,s> ∈ instructor) },它允许结果中出现不在表达式的域中的值。此外,我们还需考虑“存在”和“对所有的”子句中公式的形式。再来看下面一个例子: 

  技术分享图片

 

   在进行第二部分的测试时,还需考虑不在r中的z值,如果不考虑z的取值有无限多中可能,则无法完成对第二部分的测试。因此,需要加一些约束来限制上面这样的表达式。因为在元组关系演算中,将所有存在量词修饰的变量限制在某个关系范围内,而域关系演算中并没有这样做,故增加用于定义安全性的规则,处理上述情况。认为 { <x1,x2,...,xn>| P(x1,x2,...,xn> } 是安全的:

  1.表达式的元组中所有值均来自dom(P)

  2.对每个形如 存在x(P1(x))的“存在”子公式而言,子公式为真iff在dom(P1)中有某个值x使P1(x)为真

  3.对每个形如 任意x(P1(x))的“对所有的”子公式而言,子公式为真iffP1(x)为真对dom(P)中所有值x均为真 (或者如上图中那样定义dom(P1)为不满足的,测试P1(x)为假)

  上述规则的目的是,保证我们不需要测试无限多的可能性就可以完成对“存在”和“对所有的”子公式的测试。如果表达式是安全的,则只需对dom(P1)中的值来测试P1(x)就足够了。

技术分享图片

 

2020春季数据库-->关系演算安全性的理解

原文:https://www.cnblogs.com/aluomengmengda/p/12367192.html


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶