1、中级软件设计师下午试题-83 及答案解析(总分:105.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)【说明】某图书馆管理系统的主要功能是图书管理和信息查询。对于初次借书的读者,系统自动生成读者号,并与读者基本信息(姓名、单位、地址等)一起写入读者文件。系统的图书管理功能分为四个方面:购入新书、读者借书、读者还书以及图书注销。(1)购入新书时需要为该书编制入库单。入库单内容包括图书分类目录号、书名、作者、价格、数量和购书日期,将这些信息写入图书目录文件并修改文件中的库存总量(表示到目前为止,购入此种图书的数量)。(2)读者借书时需填写借书单。借书单内容包括读者号和所借图
2、书分类目录号。系统首先检查该读者号是否有效,若无效,则拒绝借书;若有效,则进一步检查该读者已借图书是否超过最大限制数(假设每位读者能同时借阅的书不超过 5 本)。若已达到最大限制数,则拒绝借书;否则允许借书,同时将图书分类目录号、读者号和借阅日期等信息写入借书文件中。(3)读者还书时需填写还书单。系统根据读者号和图书分类目录号,从借书文件中读出与该图书相关的借阅记录,标明还书日期,再写回到借书文件中。若图书逾期,则处以相应的罚款。(4)注销图书时,需填写注销单并修改图书目录文件中的库存总量。系统的信息查询功能主要包括读者信息查询和图书信息查询。其中读者信息查询可得到读者的基本信息以及读者借阅图
3、书的情况;图书信息查询可得到图书基本信息和图书的借出情况。图书管理系统的顶层图如图 13-5 所示;图书管理系统的第 0 层 DFD 图如图 13-6 所示,其中加工 2 的细化图如图 13-7 所示。 (分数:15.00)(1).【问题 1】数据流图 13-6 中有两条数据流是错误的,请指出这两条数据流的起点和终点。(分数:5.00)_(2).【问题 2】数据流图 13-7 中缺少三条数据流,请指出这三条数据流的起点和终点。(分数:5.00)_(3).【问题 3】根据系统功能和数据流图填充下列数据字典条目中的(1)和(2):查询请求信息=查询读者请求信息查询图书请求信息读者情况=读者号+姓名
4、+所在单位+借书情况(分数:5.00)_二、试题二(总题数:1,分数:15.00)【说明】某电话公司决定开发一个管理所有客户信息的交互式网络系统。系统功能如下。(1)浏览客户信息:任何使用 Internet 的网络用户都可以浏览电话公司所有的客户信息(包括姓名、住址、电话号码等)。(2)登录:电话公司授予每个客户一个帐号。拥有授权帐号的客户,可以使用系统提供的页面设置个人密码,并使用该帐号和密码向系统注册。(3)修改个人信息:客户向系统注册后,可以发送电子邮件或者使用系统提供的页面,对个人信息进行修改。(4)删除客户信息:只有公司的管理人员才能删除不再接受公司服务的客户的信息。系统采用面向对象
5、方法进行开发,在开发过程中认定出的类见表 13-3。表 13-3 开发过程中认定的类编号 类名 描述1 InternetClient 网络用户2 CustomerList 客户信息表,记录公司所有客户的信 息3 Customer 客户信息,记录单个客户的信息4 CompantCustomer 公司客户5 InternalClient 公司的管理人员(分数:15.00)(1).【问题 1】在需求分析阶段,采用 UML 的用例图(use case diagram)描述系统功能需求,如图 13-8 所示。请指出图中的 A、B、C 和 D 分别是哪个用例?(分数:5.00)_(2).【问题 2】请指出
6、图 13-9 中(1)(4)处的重复度分别为多少?(分数:5.00)_(3).【问题 3】类通常不会单独存在,因此当对系统建模时,不仅要识别出类,还必须对类之间的相互关系建模。在面向对象建模中提供了 4 种关系:依赖(dependency)、概括(generalization )、关联(association)和聚集(aggregation)。请分别说明这 4 种关系的含义,并说明关联和聚集之间的主要区别。 (分数:5.00)_三、试题三(总题数:1,分数:15.00)【说明】现有事务 T1,T 2、L 3它们对数值型数据 A 执行的操作分别如下:T1;将 A 加 1。T2:将 A 加倍。T3
7、:输出 A 的值,并将 A 置为 1。(分数:15.00)(1).【问题 1】假设 T1、T 2、T 3可以并发执行。若 A 的初值为 0,那么存在多少种可能的正确结果?(分数:5.00)_(2).【问题 2】各个事务内部的结构如表 13-4 所示,若事务执行不施加任何锁,则有多少种不同的调度方式?写出简要的计算过程。表 13-4 各个事务内部的结构(分数:5.00)_(3).【问题 3】在 A 的初值给定为 0 时,是否存在能够产生正确结果,而且又是不可串行化的调度?若有请举例说明。(分数:5.00)_四、试题四(总题数:1,分数:15.00)【说明】Web 页面与数据库的连接是 Web 数
8、据库的基本要求。目前基于 Web 数据库的连接方案主要有服务器端方案和客户端方案两种类型。服务器端方案的实现技术有 ASP 等,客户端方案的实现技术有 JDBC、DHTML 等。其中,ASP 是微软开发的脚本语言技术,嵌入在 IIS 中,因此,ASP 成为大部分用户的首选脚本语言。图13-10 给出了 ASP 的工作原理。(分数:15.00)(1).【问题 1】ASP 属于服务器端方案还是客户端方案?ASP 的工作原理图中(1)、(2)应是什么?(分数:5.00)_(2).【问题 2】请至少写出 ASP 的 5 个特点。(分数:5.00)_(3).【问题 3】请至少写出 4 种服务器端实现技术
9、。 (分数:5.00)_五、试题五(总题数:1,分数:15.00)1.【说明】软件设计师东方飞龙利用 UML 设计了一个迷你小型复数类,其类图如图 13-11 所示。 (分数:15.00)_六、试题六(总题数:1,分数:15.00)2.【说明】某绘图系统存在 point、line、square 三种图元,它们具有 Shape 接口,图元的类图关系如图 13-12 所示。现要将 circle 图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了 XCircle 类,且完全满足系统新增的 Circle 图元所需的功能,但 XCircle 不是由 Shape 派生而来的,它提供的接口不能被系统
10、直接使用。代码 13-2 既使用了 XCircle 又遵循了 Shape 规定的接口,既避免了从头开发一个新的 Circle类,又可以不修改绘图系统中已经定义的接口。代码 13-3 根据用户指定的参数生成特定的图元实例,并对之进行显示操作。绘图系统定义的接口与 XCircle 提供的显示接口及其功能如表 13-5 所示。表 13-5 接口及其功能Shape XCircle 功能display() DisplayIt() 显示图元【代码 13-2】class Circle (1) private (2) pxc;public Circle()pxc=new (3) ;public void di
11、splay()pxc. (4) ;【代码 13-3】public class Factorypublic (5) getShape Instance(int tyoe) /生成特定类实例switch(type)case 0: return new point();case 1: return new Rectangle();case 2: return new line();case 3: return new Circle();default: return null;public class Apppublic static viod main(String argv )if(argv.
12、length!=1)system. out. println(“error parameters!“);Return;int type=(new Integer(argv0 (分数:15.00)_七、试题七(总题数:1,分数:15.00)3.【说明】在一公文处理系统中,开发者定义了一个公文结构 OfficeDoc,其中定义了公文应该具有的属性。当公文的内容或状态发生变化时,与之相关联的 DocExplorer 结构的值都需要发生改变。一个 OfficeDoc 结构能够关联一组 DocExplorer 结构。当 OfficeDoc 结构的内容或状态发生变化时,所有与之相关联的DocExplore
13、r 结构都将被更新,这种应用被称为观察者模式。以下代码采用 C 语言实现,能够正确编译通过。【代码 13-4】# includestdio.h# define OBS_MAXNUM 20 /*一个 OfficeDoc 变量最多能够关联的 DocExplorer 变量的个数*/typedef void( (1) )(struc OffieeDoc*, struct DoeExplorer*)I;struct DocExplorerfunc update;/*DocExplorer 结构采用的更新函数*/*其它的结构字段省略*/;struet OffieeDoc(2) myObsOBS_MAXNU
14、M ;/*存储所有与 OfficeDoc 相关联的 DocExplorer 结构指针*/int index;/*与 OffieeDoc 结构变量相关联的 DoeExplorer 结构变量的个数*/;void attaeh(struct OfficeDoc*doc, struct DocExplorer*ob)/*关联 Observer 结构 ob 与 OffieeDoe 结构 doe*/int loop=0;if(doc-index=OBS_MAXNUMob=NULL)return;for(loop=0, loopdoc-index; loop+)if(doc-myObsloop=ob)ret
15、urn;doc-myObsdoe-index=ob;doc-index+;void detaeh(struct OfficeDoc*doc, struct DocExplorer*ob)/*解除 doc 结构与 ob 结构间的关联*/int loop;if(ob=NULL)return;for(loop=0;loopdoc-index; loop+)if(doe-myObsloop=ob)if(loop=doc-index-2)doc-myObsloop=doc-myObs (3) ;doc-myObsdoc-index-1=NULL;doc-index;breack;void updatel
16、(struct OfficeDoe*doe, struct DoeExplorer *ob)/*更新 ob 结构的值,更新代码省略*/void update2(struct OffieeDoc*doc,struet DocExplorer *ob)/*更新 ob 结构的值,更新代码省略*/void notifyObs(struct OfficeDoc* doc)/*当 doc 结构的值发生变化时,通知与之关联的所有 DocExplorer 结构变量*/int loop;for(loop=0; loopdoc-index; loop+)(doc-myObsloop (分数:15.00)_中级软件
17、设计师下午试题-83 答案解析(总分:105.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)【说明】某图书馆管理系统的主要功能是图书管理和信息查询。对于初次借书的读者,系统自动生成读者号,并与读者基本信息(姓名、单位、地址等)一起写入读者文件。系统的图书管理功能分为四个方面:购入新书、读者借书、读者还书以及图书注销。(1)购入新书时需要为该书编制入库单。入库单内容包括图书分类目录号、书名、作者、价格、数量和购书日期,将这些信息写入图书目录文件并修改文件中的库存总量(表示到目前为止,购入此种图书的数量)。(2)读者借书时需填写借书单。借书单内容包括读者号和所借图书分类目录
18、号。系统首先检查该读者号是否有效,若无效,则拒绝借书;若有效,则进一步检查该读者已借图书是否超过最大限制数(假设每位读者能同时借阅的书不超过 5 本)。若已达到最大限制数,则拒绝借书;否则允许借书,同时将图书分类目录号、读者号和借阅日期等信息写入借书文件中。(3)读者还书时需填写还书单。系统根据读者号和图书分类目录号,从借书文件中读出与该图书相关的借阅记录,标明还书日期,再写回到借书文件中。若图书逾期,则处以相应的罚款。(4)注销图书时,需填写注销单并修改图书目录文件中的库存总量。系统的信息查询功能主要包括读者信息查询和图书信息查询。其中读者信息查询可得到读者的基本信息以及读者借阅图书的情况;
19、图书信息查询可得到图书基本信息和图书的借出情况。图书管理系统的顶层图如图 13-5 所示;图书管理系统的第 0 层 DFD 图如图 13-6 所示,其中加工 2 的细化图如图 13-7 所示。 (分数:15.00)(1).【问题 1】数据流图 13-6 中有两条数据流是错误的,请指出这两条数据流的起点和终点。(分数:5.00)_正确答案:(1)“2 处理查询请求”到“读者文件”的数据流;(2)从“读者文件”到“3 登记读者信息”的数据流。)解析:(2).【问题 2】数据流图 13-7 中缺少三条数据流,请指出这三条数据流的起点和终点。(分数:5.00)_正确答案:(1)从“借书文件”到“2.1
20、 读者信息查询”的数据流;(2)从“借书文件”到“2.2 图书信息查询”的数据流;(3)从“图书目录文件”到“2.2 图书信息查询”的数据流。)解析:(3).【问题 3】根据系统功能和数据流图填充下列数据字典条目中的(1)和(2):查询请求信息=查询读者请求信息查询图书请求信息读者情况=读者号+姓名+所在单位+借书情况(分数:5.00)_正确答案:(1)入库单借书单还书单注销单;(2)分类目录号+书名+作者+价格+数量+购书日期。)解析:以前的考题,往往只是简单地抽掉了一些子图的输入/输出数据流让考生补充,题型过于简单,只要知道了上面的规则,就很容易解答。但在此题中有了一定的变化。不过我们还是
21、要用到上面的规则,把0 层图中的输入/输出数据流一条一条地与顶层图中的数据流进行对比。通过对比,我们发现顶层图中的“非法请求信息”数据流在 0 层图中没有对应的数据流,而 0 层图中多出了两个数据流:“非法管理工作请求单”和“非法查询请求信息”,这是不是就是问题 1 所指的两条错误数据流呢?答案不确定。因为从字面上和处理流程来看,“非法管理工作请求单”和“非法查询请求信息”都应属于“非法请求信息”,而且在分层数据流图中完全有可能把子图中的同类信息合并成一个。所以我们现在应该看 0 层图中的其它数据流是否有问题。现在就只剩下与“读者文件”相关的两个数据流了,图中的“2 处理查询请求”应要完成的功
22、能是查询出“图书情况”和“读者情况”(这一点可以从题干中的“系统的信息查询功能主要包括读者信息查询和图书信息查询”看出),这一过程要用到读者文件中的一些数据,所以应该从读者文件中取数据,但图中的数据流是从“2 处理查询请求”到“读者文件”,这种数据流的含义是把数据存入“读者文件”,这显然不正确。再来看另一条数据流:“读者文件”到“3 登记读者信息”的数据流,在“3 登记读者信息”完成的功能是把读者基本信息写入“读者文件”(这一点可以从题于中的“系统自动生成读者号,并与读者基本信息一起写入读者文件”看出)。所以图上的数据流方向不正确,应该是从“登记读者信息”到“读者文件”。所以问题 1 的答案是
23、:从“2 处理查询请求”到“读者文件”的数据流和从“读者文件”到“3 登记读者信息”的数据流。另:细心一点的考生应该会注意到加工 2 的细化图中的与读者文件关联的数据流方向与 0 层图不同,而加工 2 的细化图中只是缺少了数据流没有错误的数据流,由此也可以看出这条数据流有问题。用同样的方法来分析“加工 2 的细化图”,可以发现此图中的输入/输出数据流和 0 层图中“2 处理查询请求”的输入/输出数据流完全可以对应(除与“读者文件”相关联的那条外)。所以确定缺少的数据流是加工 2 的内部数据流。加工 2 的细化图中有两个文件是孤立的,没有数据流与之相联,这显然不合常理,所以我们看看题目中关于读者
24、信息查询和图书信息查询的描述:“系统的信息查询功能主要包括读者信息查询和图书信息查询。其中读者信息查询可得到读者的基本信息以及读者借阅图书的情况;图书信息查询可得到图书基本信息和图书的借出情况”。这样一来,就十分明显了,读者信息查询要用到“借书文件”,我们就加上一条从“借书文件”到“2.1 读者信息查询”的数据流。同理:有从“借书文件”到“2.2 图书信息查询”的数据流和从“图书目录文件”到“2.2 图书信息查询”的数据流。从系统的描述来看,系统的图书管理功能分为四个方面:购入新书、读者借书、读者还书以及图书注销。又因为购入新书时需要为该书编制入库单,读者借书时需填写借书单,读者还书时需填写还
25、书单,注销图书时需填写注销单并修改图书目录文件中的库存总量,所以(1)应填:入库单借书单还书单注销单。因为题目中明确提到:入库单内容包括图书分类目录号、书名、作者、价格、数量和购书日期,所以(2)应填:分类目录号+书名+作者+价格+数量+购书日期。二、试题二(总题数:1,分数:15.00)【说明】某电话公司决定开发一个管理所有客户信息的交互式网络系统。系统功能如下。(1)浏览客户信息:任何使用 Internet 的网络用户都可以浏览电话公司所有的客户信息(包括姓名、住址、电话号码等)。(2)登录:电话公司授予每个客户一个帐号。拥有授权帐号的客户,可以使用系统提供的页面设置个人密码,并使用该帐号
26、和密码向系统注册。(3)修改个人信息:客户向系统注册后,可以发送电子邮件或者使用系统提供的页面,对个人信息进行修改。(4)删除客户信息:只有公司的管理人员才能删除不再接受公司服务的客户的信息。系统采用面向对象方法进行开发,在开发过程中认定出的类见表 13-3。表 13-3 开发过程中认定的类编号 类名 描述1 InternetClient 网络用户2 CustomerList 客户信息表,记录公司所有客户的信息3 Customer 客户信息,记录单个客户的信息4 CompantCustomer 公司客户5 InternalClient 公司的管理人员(分数:15.00)(1).【问题 1】在需
27、求分析阶段,采用 UML 的用例图(use case diagram)描述系统功能需求,如图 13-8 所示。请指出图中的 A、B、C 和 D 分别是哪个用例?(分数:5.00)_正确答案:(A:浏览客户信息;B:修改个人信息;C:登录;D:删除客户信息。)解析:(2).【问题 2】请指出图 13-9 中(1)(4)处的重复度分别为多少?(分数:5.00)_正确答案:(1)1 (2)0* (3)01 (4)01)解析:(3).【问题 3】类通常不会单独存在,因此当对系统建模时,不仅要识别出类,还必须对类之间的相互关系建模。在面向对象建模中提供了 4 种关系:依赖(dependency)、概括(
28、generalization )、关联(association)和聚集(aggregation)。请分别说明这 4 种关系的含义,并说明关联和聚集之间的主要区别。 (分数:5.00)_正确答案:(依赖关系:有两个元素 A、B,如果元素 A 的变化会引起元素 B 的变化,则称元素 B 依赖于元素 A。概括关系:描述一般事物与该事物中的特殊种类之间的关系,也就是父类与子类之间的关系。关联关系:表示两个类的实例之间存在的某种语义上的联系。聚集关系:表示一种整体和部分的关系。聚集关系是关联关系的特例,它是传递和反对称的。)解析:图 13-8 是一个 UML 的用例图。在工程的分析阶段,用例图被用来鉴别
29、和划分系统功能,它们把系统分成动作者(actor)和用例。动作者(actor)表示系统用户能扮演的角色(role)。这些用户可能是人,可能是其他的计算机、一些硬件或者是其他软件系统。判断它们的唯一标准是它们必须要在被划分进用例的系统部分以外。它们必须能刺激系统部分,并接收返回。用例描述了当动作者之一被系统特定地刺激时系统的活动。这些活动用文本来描述,即描述了触发用例的刺激的本质,输入和输出到其他活动者,以及转换输入到输出的活动。用例文本通常也描述每一个活动在特殊的活动线时可能的错误和系统应采取的补救措施。图中的网络用户、公司客户、管理人员都是动作者。题目说明中提到了系统有 4 个功能:浏览客户
30、信息、登录、修改个人信息、删除客户信息。这也就是 4 个用例,我们现在只需把它们对号入座即可。根据题目说明,我们可以知道任何使用 Internet 的网络用户都可以浏览电话公司所有的客户信息,在图中符合这一条件的只有 A 了,所以 A 应填浏览客户信息。又因为只有公司的管理人员才能删除不再接受公司服务的客户的信息,所以 D 应填删除客户信息。剩下就只有登录和修改个人信息两个用例了,那么 B 究竟是填登录还是修改呢?我们先来看包含和扩展的概念。两个用例之间的关系可以主要概括为两种情况:一种是用于重用的包含关系,用构造型include表示;另一种是用于分离出不同行为的扩展关系,用构造型extend
31、表示。包含关系:如果可以从两个或两个以上的原始用例中提取公共行为,或者发现能够使用一个构件来实现某一个用例的部分功能是很重要的事,则应该使用包含关系来表示它们,如图 13-35 所示。*扩展关系:如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种事情,我们将这个用例分为一个主用例和一个或多个辅用例来描述可能更加清晰,如图 13-36 所示。*因为要先登录才能修改信息,所以 B 应填修改个人信息,C 应填登录。在 UML,中,重复度(Multiplicity)又称多重性,多重性表示为一个整数范围 nm,整数 n 定义所连接的最少对象的数目。而 m 则为最多对象数(当不知道确
32、切的最大数时,最大数用*号表示)。最常见的多重性有:01、0*、11、1*。因为一个 Customer List 的实例可以与 0 个或多个 Customer 的实例相关联,而一个 Customer 的实例只能与一个 CustomerList 的实例相关联,所以(1)应填 1,(2)应填 0*。因为 Customer 是CompanyCustomer 的相应的详细信息,所以(3)和(4)都应该填写 01。用 UML,建立业务模型时,可以把业务人员看做是系统中的角色或者类。在建立抽象模型时,很少有类会单独存在,大多数都将会以某种方式彼此通信,因此还需要描述这些类之间的关系。关系是事物间的连接,在
33、 UML 中有以下几个很重要的关系:(1)依赖关系。有两个元素 A、B,如果元素 A 的变化会引起元素 B 的变化,则称元素 B 依赖(Dependency)于元素 A。在类中,依赖关系有多种表现形式,如:一个类向另一个类发消息;一个类是另一个类的成员;一个类是另一个类的某个操作参数,等等。(2)概括关系。概括关系(Generalization,也翻译为“泛化关系”)描述了一般事物与该事物中的特殊种类之间的关系,也就是父类与子类之间的关系。继承关系是泛化关系的反关系,也就是说子类是从父类中继承的,而父类则是子类的泛化。在 UML 中,对泛化关系有以下 3 个要求:子类应与父类完全一致,父类所具
34、有的关联、属性和操作,子类都应具有。子类中除了与父类一致的信息外,还包括额外的信息。可以使用父类实例的地方,也可以使用子类实例。(3)关联关系。关联(Association)表示两个类的实例之间存在的某种语义上的联系。例如,一个老师为某个学校工作,一个学校有多间教室。我们就认为老师和学校、学校和教室之间存在着关联关系。关联关系为类之间的通信提供了一种方式,它是所有关系中最通用、语义最弱的。关联关系通常可以再细分成以下几种。聚集关系(Aggregation):是关联关系的特例。聚集关系是表示一种整体和部分的关系。如一个电话机包含一个话筒,一个电脑包含显示器、键盘和主机等都是聚集关系的例子。组合关
35、系:如果聚集关系中表示“部分”的类的存在与表示“整体”的类有着紧密的关系(例如“公司”与“部门”之间的关系),那么就应该使用“组合”关系来表示。三、试题三(总题数:1,分数:15.00)【说明】现有事务 T1,T 2、L 3它们对数值型数据 A 执行的操作分别如下:T1;将 A 加 1。T2:将 A 加倍。T3:输出 A 的值,并将 A 置为 1。(分数:15.00)(1).【问题 1】假设 T1、T 2、T 3可以并发执行。若 A 的初值为 0,那么存在多少种可能的正确结果?(分数:5.00)_正确答案:(根据排列组合原理,三个事务一共有 6 种排列结果:T1T 2T 3 A 的值为 1T1
36、T 3T 2 A 的值为 2T2T 1T 3 A 的值为 1T2T 3T 1 A 的值为 2T3T 1T 2 A 的值为 4T3T 2T 1 A 的值为 3)解析:(2).【问题 2】各个事务内部的结构如表 13-4 所示,若事务执行不施加任何锁,则有多少种不同的调度方式?写出简要的计算过程。表 13-4 各个事务内部的结构(分数:5.00)_正确答案:(假设 Ri、R j、R k表示各事务的 R 操作,U p、U q、U r表示各事务的 U 操作,那么根据组合数学中的乘法原理有:RiR jR kU pU qU r 321321=36RiR jU pR kU qU r 322121=24RiR
37、 jU pU qR kU r 322111=12RiU pR jR kU qU r 312121=12RiU pR jU qU kU r 312111=6全部加起来得:36+24+12+12+6=90,因此共有 90 种不同的调度方式。)解析:(3).【问题 3】在 A 的初值给定为 0 时,是否存在能够产生正确结果,而且又是不可串行化的调度?若有请举例说明。(分数:5.00)_正确答案:(存在。在 A 的初值给定为 0 时,调度 R1R 2R 3U 3U 2U 1的执行结果与 6 个可能的串行调度中的 T1T 2T 3或 T2T 1T 3的执行结果一致,A 的值都为 1,也就是说,对于初值
38、0 而言,该并发调度策略是“正确”的。)解析:数据库系统对并发事务的调度是随机的,而不同的调度往往会产生不同的结果。如果一个事务运行过程中没有其它事务同时运行。也就是说没有受到其它事务的干扰,那么就可以认为该事务的运行结果是正常的或预想的。因此,将所有事务串行起来的调度策略一定是正确的调度策略,虽然以不同的顺序串行执行事务可能会产生不同的结果,但由于不会将数据库置于不一致的状态,因此都是正确的。对于多个事务的某种并发调度策略而言,当且仅当该调度的结果与按某一次序串行执行这些事务的结果一样时,就称该策略是可串行化的,并认为该并发调度策略是正确的。根据排列组合原理,三个事务一共有 6 种排列:T1
39、T 2T 3 A 的值为 1T1T 3T 2 A 的值为 2T2T 1T 3 A 的值为 1T2T 3T 1 A 的值为 2T3T 1T 2 A 的值为 4T3T 2T 1 A 的值为 3问题 2 中给出了各个事务的内部结构。假设 Ri、R j、R k表示各事务的 R 操作,U p、 U q、U r表示各事务的 U操作,那么根据组合数学中的乘法原理有:RiR jR kU pU qU r 321321=36RiR jU pR kU qU r 322121=24RiR jU pU qR kU r 322111=12RiU pR jR kU qU r 312121=12RiU pR jU qR kU
40、 r 312111=6全部加起来得:36+24+12+12+6=90,因此共有 90 种不同的调度方式。这里要注意,对于同一事务而言,R 操作必须在 U 操作之前,如果反了,那就不是原来事务的结构了,也就不是原来的事务了。例如,对次序 RiR jU pR kU qU r而言,R i可以是 R 1、R 2、R 3三者之一,因此连乘式中 Ri对应数字 3。当 Ri选定之后,假设 Ri选定的是 R 1,那么对于 Rj而言只能从剩下的 R2、R 3中二选一,所以,连乘式中,R j对应数字 2,假设 Rj是 R2,那么只剩余 R3(Rk只能是 R3了)。接下来是 Up,U p只能是 U1、U 2二者之一
41、,因为它若是 U3的话,就使得 U3排在了剩余的 R3之前,破坏了事务 T3的结构。又如,次序 RiU pR jR kU qU r中,R i可以是 R1、R 2、R 3三者之一,因此连乘式中对应数字 3,当 Ri选定之后,假设 Ri是 R2,那么接下来的 Up只能是 U2,因为如果是 U1或 U 3的话,就会破坏 T1或 T3的结构。其它类似。根据前面的阐述可知,如果一个并发调度策略的执行结果跟某个串行执行的结果一致的话,则该并发调度策略就是正确的。在 A 的初值给定为 0 时,调度 R1R 2R 3U 3 U 2U 1的执行结果与 6 个可能的串行调度中的 T1T 2T 3或 T2T 1T
42、3的执行结果一致,A 的值都为 1。也就是说,对于初值 0 而言,该并发调度策略是“正确”的。但这仅仅是凑巧而已,对其它初值未必如此。例如,若 A 的初值为 10,6 种串行调度 A 的值仍有 1、 2、4、3 四种结果,而调度 R1R 2R 3U 3U 2U 1执行之后 A 的值为 11,跟任一个串行调度执行的结果都不一样,因此是不可串行化的,是不正确的。四、试题四(总题数:1,分数:15.00)【说明】Web 页面与数据库的连接是 Web 数据库的基本要求。目前基于 Web 数据库的连接方案主要有服务器端方案和客户端方案两种类型。服务器端方案的实现技术有 ASP 等,客户端方案的实现技术有 JDBC、DHTML 等