Sybase数据库在UNIX、Windows上的实施和管理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 ASE是关系型数据库

ASE是典型的关系数据库系统,用于存储数据和数据管理。在这个系统中,数据以二维表的方式存在。一套数据库系统,就是由这样的一系列存储相关数据的表构成的一个逻辑集合。在数据库中,最主要的数据库对象是表,在表的基础上,还有其他的数据库对象:数据库视图、表的索引、表的触发器、数据库存储过程等。如图1-1所示,在数据库中,数据库表即为核心。

图1-1 数据库中用表来表述业务实体

显然,对于一个有意义的数据库系统而言,通过定义多个表,在每个表中存放属于不同类型信息的数据,例如图1-2中的authors表和titleauthors表。authors表存放着“作者”的相关信息,titleauthors表则记载了作者的“作品”数据。在这两个表(实体)中,一个作者会有对应的若干作品,每个“作品”必定会有某个(或某几个)作者与其对应。这样类似的多种关系同时存在数据库中,构成了数据库实体关系的网络图。

图1-2 数据库中的各个表存在着关系,关系也是业务上关联的体现

显然,对于一套应用系统来说,几百个、几千个表可能是需要的。每个表代表着一个有着某种意义的实体,例如,表authors包含了有关作者的信息,表中的每行数据对应一个作者的信息(也称一条记录),而表的列则代表了实体的属性,例如authors表的phone列描述“作者”这个实体的“电话”属性。

这些表通过“关系”进行了连接。在数据库中,这往往就是所谓的主键、外部键所代表的相关完整性。还是以作者和作品为例,一个作品必须依赖(参照)作者,一个作者可能会有很多作品——这就是图1-2中1:N关系的由来!

数据库中会有一种特殊对象,称为视图。视图就是一个“虚表”,它由其他若干表或视图,在视图被访问时动态组合而成。因此,视图是一个“虚表”,在数据库中并不真正存在,仅是逻辑定义而已,如图1-3所示。

图1-3 视图是一个虚表,其数据并不真正存在

索引是表的一部分。索引是数据库表的某列,独立出来单独存储而成的一种数据库对象,一个小型化的表,用来帮助ASE快速定位要查找的数据。显然,索引可以做到提升查询速度的作用。简单地说,索引类似于书的目录,存储着书的关键字,并指向了这个关键字在书中的位置。如图1-4所示,通过索引的指向,我们可以快速找到所需数据,避免大范围全表扫描操作。

图1-4 通过索引可以快速找到数据

定义索引是一种典型的提高数据库查询效率的重要方法,是性能工程师和数据库设计者、程序员所必备的技术修养和实施手段。

我们常说的可编程数据库,其“可编程”往往体现在数据库存储过程的创建上。存储过程是存储在数据库中的一组已被编译的命令集合,在创建时已经预编译和内部优化,一般都具有较高的执行速度(相比于独立执行这些命令)。存储过程的另外一种表现是函数——带有返回值的过程,即函数。

Sybase ASE和Microsoft SQL Server都大量使用了系统所提供的存储过程来简化系统管理任务,这些存储过程成为系统存储过程,随软件一起安装,自动生成。

还有一种特殊的外部存储过程,一般用C/C++编写,注册在数据库中使用,称为扩展的存储过程(Extended Stored Procedure,ESP)。这种存储过程的代码由过程性语言构成,往往也内嵌了SQL,是数据库扩展其功能的方式。

触发器是一种特殊类型的存储过程,当用户修改、删除或插入数据时,这种特殊的存储过程会自动地触发执行。触发器究竟何时会触发执行取决于触发器的定义。触发器是建立在表或表中的列上的。例如,可以通过定义触发器复制数据来提高决策支持的查询速度。当数据被修改、插入、删除之后,触发器会自动把这些动作复制到另外的系统上。对这些复制的数据进行决策支持的操作是不会影响业务处理速度的。触发器另外的典型应用是实现表之间的参照完整性。

数据库对象之间的关系如图1-5所示。

图1-5 关系数据库中的常见对象

SQL是一种结构化的查询语言,通过这种语言可以定义数据库中的对象并操作数据库中的数据,对数据库对象和数据的操作权限提供控制的手段。

Transact-SQL简称T-SQL,是Sybase ASE产品中使用的扩充后的SQL。T-SQL不仅提供了标准SQL具有的数据定义、数据查询、数据操纵和数据控制功能,还通过程序的流程控制,提供了数据库的可编程能力,可用于定义体现应用逻辑的存储过程和触发器。T-SQL的扩展,使SQL这种面向问题的语言具有了面向过程的能力。

在ASE中,T-SQL的最佳表现形式就是存储过程。通过存储过程,我们可以把应用逻辑创建在ASE服务器上。

Sybase的另外一种数据库产品SQL Anywhere(该产品适用于小规模数据库应用、移动数据库应用情况,目前主流版本为SQL Anywhere 11)中也可以部署T-SQL应用,在可以预见的未来,T-SQL将成为所有Sybase数据库产品的共同服务语言。

下面给出了ASE数据库系统的大致工作原理图,如图1-6所示。

图1-6 ASE数据库系统的工作原理图

从图1-6中可以看出,ASE数据库的运行需要下面的要素:

用户会话管理,用于处理用户、连接和事务;

语言服务,用于接受客户发送来的SQL请求;

数据库SQL处理程序,用于解析、执行SQL和T-SQL语句;

数据存储管理程序,将数据存储在存储结构上,需要时能够存取数据和修改数据。

Sybase ASE就是这样的一套对象关系型数据库系统。