凃云杰
(呼伦贝尔学院计算机学院,内蒙古海拉尔,021008)
视图是一个虚表,它是由一个或者说多个基本表导出而形成的,但是数据依然存放在基本表中,所以它和基本表不同,二者存在区别。视图的定义存放在数据库中,它的作用就是数据库显示数据的窗口,通过视图可以查看自己需要的数据库的数据,并能看到相关数据的变化[1]。
视图的主要作用如下:[2,3]
(1)视图可以根据不同的用户自行定义,对于用户无权存储的数据可以根据视图机制对其进行保密,从而提高数据的安全性。(2)使用户多种角度看待同一数据。(3)可以更清晰的表达查询。
假设在某一单位的数据库中,有如下的关系模式:
employee(eno,name,sex,age,position,duty,depno,phone);
department(depno,dname,phone,dean,location)。
employee中各个属性含义如下:eno---职工号,name姓名,sex---性别,age---年龄,position---职称,duty---职务,depno---部门号,phone---电话。
department中各个属性含义如下:depno---系编号,dname---系名,phone---系办电话,dean---系主任,location---办公位置。
如果表中存在敏感数据,部分职工的数据需要进行保护,这完全可以可以通过视图机制实现,比如,需要保护的信息为职务为“院长”的职工,不想为一般用户看到或访问,我们就可以这样来建立视图:
CREATE VIEW emp_notdean AS
SELECT *
FROM employee
WHERE duty! =‘院长’
经过加工处理后,职务为院长的信息通过视图将不会看见。
应用视图机制还可以直接访问某些行。比如,规定只能对部门号为“222”的职工信息进行访问,则可以建立如下视图:
CREATE VIEW emp_222 AS
SELECT *
FROM employee WHERE depno=‘222’
在数据库表中,有些列的数据需要保护,可以通过视图机制来完成[5]。
在职工表中,假如职工的电话和年龄需要保护,则可以建立如下视图:
CREATE VIEW not_phoneage AS
SELECT eno,name,sex,position,duty,depno FROM employee
这样当用户访问职工表employee的视图时,只能看到职工的姓名,职工号,职称,职务,性别,部门号,不会显示职工的年龄和电话。
也可以综合使用限制行的访问和限制列的访问,如,当某个用户对部门为“222”的职工具有访问权限时,如果规定该用户不能访问该部门职工的年龄和电话,则可以这样来建立视图:
CREATE VIEW emp_ST AS
SELECT eno,name,sex,position,duty,depno
FROM employee WHERE depno=‘222’
可以在一个视图基础上建立另一个视图,如上面的要求:当某个用户对部门为“222”的职工具有访问权限时,如果规定该用户不能访问该部门职工的年龄和工资,也可以基于已经存在的视图“emp_222”来建立视图emp _ST:
CREATE VIEW emp _ST AS
SELECT eno,name,sex,position,duty,depno FROM emp_222
可以建立分组视图,如定义一个反映各个部门职工人数的视图。
CREATE VIEW emp_count AS
SELECT depno,COUNT(*) AS 部 门 人 数 FROM employee GROUP BY depno
可以在CREATE VIEW语句中加入WITH CHECK OPTIION ,它表示对视图进行UPDATE,INSERT和DELETE操作时保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)[2,3,4]。
例如,对上面的表employee,我们建立部门号为“222”的职工视图的同时,要求限制访问该部门职工的年龄和电话,另外,对视图进行修改和插入时,仍需要保证该视图只有该部门的职工的信息,则可以这样来建立视图:
CREATE VIEW emp_ST AS
SELECT eno,name,sex,position,duty,depno
FROM employee WHERE depno=‘222’ WITH CHECK OPTION
这样,当用户使用该视图时,在修改或插入元组时,如果部门号不是“222”,则提示出错信息,拒绝插入或修改。
可以创建基于多个基表的视图,如建立信息系且年龄在40岁以上(含40岁)的职工的视图。
CREATE VIEW emp_is40 AS
SELECT eno,name,sex,age,position,duty,depno,employee.phone,dname,department.phone,dean,location
FROM employee,department
WHERE employee.depno =department.depno AND dname=‘信息系’AND age>=40
视图对应于数据库三级模式的外模式,外模式是面向用户的,用户可以有多个。
如何增强数据库安全性是一个需要综合考虑各种因素的极其复杂的问题,它的涉及面广、问题复杂,需要大量学者投入大量的时间、精力为之不懈努力。本文主要结合实例说明了视图在数据库安全中的应用,希望本文的内容对数据库安全性的研究提供基础服务作用。
参考文献
[1] 崔巍.数据库系统及应用(第3版)[M].北京:高等教育出版社.2012,8.
[2] 王珊,萨师煊.数据库系统概论[M].北京:高等教育出版社,2014.
[3] 凃云杰.云背景下数据库安全性与数据库完整性研究[M].中国水利水电出版社.2014,10.
[4] 凃云杰,白杨.云背景下的数据库安全性分析与策略研究[J].软件导刊.2014,8.
[5] 崔巍.数据库系统及应用(第3版)[M].北京:高等教育出版社.2012,8.