| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1005 人关注过本帖
标题:经验和教训
只看楼主 加入收藏
hzybit
Rank: 2
等 级:论坛游民
帖 子:22
专家分:23
注 册:2013-1-8
收藏
得分:0 
以下是引用wp231957在2013-1-20 21:55:28的发言:

视图有啥用
以下为摘抄内容,实际也应用过,个人觉得有道理

1。简化应用程序。

视图做为数据库中的一种实体,实际上存在的只是它的脚本,而它的内容并不真正的单独存在一份。一般,可以对复杂的应用程序从功能角度进行分析,将可以与其它的应用程序共用的那一部分,分离出来。对这部分功能,视具体情况可做成不同的数据库实体(如过程),有些是可以做成视图的。这样,上层的应用程序就可以从视图中取数据了。

还有,可以把对远地数据库的访问封装在视图中,使之对上层应用程序透明。

2。可以对 UNION 后的记录集排序。

直接对以下语句的结果排序,是不可能的(至少我不知道怎么直接排序)。

select a.id id from a

union

select b.id id from b;

所以把以上语句作成视图后,就可以了。设视图名为A_B:

select id from A_B order by id;

3。可以实现一定的权限控制。

可以根据需要,对表中的一部分内容做一个视图,以供一定的角色使用。可以对表中的一部分记录做一个视图(纵向),也可以对一个表中的一部分字段做一个视图(横向),或二者兼而有之。

暂时想了这么多,希望大家多多指正与补充。

--------------------------------------------------------------------

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。        对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图。如果有几台不同的服务器分别存储组织中不同地区的数据,而您需要将这些服务器上相似结构的数据组合起来,这种方式就很有用。
一、视图的作用
       * 简单性。看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。

       * 安全性。通过视图用户只能查询和修改他们所能见到的数据。数据库中的其它数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过视图,用户可以被限制在数据的不同子集上:

       使用权限可被限制在基表的行的子集上。

       使用权限可被限制在基表的列的子集上。

       使用权限可被限制在基表的行和列的子集上。

       使用权限可被限制在多个基表的连接所限定的行上。

       使用权限可被限制在基表中的数据的统计汇总上。

       使用权限可被限制在另一视图的一个子集上,或是一些视图和基表合并后的子集上。

       * 逻辑数据独立性。视图可帮助用户屏蔽真实表结构变化带来的影响。

二、视图的优点
       (1)视图能简化用户的操作

       (2)视图机制可以使用户以不同的方式查询同一数据

       (3)视图对数据库重构提供了一定程度的逻辑独立性

       (4)视图可以对机密的数据提供安全保护

三、视图的安全性
       视图的安全性可以防止未授权用户查看特定的行或列,是用户只能看到表中特定行的方法如下:

       1 在表中增加一个标志用户名的列;

       2 建立视图,是用户只能看到标有自己用户名的行;

       3 把视图授权给其他用户。

四、逻辑数据独立性
       视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。视图可以在以下几个方面使程序与数据独立:

       1 如果应用建立在数据库表上,当数据库表发生变化时,可以在表上建立视图,通过视图屏蔽表的变化,从而应用程序可以不动。

       2 如果应用建立在数据库表上,当应用发生变化时,可以在表上建立视图,通过视图屏蔽应用的变化,从而使数据库表不动。

       3 如果应用建立在视图上,当数据库表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而应用程序可以不动。

       4 如果应用建立在视图上,当应用发生变化时,可以在表上修改视图,通过视图屏蔽应用的变化,从而数据库可以不动。

VFP ,EXCEL VBA,EXCEL ADD-IN
2013-01-20 22:32
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
收藏
得分:1 
回复楼主:这个建议有一定的不可取性。原因如下:
  如果库内的表不坏,数据库很容易恢复。而且数据一点也不丢失。方法也很简单。这一点大家都知道。
  使用数据库后,有他的很大优越性。1、并发度高 2、可建立视图 3、可建立与远程数据的连接池 4、数据库内建立存储过程 5、能集合为库集 .. 等等。这些特点,用单表状态无法做到,然而却是程序提高功能,无论如何不能缺的。恢复后的数据库,上面带有的表一个也不缺,原来的视图仍然有而不变,原来的远程连接仍然在那里, ....


[ 本帖最后由 qingfameng 于 2013-1-20 23:03 编辑 ]
2013-01-20 22:49
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9831
专家分:27162
注 册:2012-2-5
收藏
得分:0 
单机操作用不着数据库

坚守VFP最后的阵地
2013-01-20 23:22
taohua300
Rank: 12Rank: 12Rank: 12
来 自:光
等 级:贵宾
威 望:14
帖 子:1636
专家分:3906
注 册:2009-3-11
收藏
得分:1 
在合适的地方加FLUSH
能有效的避免或减免损坏情况出现

个性太多,无法显示
2013-01-21 09:19
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
没怎么遇到损坏情况
2013-01-21 09:22
月沐庭轩
Rank: 9Rank: 9Rank: 9
来 自:京城
等 级:贵宾
威 望:17
帖 子:393
专家分:1106
注 册:2011-7-24
收藏
得分:1 
用了vfp的数据库和表,最大的避免了表损坏的情况,我的经验是:
1、使用ca,即CursorAdapter类。
2、使用tableupdate来更新数据,更新完后,立即用flush,确保数据被适时保存到磁盘上。

坚持学习vfp,QQ:306805680
2013-01-21 10:16
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11813
专家分:43421
注 册:2006-5-13
收藏
得分:1 
我倒是经常遇到表损坏的情况,有些用户不习惯及时退出程序,遇到异常关机就很容易损坏表。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2013-01-21 10:17
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:1 
回复 17楼 hu9jj
经常遇到?
常用处理方法呢

附网上找的“VFP数据表DBF的修复一法”。没用过,不知有用不。

有损坏表的试试,说一下可行不

VFP数据表DBF的修复一法.rar (743 Bytes)
2013-01-21 10:48
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11813
专家分:43421
注 册:2006-5-13
收藏
得分:0 
以下是引用tlliqi在2013-1-21 10:48:42的发言:

经常遇到?
常用处理方法呢

附网上找的“VFP数据表DBF的修复一法”。没用过,不知有用不。

有损坏表的试试,说一下可行不
我现在大量使用自由表,数据保留在数据库的表中,需要时将数据复制到自由表中加工处理,之后再更新数据库。也就是说不直接使用数据库的表,这样损坏的基本上都是自由表。自由表在程序启动前其中的数据都是多余的,所以一旦出现表损坏之后,只要用户重新安装一遍程序就行。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2013-01-21 16:27
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
回复 19楼 hu9jj
办法很不错
不直接操作原表 用更新
这样可避免一旦坏表无法复原
2013-01-21 16:33
快速回复:经验和教训
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016509 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved