范式,存储过程,索引,触发器

[size=medium][color=green]很长时间没写错误总结及心得了。昨天思考了一番,觉得自己和数据库还是蛮有渊缘的,从做网站到Android上电话簿的开发,一直都没有离开过数据库的使用,虽然数据库这块我充其量是熟悉,但一个人的潜能是可以无限挖掘的,所以我决定以后主要突击嵌入式系统上的数据库应用。
今天温习了数据库中几个比较重要的概念:范式,存储过程,索引,触发器。在学校的时候只是对这几个概念了解了一些皮毛,并没有深入的去学习,以为没什么用武之地,实则是自己肤浅的很帅。

1: 范式
第一范式:数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。简而言之,第一范式就是无重复的列。

第二范式:要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。简而言之,第二范式就是非主属性非部分依赖于主关键字。

第三范式:要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。不存在传递依赖关系。

2: 存储过程:
将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。
存储过程的优点:
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
3.存储过程可以重复使用,可减少数据库开发人员的工作量。
4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权。

3: 索引(注:以SQL Server为例)
正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。
事实上,我们可以通过前面聚集索引和非聚集索引的定义的例子来理解。如:返回某范围内的数据一项。比如您的某个表有一个时间列,恰好您把聚合索引建立在了该列,这时您查询2004年1月1日至2004年10月1日之间的全部数据时,这个速度就将是很快的,因为您的这本字典正文是按日期进行排序的,聚类索引只需要找到要检索的所有数据中的开头和结尾数据即可;而不像非聚集索引,必须先查到目录中查到每一项数据对应的页码,然后再根据页码查到具体内容。

4: 触发器
触发器是一个特殊的存储过程。常见的触发器有三种:分别应用于Insert , Update , Delete 事件。
理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。
一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是:
虚拟表Inserted 虚拟表Deleted
在表记录新增时 存放新增的记录 不存储记录
修改时 存放用来更新的新记录 存放更新前的记录
删除时 不存储记录 存放被删除的记录


[/color][/size]

你可能感兴趣的:(数据库)