表头是六个属性:学号、姓名、性别、年龄、系名、年级。属性下面的每一行,称为一个元组。这个例子给出了四个具体的元组,其他的元组都省略了,每个元组对应了一个学生的信息。第1个元组对应了学号为96001的学生,学生姓名是“王鹏”,系名是“计算机”;第2个元组对应了学号为96005的学生,姓名是“张志芳”,系名是“国际金融”。
如果根据关系中的某个属性或属性集能惟一确定一个元组,则把这个属性(集)称为关系的键码。在上面的例子中规定,在为学生编排学号时,不同学生的学号是唯一的,那么可以根据学号这个属性惟一确定一个元组。例如给出学号“94034”,就能确定这是学生张勇的记录,因此学号是“学生信息登记表”关系的键码。反之,不可避免会出现至少有两个学生姓名可能重名,因此“姓名”这个属性就不能成为“学生信息登记表”关系的键码。
属性是有一定的取值范围的。上例中可以规定年龄的取值范围是14—38之间的整数;性别的取值只能是“男”或“女”等。属性的取值范围又叫做属性的域。
2.关系模型
关系数据库中的数据以“关系”的形式表示,也就是以二维表的形式表示,其数据模型就是所谓的关系模型。在关系模型中,无论是从客观事物中抽象出的实体,还是实体之间的联系,都用单一的结构类型——关系来表示。在对关系进行各种处理之后,得到的还是关系——一张新的二维表。由于关系模型中数据结构简单清晰,概念单一,易学易用,深受用户喜爱。
关系模型是目前最重要的一种数据模型。关系数据库系统采用关系模型作为数据的组织方式。1970年美国IBM公司SanJose研究室的研究员E.F.Codd首次提出了数据库系统的关系模型,开创了数据库关系方法和关系数据理论的研究,为数据库技术奠定了理论基础。由于E.F.Codd的杰出工作,他于1981年获得ACM图灵奖。20世纪80年代以来,计算机厂商新推出的数据库管理系统几乎都支持关系模型,非关系系统的产品也大都加上了关系接口。数据库领域当前的研究工作也都是以关系方法为墓础。关系模型与以往的模型不同,它是建立在严格的数学概念的基础上的。在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。模型中的相关概念如下:
元组:表中的一行即为一个元组;
属性:表中的一列即为一个属性,给每一个属性起一个名称即属性名。如上表有六列,对应六个属性(学号、姓名、性别、年龄、系名、年级);
主码:表中的某个属性组,它可以唯一确定一个元组,上表中的学号,可以唯一确定一个学生,也就成为本关系的主码;
域:属性的取值范围,如人的年龄一般在1—150岁之间,大学生年龄属性的域是14—38岁之间,性别的域是(男,女),系别的域是一个学校所有系名的集合;
分量:元组中的一个属性值;
关系模式:对关系的描述,一般表示为:
关系名(属性1,属性2,…属性n)
//例如上面的关系可描述为:
学生(学号,姓名,性别,年龄,系名,年级)
在关系模型中,实体以及实体间的联系都是用关系来表示。例如学生、课程、学生与课程之间的多对多联系在关系模型中可以如下表示:
学生(学号,姓名,性别,年龄,系名,年级)
课程(课程号,课程名,学分)
选修(学号,课程号,成绩)
关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件,这些规范条件中最基本的一条就是,关系的每一个分项必须是一个不可分的数据项,也就是说,不允许表中还有表。
关系数据模型的操作主要包括查询、插入、删除和修改数据。这些操作必须满足关系的完整性约束条件。关系的完整性约束条件包括三大类:实体完整性、参照完整性和用户定义的完整性。关系模型中的数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合,而不像非关系模型中那样是单记录的操作方式。另一方面,关系模型把存取路径向用户隐蔽起来,用户只要指出“干什么”或“找什么”,不必详细说明“怎么干”或“怎么找”,从而大大地提高了数据的独立性,提高了用户生产率。
关系数据模型具有下列优点:
·关系模型与非关系模型不同,它是建立在严格的数学概念的基础上的。
·关系模型的概念单一无论实体还是实体之间的联系都用关系表示。对数据的检索结果也是关系(即表)。所以其数据结构简单、清晰,用户易懂易用。
·关系模型的存取路径对用户透明,从而具有更高的戮据独立性、更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作。
3.关系数据库系统
关系数据库系统就是以关系模型为基础的数据库系统。由于关系模型有严格的数学基础,而且简单清晰,便于理解和使用。因此,关系数据库系统推出以后,迅速得到推广应用,目前已在数据库系统中占统治地位。国外大公司推出的关系数据库产品主要有:微软公司的Access,MS SQL Server,Oracle公司的Oracle,IBM公司的DB2 Universal Database等。
Access数据库
美国Microsoft公司于1994年推出的微机数据库管理系统。它具有界面友好、易学易用、开发简单、接口灵活等特点,是典型的新一代桌面数据库管理系统。其主要特点如下:
(1)完善地管理各种数据库对象,具有强大的数据组织、用户管理、安全检查等功能。
(2)强大的数据处理功能,在一个工作组级别的网络环境中,使用Access开发的多用户数据库管理系统具有传统的XBASE(DBASE、FoxBASE的统称)数据库系统所无法实现的客户服务器(Client/Server)结构和相应的数据库安全机制,Access具备了许多先进的大型数据库管理系统所具备的特征,如事务处理/出错回滚能力等。
(3)可以方便地生成各种数据对象,利用存储的数据建立窗体和报表,可视性好。
(4)作为Office套件的一部分,可以与Office集成,实现无缝连接。
(5)能够利用Web检索和发布数据,实现与Internet的连接。Access主要适用于中小型应用系统,或作为客户机/服务器系统中的客户端数据库。
SQL Server数据库
美国Microsoft公司推出的一种关系型数据库系统。SQL Server是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与Windows NT的有机结合,提供了基于事务的企业级信息管理系统方案。
其主要特点如下:
(1)高性能设计,可充分利用WindowsNT的优势。
(2)系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。
(3)强大的事务处理功能,采用各种方法保证数据的完整性。
(4)支持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。SQL Server以其内置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台。
Oracle数据库
美国Oracle公司研制的一种关系型数据库管理系统,是一个协调服务器和用于支持任务决定型应用程序的开放型RDBMS。它可以支持多种不同的硬件和操作系统平台,从台式机到大型和超级计算机,为各种硬件结构提供高度的可伸缩性,支持对称多处理器、群集多处理器、大规模处理器等,并提供广泛的国际语言支持。Oracle是一个多用户系统,能自动从批处理或在线环境的系统故障中恢复运行。系统提供了一个完整的软件开发工具Developer2000,包括交互式应用程序生成器、报表打印软件、字处理软件以及集中式数据字典,用户可以利用这些工具生成自己的应用程序。Oracle以二维表的形式表示数据,并提供了SQL(结构式查询语言),可完成数据查询、操作、定义和控制等基本数据库管理功能。Oracle具有很好的可移植性,通过它的通信功能,微型计算机上的程序可以同小型乃至大型计算机上的Oracle,并且能相互传递数据。另外Oracle还具有与C语言的接电子表格、图形处理等软件。Oracle属于大型数据库系统,主要适用于大、中小型应用系统,或作为客户机/服务器系统中服务器端的数据库系统。
DB2数据库
IBM公司研制的一种关系型数据库系统。DB2主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于OS/2、Windows等平台下。DB2提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和SQL命令。DB2采用了数据分级技术,能够使大型机数据很方便地下载到LAN数据库服务器,使得客户机/服务器用户和基于LAN的应用程序可以访问大型机数据,并使数据库本地化及远程连接透明化。它以拥有一个非常完备的查询优化器而著称,其外部连接改善了查询性能,并支持多任务并行查询。DB2具有很好的网络支持能力,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤为适用。
3节中间件技术
【1】中间件概述
1.中间件产生的背景
计算机技术迅速发展。从硬件技术看,CPU速度越来越高,处理能力越来越强;从软件技术看,应用程序的规模不断扩大,特别是Internet及WWW的出现,使计算机的应用范围更为广阔,许多应用程序需在网络环境的异构平台上运行。这一切都对新一代的软件开发提出了新的需求。在这种分布异构环境中,通常存在多种硬件系统平台(如PC,工作站,小型机等),在这些硬件平台上又存在各种各样的系统软件(如不同的操作系统、数据库、语言编译器等),以及多种风格各异的用户界面,这些硬件系统平台还可能采用不同的网络协议和网络体系结构连接。如何把这些系统集成起来并开发出新的应用是一个非常现实而困难的问题。为解决分布异构问题,人们提出了中间件的概念。
随着电子政务的发展,以及各级政府之间互通整合的需要,使得我们必须关注系统的伸缩性和可扩展性。而中间件可以支持跨平台操作,为不同操作系统上的应用软件集成提供方便,从而满足政府机关对系统伸缩性和可扩展性的要求。由于以上因素的作用,中间件己经成为企业应用的“新宠”,在各个领域中的整合各种异构平台方面,表现出了超强的能力。总而言之,中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。
其次,中间件作为新层次的基础软件,其重要作用是将不同时期、在不同操作系统上开发的应用软件集成起来,彼此像一个天衣无缝的整体协调工作,这是操作系统、数据库管理系统本身做不了的。中间件的这一作用,使得在技术不断更新的情况下,我们以往在过去技术上编辑的应用软件仍然物有所用,使新旧系统彼此兼容,从而节约了大量的人力、财力投入。
经过十几年的发展,已出现应用服务器中间件、消息中间件、对象中间件、数据访问中间件等多种中间件类型,成为设计分布式系统时不可缺少的基础软件。现在,中间件己经成为一项软件核心技术,中间件并同操作系统、数据库一起并称为三大基础软件,几乎所有的软件新技术都与之有关。
2.中间件的定义
中间件,英文名称是Middleware,这个名词是IBM公司于1994年提出的,是基础软件的一大类,属于可复用软件的范畴。在众多关于中间件的定义中,比较普遍被接受的是国际数据公司IDC表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件是位于客户机或服务器的操作系统之上,管理计算资源和网络通信。
IDC对中间件的定义表明,中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。对于应用软件开发来说,中间件远比操作系统和网络服务更为重要。中间件提供的程序接口定义了一个相对稳定的高层应用环境,不管底层计算机硬件和系统软件如何更新换代,只要将中间件更新,并保持中间件对外的接口不变,应用软件几乎就不需任何改动,从而保护了应用软件开发和维护重大投资。
从软件系统的角度来看,中间件是处于应用软件和系统软件之间的一类软件。它主要是在分布式系统中用来帮助管理各种复杂的异构的成分,并且提供了一个贯穿于分布式系统中的通用的应用抽象。与操作系统提供的应用程序接口相比,中间件提供的是一种更高层的应用抽象,而且中间件的使用,很明显地减少了应用程序的负担。中间件框架的实施可以掩盖分布式系统中必须处理的各种异构问题,与在一个没有操作系统的裸机上进行编程的困难程度相比,不使用中间件而去设计和实施一个分布式系统将更为困难,尤其是在异构操作系统的环境中。
3.中间件的特点
中间件屏蔽了底层操作系统,使程序开发人员使用一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。具体来说,中间件作为新层次的基础软件,具有如下的一些特点:
(1)易于集成
中间件能无缝地接入应用开发环境中,应用程序可以很容易地定位和共享中间件提供的应用逻辑和数据。
(2)易于移植
中间件与平台有关的细节对于应用程序是透明的,因此可以在不改变应用程序代码的情况下改换计算机底层硬件、操作系统和通信协议。
(3)易于升级和维护
中间件实现的功能对于应用程序是透明的,所以可以对局部进行改进而不影响系统的其他部分。
(4)高可靠性
中间件是可靠的,它提供接管和恢复功能,保证事务及关键性业务不被丢失。
(5)易于使用
中间件能和同构或者异构环境下的多种数据源通信,同时能管理数据间的公共逻辑约束。
4.中间件的分类