SQL Server 面面观——数据库对象
SQL Server 2008包含许多对象,主要的数据库对象有:数据库、事务日志、表、模式、文件组、图表、视图、存储过程、用户自定义函数、用户和角色、规则、默认值、用户自定义数据类型、全文目录。
一、数据库对象
在SQL Server中,数据库服务器本身可以看作一个对象,大部分其他对象(但不是所有)为数据库对象的子对象。数据库通常至少包括一组表对象,一般也包括其他一些对象,如存储过程和视图。存储过程和视图与保存在数据库表中的数据相关。
二、事务日志
日志是SQL Server中最可能引起误解的一个对象。尽管数据要从数据库文件读取,但任意数据库的更改最初不在数据库中,而是被连续写入事务日志(transaction log)中。在随后的某个时间点上,数据库发出检查点(checkpoint);也正是在该时间点,日志中所有的更改才被传送到实际的数据库文件中。
三、表
表无疑是最重要的的数据库对象,由域对象(列)和实体数据(行)组成。数据库中的实际数据都存储在表中。每个表的定义也包含了描述表中包含数据的类型的元数据。每一列具有该列可存储什么数据类型的一组规则。表中任一列中的数据违反了规则,系统就会拒绝插入一行,或拒绝对已有行进行更新,或者禁止删除行。
表可以有与之关联的附加对象——这些对象只在特定表的结构中存在。下面来分别看看这些对象。
1> 索引
索引是仅在特定表或视图架构内存在的对象。索引的功能非常类似于书中的目录。索引中有以某一特定方式排序的查找值,使用索引是快速查找数据库中实际信息的一种方法。索引分为以下两类:
聚集索引——每个表只能有一个聚集索引,表按照其索引进行物理排序。如果为一本书做索引,则聚集索引是书的页码,按页码顺序保存书中的信息。
非聚集索引——每个表可以有多个非聚集索引。对于一本书而言,非聚集索引指的是书后面的关键字目录
2> 触发器
触发器是存在于表架构内的对象,是在表操作时自动执行的一段逻辑代码。主要用于在插入时复制数据或更新时检查数据,确保满足相应条件。
3> 约束
约束时仅在表的范围中存在的另一对象,用于限制表中数据满足某种条件,在某些方面类似于触发器,尽可能解决数据完整性问题。
四、模式
模式(schema)为数据库和其所包含的其它对象之间提供了中间名称空间。任意数据库的默认模式都是dbo。每个用户都有一个默认模式,SQL Server将自动在用户的默认模式中搜索对象。如果对象所在的名称空间非用户默认的,必须以<schema name>.<object name>形式来引用对象
五、文件组
默认情况下,数据库中所有的表及其它对象(日志除外)要存储在一个文件中,该文件是一些主要文件组的成员。文件组的概念主要用于以类似分段的形式管理数据的物理存储。
六、图表
数据库图表是数据库设计的可视化表示,包括了各种表、每一张表的列名以及表之间的关系。在ERD中,数据库被分为实体和关系两部分。
七、视图
视图是一种虚拟表,除了本身不包含数外,其使用基本与表的使用类似。视图仅仅是存储在表中的数据的预先设计好的映射和表示。视图以查询形式存储在数据库中,这种查询需要从一个或多个表中获取满足特定标准的一些列数据。对于视图而言,有安全和易于使用的优势。使用视图可以控制用户有权查看的内容,可以裁剪视图使得用户不必搜索所有不必要的信息。
八、存储过程
存储过程是SQL Server编程功能的基础,通常是组成一个逻辑单元的T-SQL语句的有序集合,允许使用变量和参数,也可使用选择和循环结构。其具有以下优势:
1.存储在数据库服务器端,减少调用T-SQL所要的网络流量
2.预先优化和预编译,缩短T-SQL运行时间
3.基于安全原因,或从简化数据库的复杂性方面出发,将过程封装
4.可从其它存储过程调用,使得它们在一定意义上重用
九、用户自定义函数
用户自定义函数(UDF)与存储过程类似,不同之处在以下几点:
???? 返回值的数据类型包括大部分SQL Server数据类型,不包括的返回类型是:text、ntext、image、cursor和timestamp
没有副作用,即UDF不能完成在其范围之外的功能,如更改表或更改系统和数据库参数
UDF可以返回一种特殊的数据类型——表
十、用户和角色
用户和角色关系密切。用户对象表示登录到SQL Server的用户标识符,登录的任何人都直接或间接映射到一个用户,映射方式取决于使用的安全模型。用户属于一个或多个角色,SQL Server可以直接赋予用户或角色执行某种操作的权限,一个或多个用户可属于同一角色
十一、规则
规则和约束都是限制插入到表中的数据类型的信息。如果更新或插入记录违反规则,则操作被拒绝。此外,规则可用于定义用户自定义数据类型上的限制。于规则不同,约束本身不是实际对象,只是描述特定表的元数据片段。
十二、默认值
SQL Server中有两种类型的默认值,包括对象本身的默认值,以及描述表中特定列的元数据的默认值(非真正对象)。当插入一条对象时,如果没有提供该列的值,且该列具有默认值,则自动插入默认值。
十三、用户自定义数据类型
用户自定义数据类型是系统定义数据类型的扩展,自2005后,可以将.NET程序集绑定到自己的数据类型上,即能定义一种数据类型,用于在合理范围内存储.NET对象可以存储的任意内容。
十四、全文目录
全文目录是数据映射,用于加速对启用了全文搜索功能的列中特定文本块的搜索。尽管这些对象与映射的表和列关系紧密,但它们还是单独的对象,当数据库发生改变时,它们不一定会自动更新 ?
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。