StanfordDB class自学笔记 (13) Views and Authorization

Three-level vision of database 三层数据库

Physical – Conceptual – Logical

之前讲解数据库的时候 用户和程序主要在conceptual level 实际上用户和程序也可以在logical level!

为什么使用view

  •  Hide some data from some users  对一些用户隐藏数据
  • Make some queries easier / more natural  使得一些查询更加简单
  • Modularity of database access   模块性的数据库访问 

实际数据库应用会有大量的view

定义使用view

例如下面的实际例子  我们可以创建一个CSaccept view,该view里所有的关于student的tuple都是被录取的学生,这样就可以使之后的某些查询更加的简便。

View Modifications  Introduction

现在有一个问题来了,一旦V被定义了,我们可以对V进行改变吗?

由于V不是被储存的,这样好像不合理。要是我们还是想让V进行改变,那么我们要做的就是改变V的时候改变base database!

rewritten的过程实际上应该由系统来自动完成!

 

Rewriting process specified explicitly by view creator

优点+ Can handle all modifications

缺点– No guarantee of correctness (or meaningful)

Restrict views + modifications so that translation to base table modifications is meaningful and unambiguous

优点+ No user intervention

缺点– Restrictions are significant

 

View Modifications Using Triggers使用triggers对view进行修改

此种方法是上面的 Rewriting process specified explicitly by view creator,即由view的设计者来实现。

格式:Using special INSTEAD OF triggers

 

Automatic View Modifications

此种方法是上面的Restrict views + modifications...即系统自动修改

其中对于SQL标准有下面4个要求。

其中Mysql是支持自动修改的,其他的像SQLite以及postgram都是不支持自动修改的,具体的例子可以参考老师上课讲的大学申请系统

 

Materialized Views

之前讲的view都是virtual view,实际上我们并没有创建新的table,我们只是对base database做了一个rewritten的工作

为什么要使用materialized view? 除了virtual 提到的点,我们还想要提高query的性能

实际上我们就是创造了一个新的table!但是这样也有缺点,这个View可能非常的大!我们对view中R1....Rn关系做出更新后,也要对materialized view做出修改,这里老师也提到了一个incremental maintenance 算法可以实现自动更新的功能。

假如直接对Materialized view进行修改呢

  • Good news: just update the stored table
  • Bad news: base tables must stay in synch

这和virtual view中修改view是一样的问题!即修改view必须同时修改base table

materialized view 的效率影响因素

  • Size of data 
  • Complexity of view 
  • Number of queries using view 
  • Number of modifications affecting view
  • 并且 incremental maintenance 算法 versus full recomputation

 

Database Authorization

目的 

  1. 确保用户只能看见被期望看见的数据
  2. 防止数据库被恶意用户修改数据

用户有权利,只能看被授予权限的数据操作

Authorization 与view相结合

在下面的例子中,用户只能看到申请了stanford大学学生信息,访问不到其他学生的信息!

Obtaining Privileges 获得权利

relation的创建者是owner,owner拥有所有的权限,并且可能授予权限

Revoking Privileges 废除权利

废除权利可能存在一个树形的结构!

Cascade说的是传递性质的废除权利,即废除了U1后 废除U2 ,除非有一个其他的授权源U3。

Restrict(如果我们不指定,默认此种)说的是不允许有传递性质发生。

Where Privileges Reside

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值