给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的Oracle 10g列掩码与关系视图比较,过去的都会过去,迎接崭新的开始,释放更美好的自己。
【 tulaoshi.com - 编程语言 】
在前面的文章,我为大家介绍了如何使用Oracle 10g的虚拟私有数据库特征(VPD)掩藏某列数据TechRepublic的成员BrooklynPennyPincher建议我写一篇关于VPD与关系视图的比较文章。
前面文章中小技巧的任务是假如department_id的值等于60,那么掩藏报告中的salary和commission_pct列。因为谓词是一个静态值,所以一个关系视图肯定也能够完成同样的任务。
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)列表A显示了使用选择器CASE语句(这个语句在Oracle SQL的8i版本有了)比较depatment_id的值与60的关系的视图,假如相等返回NULL,假如是另外一个值则返回salary。一个类似的CASE语句也可以掩藏commission_pct列的数据。通过只授权访问视图而不是基本标(Employees)来保护数据。
但是假如我稍稍改变一下规则,要求掩藏除了用户本部门内的所有工资。这将会怎样? 你的第一想法可能是简单地创建更多的视图- -每个部门一个- -并且授予每个用户访问对应的视图的权限。有很多理由说明这不是一个好的解决方案,具体如下:
大量的视图可能增加维护负担(例如,假如一个改变了,所有其它的可能也需要改变)。新的部门可能要求新的视图,用户必须授予访问许可,当用户改变所在部门时,这些访问许可也必须改变。
视图中实现的查询可能是静态值,而不是绑定变量,因此大量同等重要的查询副本将存储在共享池中。
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)应用开发中必须为不同的用户调用不同的视图名,这也是复杂性的一个
来源:http://www.tulaoshi.com/n/20160219/1607420.html
看过《Oracle 10g列掩码与关系视图比较》的人还看了以下文章 更多>>