视图在实践中的应用

2016-05-19 13:34刘新亮孙忠林
电脑知识与技术 2016年7期
关键词:视点视图数据库

刘新亮++孙忠林

摘要:共享数据是存在安全性问题的,由于数据量很大,实际应用中用户只关心部分数据,因此,如何提高数据共享、保证数据安全性和提升软件系统运行效率在实践应用中是复杂的。该文结合实际,给出视图的一种应用方法,应用表明能解决数据共享、数据安全和提升软件系统运行效率的问题。

关键词:视图;数据库;权限;缓存;视点

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)07-0019-02

The Application of View in Practice

LIU Xin-liang,SUN Zhong-lin

(Shandong University of Science and Technology,Qingdao 266590,China)

Abstract: Shared data exits security problems.And because the volume of date is very large,users usually only concern parts of it. How to improve data sharing, how to ensure the data security,and how to make the software system run efficiently are complicated in real life. With practice,this paper provides an application method of view. The practice shows that it can solve the problems of data sharing,data security and improving of software system operating efficiency.

Key words: view; database; jurisdiction; cache; viewpoint

1 概述

视图是数据库系统提供给用户以多种角度观察数据库中数据的重要机制。视图是从一个或多个基本表(或视图)导出的表,它是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。

目前,视图的应用十分普遍。对于需要多次固定查询数据库的操作,可以通过设计视图来简化查询;对于某些重要数据或者隐私数据,可以通过视图来限制对物理表的访问,从而保证数据的安全;分布式数据库中,通过引用视图可以将不同服务器的表格简单的连接起来。以当前流行的框架SSH为例,视图的使用还可以提升其访问数据库的效率。

2 视图应用的方法

2.1集中用户视点

随着当前互联网的发展,用户信息越来越多,存储到数据库的数据量越来越大,对于数据的管理越来越复杂。数据库表格的设计往往不能满足所有角色的需求,因为不同的角色,关心的数据属性也是不同的,很可能这些数据属性会分布在不同的数据库表格中。在分布式数据库中,某角色可能还需要集成分布在不同数据源的数据,遇到这种情况,应用视图可以很好地解决相应的问题。物理表结构的变动对于已经开发的项目会带来不可估量的影响,而应用视图,可以在不改变表结构的情况下,任意组合数据库物理表格的信息,这就可以很方便地为不同的角色设计不同的视图。

在数据字段比较多的表格中,可能会存在某角色只关心其中的几个属性,如果将所有的属性全部列举出来,那么就会造成用户的视点不集中。用户需要自己去过滤不需要的信息,使得系统的友好度降低。利用视图,可以将该角色感兴趣的属性集合在一起,从而提升系统的友好度。

在UML建模中,可以根据系统类图利用数据库正向工程生成物理表,这就使得一个物理表格往往是设计过程中抽象的一个类。因此,物理表格存放的信息只是一个抽象类的信息。例如,客户信息表中只存放客户信息,而不会存放收费信息。那就可能会存在某角色需要不同表格中的信息。如果单独为该角色设计表格,就会使数据冗余。而利用视图,可以将不同表格中的数据连接在一起,集中显示给用户。由于视图本质是数据库的查询语句,视图展示的内容仍然存放在物理表中,因此,数据库的数据并没有冗余。使用视图,可以查询不同物理表格中的数据而不冗余数据。

在分布式数据库中,分布式分区视图能使来自一个或是多个SQL Server数据库中的数据简洁的连接起来,使用户可以查询不同数据源的数据。

2.2 控制权限,增强安全性

在项目实践过程中,权限的控制关系到数据安全,因此,权限的控制非常重要。软件系统中特定的角色只能操作部分数据,如果角色的权限过高,那么软件系统就会相当不安全。客户如果能够操作自己的收费信息,那么,软件系统将完全无法应用。利用视图,可以将用户与物理表格隔离,从而可以使对数据权限的控制更加简便、准确。视图隐藏了物理表格的表结构,从而大大增强了安全性,用户只能看到视图提供的数据。使用视图,还可以在不改变物理表结构的情况下,为新增的角色定制新的视图,通过授予用户视图的权限来控制对物理表的访问,使得软件系统在保证安全的前提下,可扩展性得到了保障。

2.3 减小软件系统缓存

数据库内的物理表格之间会有各种关联,通过主外键关系来进行结构化表格之间信息的共享。而以目前流行的框架SSH为例,Hibernate在数据持久化过程中,会将结构化的数据库的表格对象化,利用面向对象的方法来处理数据库表格,因此,当表格中存在外键时,那么在Hibernate的实体层读取出的实体会包含该外键对象的所有信息,如果外键对象中仍有外键,那么还会继续读取。随着数据量的增大,需要读取的数据量就会急剧增长,从而降低了对数据库的访问效率。而如果使用视图,打断物理表格之间的关联,那么,Hibernate读取的实体只有视图中的属性,而不会读取其他属性,软件系统需要的缓存就会减小,使得软件系统性能得到优化。

3 视图应用的实践

本文结合作者的实践经历,将结合视图在抄表收费系统中的应用解释视图如何应用到软件系统中。

3.1视图集中视点的应用

在抄表收费系统中,根据权限分配了许多角色。其中,客户档案管理员只需要管理客户信息表中的信息,而抄表员抄表时同时需要客户信息表和水表卡信息表中的客户编号、客户姓名、手机号、客户地址、水表卡编号、抄表方式和抄表底数,客户信息表如表1,水表卡信息表如表2。抄表员需要的数据分布在多个表格中,如果此时专门设立一张物理表来适应抄表员的需求,会使得数据库数据冗余,软件系统访问数据库效率降低。此时,可以通过建立视图来解决该问题。如表3,将抄表员所需要的分布在各个表中的信息通过建立视图的方法,集中到一起,抄表员可以根据视图中的信息对客户进行抄表工作。此视图的应用,体现了视图在集中用户视点、查询多表信息方面的作用。

3.2视图控制权限的应用

在抄表收费系统中,客户可以查询自己在客户信息表中的客户编号、客户姓名、客户地址、手机号、水费账户和收费信息表中的上月缴费金额、滞纳金金额信息。客户信息表如表1所示,收费表如表4所示。但是,客户并没有修改自己的收费信息的权限。此时,建立一张视图,就可以将两个物理表中的信息合并展现给客户,授予客户对客户缴费视图的访问权限,通过利用视图将客户与收费信息表进行隔离,而且作为多表视图,只允许查询操作,并不允许修改、增加、删除等操作。因此,通过应用视图,解决了软件系统中权限控制的问题。建立的客户缴费视图如表5所示。

3.3视图减小软件系统缓存的应用

在抄表收费系统中,水表卡信息表中包含外键客户编号和水表编号,水表卡信息表如表2所示,客户信息表如表1所示,水表信息表如表6所示。那么,在Hibernate读取的实体中,水表卡的实体对象中客户信息表和水表信息表分别作为水表卡的一个子对象出现。因此,客户信息表和水表信息表中的全部属性都会读取出来,而客户信息表中又包含客户状态、优惠类型等外键,水表信息表中又包含水表状态等外键,这些外键所对应的属性也都需要将实体读取出来。在数据量小的情况下,运行效率没有太大差别,而当数据量增大时,就会大大的消耗不必要的缓存,从而使软件系统的运行效率降低。如果建立一个视图,将客户信息表和水表中的主键作为视图的属性,系统在读取实体的时候,只是读取了视图中的主键,而不会继续读取客户的其他属性,这样,就减轻了读取实体时产生的缓存消耗,使得系统在数据量大的情况下仍然可以较快的访问数据库。

4 结束语

本文介绍了视图在集中视点、控制权限和减小软件系统缓存方面的作用,希望该文能让读者了解如何应用视图去解决上述问题。

参考文献:

[1] 陈增祥.基于SQL Server视图的数据库安全模型的研究[J]. 电脑与电信,2012 (Z1):51-52.

[2] 刘晓娜,杜永文,蔺国梁. 移动数据库中组合视图对隐私保护的应用[J]. 计算机光盘软件与应用,2013(13):13-14.

[3] 王珊,萨师煊. 数据库系统概论[M]. 北京:高等教育出版社,2014.

[4] 涂云杰. 视图在数据库安全中的应用[J]. 电子测试,2015(8):81-82.

[5] 张贺,胡婕,刘梦赤. 信息网数据库管理系统的视图设计与实现[J]. 小型微型计算机系统,2015(10):2203-2208.

[6] 李强. 数据库中视图的应用[J].才智,2012(28):55.

[7] Fritchey, Grant.Dynamic Management Views in Azure SQL Database v12[C].SQL Server Pro,2015.

[8] Tamir Tassa,Ehud Gudes.Secure distributed computation of anonymized views of shared databases[J].ACM Trans.Database Syst.,2012,37(2):1.

猜你喜欢
视点视图数据库
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
视点
两会视点
寻找新的视点