码迷,mamicode.com
首页 > 其他好文 > 详细

【机房重构】——视图,触发器,存储过程的使用

时间:2015-05-03 17:34:41      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:机房重构   存储过程   触发器   视图   

       在机房收费系统中,对多个表的查询,要写多个SQL是很麻烦的事情,为了方便我们写代码,同时对代码进行解耦和,我们引用了视图,触发器,存储过程。


一、是什么?


视图

     从若干个基本表和其他视图构造出来的虚拟表。视图本身并不存储实际的数据,而仅仅存储一个Select语句和所涉及表的metadata。


触发器

     特殊的存储过程,此机制是由事务触发而完成的,而不是存储过程的调用。



存储过程
     一组完成特定功能的SQL语句集合以及流程控制语句编写的模块,存储过程经过编译后存储在数据库服务端的数据库中,使用时调用即可。


二、为什么?


视图
     (1)提供了用户访问的接口,用户不必知道底层的表结构是什么样的,当表改变时,只需改变视图的语句,而客户端不许改变,降低了耦合性

     (2)加强了安全性,用户只能看到视图提供的那部分数据,其他的看不到

     (3)简化了数据库的访问操作



存储过程

     (1)提高运行速度,调用存储过程的速度会比执行一条SQL语句要快的多。
     (2)只需编译一次即可,而SQL语句使用一次编译一次。
     (3)可以反复调用,减轻了程序编写的工作量
     (4)增强了SQL的功能和灵活性,能完成复杂的楼及判断和复杂运算


触发器
     (1)通过数据库中的相关表来实现级联操作。
     (2)自动执行
     (3)触发器可以强制用比CHECK约束定义的约束更为复杂的约束。(这一点不太理解)
。。。。。。


三、怎么用?



1、创建视图后,使用时和使用表一样。


Create View <视图名>(<列表序列>)
AS<SELECT 查询语句>


2、存储过程


     例如:机房收费系统中的充值操作,当进行充值操作时,要在充值表中添加一条充值记录,并更新卡表里的卡余额。


技术分享



3、触发器


    例如:机房收费系统中的退卡操作,当进行退卡操作时,要在退卡表里更新一条记录,并在卡表里删除对应的卡。

技术分享

四、总结

     上面的两张图是从师傅博客总截的图。视图用过了,触发器和存储过程还没有使用。虽然触发器和存储过程有这么多优点,但我们要慎用,拒绝滥用。

【机房重构】——视图,触发器,存储过程的使用

标签:机房重构   存储过程   触发器   视图   

原文地址:http://blog.csdn.net/luckystar689/article/details/45459431

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!