记一次视图的运用
视图是一个虚拟的表,是由一个名称和select组成。网上有人说,视图可以不用,其实我一开始我也是这么觉得的,因为我很简单的认为视图就是select 数据,没有其他的了,那还不如干脆直接自己写select来查,因为视图是属于数据库层面的东西,它是如何和源表进行对应的,等等这会多一笔开销。所以我觉得还不如不用(以前是这么认为)。然后今天碰到了一个这样的需求,给指定用户提供他所关心地区的数据(只能看到他所关心的地区,并且这个地区也是会变化的,数据里面涉及到了多个表,需要从多个表中抽取出用户关心的数据),一开始我是想着直接用select也能完事,然后就写了一大段的SQL。后面我发现我这个存在安全性的漏洞,他很容易的可以访问到其他数据(用户对方也是程序员出身)。基于上述的这几种情况,我想到了用视图。
我用视图的原因有如下:1、安全,每个用户只能通过视图来访问数据库,只能看到自己能够查看的数据。2、查询简单,我可以直接把多个表的数据抽取出来组成视图,然后对于程序来说,这就是个单表查询。3、一致性,视图可以程序和数据库的结构,数据保证一致性。4、我这些都是只读的操作,所以用视图。
我知道其实这样做最终也是转换为了对源表的查询,不过这样做很好的满足我的需要。