乱谈SQL Server数据库视图

上一篇 / 下一篇  2012-08-07 09:53:43 / 个人分类:数据库

51Testing软件测试网?Qk g}

  数据库里存储着大量的数据,但是为了保证数据的安全也为了方便,并不是所有用户的都可浏览所有数据。为此SQLServer里用权限、角色、视图来解决这一系列问题。本篇博客我先介绍视图。51Testing软件测试网:s[myz0U`;v&g7K

51Testing软件测试网8Y:MA}a,F i.U

  概念:视图是从一个或多个关联表中派生出的一个虚拟表,换句话说就是以一个或多个表中的部分数据组成的虚拟“表”。

D$c x5h,I!Q6~0

F d Oq$s0  特点:

7jh:ea9E*c0

qS5Y ws0  一、分割数据,简化视点:即通过SELECT和WHERE语句来选择你关心的数据,而去除无关的数据。51Testing软件测试网 MYD(rNg1^Q a9O!UX

51Testing软件测试网E~6MB!MG!PJ

  二、简化操作:视图可以避免对表的访问和存取操作,同时视图是一个很好的查询窗口。51Testing软件测试网+]})t w7ztAr

mJe%u+Gl8Al*s+B0  三、保护数据:针对用户创建视图,自动屏蔽权限外的数据。

k6lK*c:e Zqk0

#e6GQ2sH!Z_(G'R0  四、为数据重构提供一定的逻辑独立性:在关系型数据库中数据重构是不可避免的,最常见的是垂直分割为两个表,那么由于表中的数据类型和值并没有改变,所以只要稍微改动视图的定义既可以满足变更之后的表51Testing软件测试网p@:G.T4]0jk

51Testing软件测试网e @4\#bazd

  五、自动更新:在数据库结构不变的情况下,如果基表中的数据改变,会被自动的反应到视图中

UfX5?#o+h051Testing软件测试网6`)o%Q F'x*v,@

   疑问:对于视图是一个对象,又是“虚拟表”,还具有自动更新的特点,引发了我对视图存储的思考:视图是对象说明视图创建后即被实例化,那么它应该是实际 存在于数据库中的,它也确实存在。但是它是虚拟表又怎么解释呢?首先,它只能是以结果集的方式存储,每次打开就打开结果集,但是这样的话如何自动更新;或 者是以T-SQL 语句才方式存储,每次打开便执行一次语句,这样就可以解释自动更新了,但问题是视图可能很大每次执行浪费资源。所以这两种存储方式并不科学。

_ `;A/NxV(Z \Y3{,zq0

o{ B%mt5t8x0  我查了一些资料,也咨询了学长、学姐,结果是没有结果。但经过讨论我认为,视图应该是以结果集的形式来存储的,同时存在着一种类似于触发器的机制来时时更新视图里的内容。这样的话视图的性质和特点就都可以解释了。当然这只是我的推断,不是事实,写出来只是想寻找答案。51Testing软件测试网 H/[{!~ x7Q


TAG:

 

评分:0

我来说两句

Open Toolbar