乱谈SQL Server数据库视图
上一篇 /
下一篇 2012-08-07 09:53:43
/ 个人分类:数据库
51Testing软件测试网?Qkg} 数据库里存储着大量的数据,但是为了保证数据的安全也为了方便,并不是所有用户的都可浏览所有数据。为此SQLServer里用权限、角色、视图来解决这一系列问题。本篇博客我先介绍视图。51Testing软件测试网:s[myz0U`;v&g7K
51Testing软件测试网8Y:MA}a,Fi.U 概念:视图是从一个或多个关联表中派生出的一个虚拟表,换句话说就是以一个或多个表中的部分数据组成的虚拟“表”。
D$c x5h,I!Q6~0Fd
Oq$s0 特点:
7jh:ea9E*c0qS5Y
ws0 一、分割数据,简化视点:即通过SELECT和WHERE语句来选择你关心的数据,而去除无关的数据。51Testing软件测试网 MYD(rNg1^Q
a9O!UX
51Testing软件测试网E~6MB!MG!PJ 二、简化操作:视图可以避免对表的访问和存取操作,同时视图是一个很好的查询窗口。51Testing软件测试网+]})tw7ztAr
mJe%u+Gl8Al*s+B0 三、保护数据:针对用户创建视图,自动屏蔽权限外的数据。
k6lK*c:eZqk0#e6GQ2s H!Z_(G'R0 四、为数据重构提供一定的逻辑独立性:在关系型数据库中数据重构是不可避免的,最常见的是垂直分割为两个表,那么由于表中的数据类型和值并没有改变,所以只要稍微改动视图的定义既可以满足变更之后的表51Testing软件测试网 p@:G.T4]0jk
51Testing软件测试网e@4\#ba zd 五、自动更新:在数据库结构不变的情况下,如果基表中的数据改变,会被自动的反应到视图中
UfX5?#o+h051Testing软件测试网6`)o%Q
F'x*v,@
疑问:对于视图是一个对象,又是“虚拟表”,还具有自动更新的特点,引发了我对视图存储的思考:视图是对象说明视图创建后即被实例化,那么它应该是实际
存在于数据库中的,它也确实存在。但是它是虚拟表又怎么解释呢?首先,它只能是以结果集的方式存储,每次打开就打开结果集,但是这样的话如何自动更新;或
者是以T-SQL
语句才方式存储,每次打开便执行一次语句,这样就可以解释自动更新了,但问题是视图可能很大每次执行浪费资源。所以这两种存储方式并不科学。
_ `;A/NxV(Z \Y3{,zq0o{
B%mt5t8x0 我查了一些资料,也咨询了学长、学姐,结果是没有结果。但经过讨论我认为,视图应该是以结果集的形式来存储的,同时存在着一种类似于触发器的机制来时时更新视图里的内容。这样的话视图的性质和特点就都可以解释了。当然这只是我的推断,不是事实,写出来只是想寻找答案。51Testing软件测试网 H/[{!~ x7Q
收藏
举报
TAG: