免费智能真题库 > 历年试卷 > 数据库系统工程师 > 2017年上半年 数据库系统工程师 上午试卷 综合知识
  第40题      
  知识点:   E-R模型   联系   数据库   项目管理
  关键词:   E-R   供应商   数据库   项目管理   元组   数据        章/节:   数据库技术基础       

 
在某企业的工程项目管理数据库中供应商关系Supp、项目关系Proj和零件关系Part 的E-R模型和关系模式如下:

Supp (供应商号,供应商名,地址,电话) //供应商号唯一标识Supp中的每一个元组
Proj (项目号,项目名,负责人,电话) //项目号唯一标识Proj中的每一个元组
Part (零件号,零件名) //零件号唯一标识Part中的每一个元组
其中,每个供应商可以为多个项目供应多种零件,每个项目可以由多个供应商供应多种零件,每种零件可以由多个供应商供应给多个项目。SP_P 的联系类型为(40),(41)。
 
 
  A.  *:*:*
 
  B.  1:*:*
 
  C.  1:1:*
 
  D.  1:1:1
 
 
 

  相关试题:E-R模型          更多>  
 
  第34题    2018年上半年  
   33%
假设某企业信息管理系统中的5个实体:部门(部门号,部门名,主管,电话),员工(员工号,姓名,岗位号,电话),项目(项目号,..
  第64题    2022年上半年  
   52%
某学生想要设计一个博客系统,在数据库的概念设计阶段提出了如下图所示的E-R模型,其中的联系类型为(63),联系的属性为(64)。..
  第62题    2018年上半年  
   33%
下图所示的扩展E-R图中,属性“电话”属于(62),在逻辑结构设计中,该图中的(63)属性将不会被转换到关系模式中。<..
   知识点讲解    
   · E-R模型    · 联系    · 数据库    · 项目管理
 
       E-R模型
        概念模型是对信息世界建模,所以概念模型能够方便、准确地表示信息世界中的常用概念。概念模型有很多种表示方法,其中最为常用的是P.P.S.Chen于1976年提出的实体-联系方法(Entity Relationship Approach)。该方法用E-R图来描述现实世界的概念模型,称为实体-联系模型(Entity-Relationship Model,E-R模型)。
        E-R模型是软件工程设计中的一个重要方法,在数据库设计中,常用E-R模型来描述现实世界到信息世界的问题。因为它接近于人的思维方式,容易理解并且与计算机无关,所以用户容易接受,是用户和数据库设计人员交流的语言。但是,E-R模型只能说明实体间的语义联系,还不能进一步地详细说明数据结构。在解决实际应用问题时,通常应该先设计一个E-R模型,然后再把其转换成计算机能接受的数据模型。
               E-R方法
               概念模型中最常用的方法为实体-联系方法,简称E-R方法。该方法直接从现实世界中抽象出实体和实体间的联系,然后用非常直观的E-R图来表示数据模型。在E-R图中有下表所示的几个主要构件。
               
               E-R图中的主要构件
               在E-R图中,实体集中作为主码(或主键)的一部分属性名下面加下画线标明。另外,在实体集与联系的线段上标注联系的类型。
               需要说明的是在本书中,若不引起误解,实体集有时简称实体,联系集有时简称联系。
               实体
               从上表中可见,在E-R模型中实体用矩形表示,通常矩形框内写明实体名。实体是现实世界中可以区别于其他对象的“事件”或“物体”。例如,企业中的每个人都是一个实体。每个实体由一组特性(属性)来表示,其中的某一部分属性可以唯一标识实体,如职工号。实体集是具有相同属性的实体集合,例如,学校所有教师具有相同的属性,因此教师的集合可以定义为一个实体集;学生具有相同的属性,因此学生的集合可以定义为另一个实体集。
               联系
               在E-R模型中,联系用菱形表示,如上表所示。通常可在菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标注上联系的类型(1:1、1:*或*:*)。实体的联系分为实体内部的联系和实体与实体之间的联系。实体内部的联系反映数据在同一记录内部各字段间的联系。
                      两个不同实体之间的联系
                      两个实体之间的联系可分为3类:一对一联系记为1:1,一对多联系记为1:*(或1:n),多对多联系记为*:*(或mn)。
                      (1)1:1。如果对于实体集A中的每一个实体,实体集B中至多有一个实体与之对应,反之亦然,则称A与B具有一对一联系。
                      (2)1:*。如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之对应;反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之对应,则称A与B具有一对多联系。
                      (3)*:*。如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之对应;反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之对应,则称A与B具有多对多联系。
                      例如,下图表示两个不同实体集之间的联系,其含义如下:
                      
                      两个不同实体集之间的联系
                      上图(a)所示的E-R图表示:电影院里一个座位只能坐一个观众,因此观众与座位之间是一个1:1的联系,联系名为“V_S”。
                      上图(b)所示的E-R图表示:部门DEPT和职工EMP实体集,若一个职工只能属于一个部门,那么,这两个实体集之间应是一个1:*的联系,联系名为“D_E”。
                      上图(c)所示的E-R图表示:工程项目PROJ和职工EMP实体集,若一个职工可以参加多个项目,一个项目可以由多个职工参加,那么,这两个实体集之间应是一个*:*的联系,联系名为“PR_E”。
                      两个以上不同实体集之间的联系
                      两个以上不同实体集之间存在1:1:1、1:1:*、1:*:*和*:*:*的联系。例如,下图表示了三个不同实体集之间的联系。
                      
                      三个不同实体集之间的联系
                      上图(a)表示供应商Supp、项目Proj和零件Part之间的多对多(*:*:*)的联系,联系名为“SP_P”。表示供应商为多个项目供应多种零件,每个项目可用多个供应商供应的零件,每种零件可由不同的供应商供应的语义。
                      上图(b)表示病房、病人和医生之间的一对多对多(1:*:*)的联系,联系名为“P_D”。表示一个特护病房有多个病人和多个医生,一个医生只负责一个病房,一个病人只属于一个病房的语义。
                      注意:三个实体集之间的多对多的联系和三个实体集两两之间的多对多的联系的语义是不同的。例如,供应商和项目实体集之间的“合同”联系,表示供应商为哪几个工程签了合同。供应商与零件两个实体集之间的“库存”联系,表示供应商库存零件的数量。项目与零件两个实体集之间的“组成”联系,表示一个项目有哪几种零件组成。
                      同一实体集内的二元联系
                      同一实体集内的各实体之间也存在1:1、1:*和*:*的联系,如下图所示。从图中可见,职工实体集中的领导与被领导联系是1:*的,如下图(a)所示。但是,职工实体集中的婚姻联系是1:1的,如下图(b)所示。
                      
                      同一实体集之间的联系
               属性
               属性是实体某方面的特性。例如,职工实体集具有职工号、姓名、年龄、参加工作时间和通信地址等属性。每个属性都有其取值范围,如职工号为0001~9999的4位整型数,姓名为10位的字符串,年龄的取值范围为18~60等。在同一实体集中,每个实体的属性及其域是相同的,但可能取不同的值。E-R模型中的属性有如下分类:
               (1)简单属性和复合属性。简单属性是原子的、不可再分的,复合属性可以细分为更小的部分(即划分为别的属性)。有时用户希望访问整个属性,有时希望访问属性的某个成分,那么在模式设计时可采用复合属性。例如,职工实体集的通信地址可以进一步分为邮编、省、市、街道。若不特别声明,通常指的是简单属性。
               (2)单值属性和多值属性。前面所举的例子中,定义的属性对于一个特定的实体都只有单独的一个值。例如,对于一个特定的职工,只对应一个职工号、职工姓名,这样的属性叫作单值属性。但是,在某些特定情况下,一个属性可能对应一组值。例如,职工可能有0个、1个或多个亲属,那么职工的亲属的姓名可能有多个数目,这样的属性称为多值属性。
               (3)NULL属性。当实体在某个属性上没有值或属性值未知时,使用NULL值。表示无意义或不知道。
               (4)派生属性。派生属性可以从其他属性得来。例如,职工实体集中有“参加工作时间”和“工作年限”属性,那么“工作年限”的值可以由当前时间和参加工作时间得到。这里,“工作年限”就是一个派生属性。
               扩充的E-R模型
               尽管基本的E-R模型是对大多数数据库特征建模,但数据库某些情况下的特殊语义,仅用基本E-R模型无法表达清楚。在这一节中,将讨论扩充的E-R模型,包括弱实体、特殊化、概括和聚集等概念。
                      弱实体
                      在现实世界中有一种特殊的依赖联系,该联系是指某实体是否存在对于另一些实体具有很强的依赖关系,即一个实体的存在必须以另一个实体为前提,而将这类实体称为弱实体。例如某企业职工与家属的联系,家属总是属于某职工的,若某职工离职将其从职工关系中删除,家属也随即删除,那么家属属于“弱实体”,职工与家属之间的“所属”联系属于依赖联系。
                      在扩展的E-R图中,弱实体用双线矩形框表示。下图为职工与家属的E-R图。
                      
                      弱实体与依赖联系
                      特殊化
                      前面已经介绍了,实体集是具有相同属性的实体集合。但在现实世界中,某些实体一方面具有一些共性,另一方面还具有各自的特殊性。这样,一个实体集可以按照某些特征区分为几个子实体。
                      设有实体集E,如果SE的某些真子集的集合,记为,则称SE的一个特殊化,ES1S2、…、Sn的超类,S1S2、…、Sn称为E的子类。
                      如果,则称SE的全特殊化,否则是E的部分特殊化。
                      如果SiSj=Φ,ij,则S是不相交特殊化,否则是重叠特殊化。
                      在扩充的E-R模型中,子类继承超类的所有属性和联系,但是,子类还有自己特殊的属性和联系。超类-子类关系模型使用特殊化圆圈和连线的一般方式来表示。超类到圆圈有一条连线,连线为双线表示全特殊化,连线为单线表示部分特殊化;双竖边矩形框表示子类;有符号“∪”的线表示特殊化;圆圈中的d表示不相交特殊化;圆圈中的o表示重叠特殊化。
                      
                      扩充E-R图中的主要构件
               E-R模型应用举例
               实现该学校教学管理的E-R模型如下图所示。
               
               学校教学管理E-R模型
               特别需要指出的是,E-R模型强调的是语义,与现实世界的问题密切相关。这句话的意思是,尽管都是学校教学管理,但由于不同的学校教学管理的方法可能会有不同的语义,因此会得到不同的E-R模型。
               扩充E-R模型应用举例
               通上述分析,并将得出的各个扩充的分E-R图进行合并,最终得出该高校扩充的E-R图,如下图所示。
               
               特殊化应用实例
 
       联系
        在E-R模型中,联系用菱形表示,如上表所示。通常可在菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标注上联系的类型(1:1、1:*或*:*)。实体的联系分为实体内部的联系和实体与实体之间的联系。实体内部的联系反映数据在同一记录内部各字段间的联系。
               两个不同实体之间的联系
               两个实体之间的联系可分为3类:一对一联系记为1:1,一对多联系记为1:*(或1:n),多对多联系记为*:*(或mn)。
               (1)1:1。如果对于实体集A中的每一个实体,实体集B中至多有一个实体与之对应,反之亦然,则称A与B具有一对一联系。
               (2)1:*。如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之对应;反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之对应,则称A与B具有一对多联系。
               (3)*:*。如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之对应;反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之对应,则称A与B具有多对多联系。
               例如,下图表示两个不同实体集之间的联系,其含义如下:
               
               两个不同实体集之间的联系
               上图(a)所示的E-R图表示:电影院里一个座位只能坐一个观众,因此观众与座位之间是一个1:1的联系,联系名为“V_S”。
               上图(b)所示的E-R图表示:部门DEPT和职工EMP实体集,若一个职工只能属于一个部门,那么,这两个实体集之间应是一个1:*的联系,联系名为“D_E”。
               上图(c)所示的E-R图表示:工程项目PROJ和职工EMP实体集,若一个职工可以参加多个项目,一个项目可以由多个职工参加,那么,这两个实体集之间应是一个*:*的联系,联系名为“PR_E”。
               两个以上不同实体集之间的联系
               两个以上不同实体集之间存在1:1:1、1:1:*、1:*:*和*:*:*的联系。例如,下图表示了三个不同实体集之间的联系。
               
               三个不同实体集之间的联系
               上图(a)表示供应商Supp、项目Proj和零件Part之间的多对多(*:*:*)的联系,联系名为“SP_P”。表示供应商为多个项目供应多种零件,每个项目可用多个供应商供应的零件,每种零件可由不同的供应商供应的语义。
               上图(b)表示病房、病人和医生之间的一对多对多(1:*:*)的联系,联系名为“P_D”。表示一个特护病房有多个病人和多个医生,一个医生只负责一个病房,一个病人只属于一个病房的语义。
               注意:三个实体集之间的多对多的联系和三个实体集两两之间的多对多的联系的语义是不同的。例如,供应商和项目实体集之间的“合同”联系,表示供应商为哪几个工程签了合同。供应商与零件两个实体集之间的“库存”联系,表示供应商库存零件的数量。项目与零件两个实体集之间的“组成”联系,表示一个项目有哪几种零件组成。
               同一实体集内的二元联系
               同一实体集内的各实体之间也存在1:1、1:*和*:*的联系,如下图所示。从图中可见,职工实体集中的领导与被领导联系是1:*的,如下图(a)所示。但是,职工实体集中的婚姻联系是1:1的,如下图(b)所示。
               
               同一实体集之间的联系
 
       数据库
        数据库(DataBase,DB)是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
        系统使用的所有数据存储在一个或几个数据库中。
 
       项目管理
        构建嵌入式系统是一项复杂的任务,尤其是涉及到很多人员共同长期工作的时候。为了使嵌入式项目开发获得成功,必须对系统开发项目的工作范围、花费的工作量(成本)、可能遇到的风险、进度的安排、要实现的任务、经历的里程碑以及需要的资源(人、硬/软件)等做到心中有数,而项目管理可以提供这些信息。项目管理的过程一般包括初启、计划、执行、监控、结项,项目管理的范围覆盖整个系统生命周期过程。
               管理范围
               有效的项目管理集中于4P,即人员(People)、产品(Product)、过程(Process)和项目(Project)。必须将人员组织起来以有效地完成产品构建工作;必须和客户及其他利益相关者很好地沟通,以便了解产品的范围和需求;必须选择适合于人员和产品的过程;必须估算完成工作任务的工作量和工作时间,从而制订项目计划。
               “人的因素”非常重要,在所有项目中,最关键的因素是人员,涉及项目管理人员、高级管理人员、开发人员、客户和最终用户。人员能力成熟度模型(People Capability Maturity Model,PCMM)针对人员定义了以下关键实践域:人员配备、沟通与协调、工作环境、业绩管理、培训、报酬、能力素质分析与开发、个人事业发展、工作组发展以及团队精神或企业文化培育等。PCMM成熟度达到较高水平的组织,更有可能实现有效的项目管理事件。
               在制订项目计划之前,首先确定产品的目标和范围,考虑可选的解决方案,识别技术和管理上的限制。如果没有这些信息,就无法进行合理(精确)的成本估算,也无法进行有效的风险评估和适当的项目任务划分,更无法制定可管理的项目进度计划来给出意义明确的项目进展标志。确定产品的目标只是识别出产品的总体目标,而不用考虑如何实现这些目标。确定产品的范围是识别出产品的主要数据、功能和行为特性,并且应该用量化的方式界定这些特性。然后开始考虑备选解决方案,不讨论细节,使管理者与参与开发的人员根据特定的约束条件选择相对最佳的方案,约束条件有产品的交付期限、预算限制、可用人员、技术接口以及其他各种因素。
               开发过程提供了一个框架,一小部分框架活动适用于所有的项目,多种不同的任务集合使得框架活动适合于不同项目的特性和项目团队的需求。普适性活动(如质量管理、配置管理、测量等)覆盖了过程模型,独立于任何一个框架活动,且贯穿于整个过程之中。
               为了成功地管理项目,需要有计划、可控制,这样才能管理复杂的系统开发;需要了解可能会出现的各类问题以便加以避免。可以采用的方法有:
               (1)在正确的基础上开始工作。
               (2)保持动力。
               (3)跟踪进度。
               (4)做出正确的决策。
               (5)进行事后分析。
               成本估算
               系统开发成本估算主要指系统开发过程中所花费的工作量及相应的代价。为了使开发项目能够在规定的时间内完成,而且不超过预算,成本预算和管理控制是关键。项目开发成本的估算主要靠分解和类推的手段进行。分解技术是将项目分解成一系列较小的、容易理解的问题进行估算。常用的分解技术有:基于问题的估算、基于代码行(LOC)估算、基于功能点(FP)的估算、基于过程的估算、基于用例的估算。选择或结合使用分解技术,进行成本估算。基本的成本估算方法有如下几种。
               (1)自顶向下估算方法。估算人员参照以前完成的项目所耗费的总成本(或总工作量)来推算将要开发的系统的总成本(或总工作量),然后把它们按阶段、步骤和工作单元进行分配。
               自顶向下估算方法的主要优点是对系统级工作的重视,所以估算中不会遗漏集成、配置管理等系统级事务的成本估算,且估算工作量小、速度快。其缺点是不清楚低级别上的技术性困难,而这些困难将会使成本上升。
               (2)自底向上估算方法。自底向上估算方法是将待开发的系统细分,分别估算每一个子任务所需要的开发工作量,然后将它们加起来,得到系统的总开发量。这种方法的优点是对每一部分的估算工作交给负责该部分工作的人来做,所以估算较为准确。其缺点是缺少对各项子任务之间相互联系所需要工作量和与开发有关的系统级工作量的估算,因此预算往往偏低。
               (3)差别估算方法。差别估算方法是将开发项目与一个或多个已完成的类似项目进行比较,找出与某个相类似项目的若干不同之处,并估算每个不同之处对成本的影响,导出开发项目的总成本。该方法的优点是可以提高估算的准确度,缺点是不容易明确“差别”的界限。
               除以上方法外,还有许多方法,大致可分为三类:专家估算法、类推估算法和算式估算法。
               (1)专家估算法。该方法依靠一个或多个专家对要求的项目做出估算,其精确性取决于专家对估算项目的定性参数的了解和他们的经验。
               (2)类推估算法。在自顶向下的方法中,它是将估算项目的总体参数与类似项目进行直接比较得到结果;在自底向上方法中,类推是在两个具有相似条件的工作单元之间进行。
               (3)算式估算法。专家估算法和类推估算法的缺点在于它们依靠带有一定盲目性和主观性的猜测对项目进行估算。算式估算法则是企图避免主观因素的影响,用于估算的方法有两种基本类型:由理论导出和由经验导出。
               典型的成本估算模型主要有动态多变量普特南(Putnam)模型和层次结构的结构性成本模型(Constructive Cost Model,COCOMO)的升级模型COCOMOII等。普特南模型基于软件方程,它假设在软件开发的整个生命周期中有特定的工作量分布。COCOMOII模型层次结构中有三种不同的估算选择:对象点、功能点和源代码行。
               风险分析
               新的系统建立时,总是存在某些不确定性。例如,用户要求是否能确切地被理解?在项目最后结束之前要求实现的功能能否建立?是否存在目前仍未发现的技术难题?在项目出现严重延期时是否会发生一些变更?等等。风险是潜在的,需要识别、评估发生的概率、估算其影响、并制定实际发生时的应急计划。
               风险分析在项目管理中具有决定性作用。当在软件工程的环境中考虑风险时,主要关注以下三个方面。一是关心未来。风险是否会导致项目失败;二是关心变化。用户需求、开发技术、目标机器以及所有其他与项目有关的实体会发生什么变化;三是必须解决需要做出选择的问题,即应当采用什么方法和工具,应当配备多少人力,在质量上强调到什么程度才满足要求等。
               风险分析实际上是贯穿软件工程中的一系列风险管理步骤,其中包括风险识别、风险估计、风险管理策略、风险解决和风险监控。
               进度管理
               进度安排包括把一个项目所有的工作分解为若干个独立的活动,并描述这些活动之间的依赖关系,估算完成这些活动所需的工作量,分配人力和其他资源,制定进度时序。进度的合理安排是如期完成软件项目的重要保证,也是合理分配资源的重要依据,因此进度安排是管理工作的一个重要组成部分。有两种安排软件开发项目进度的方式:
               (1)系统最终交付日期已经确定,系统开发部门必须在规定期限内完成;
               (2)系统最终交付日期只确定了大致的年限,最后交付日期由软件开发部门确定。
               进度安排的常用图形描述方法有Gantt图(甘特图)和PERT(Program Evaluation&Review Technique,项目计划评审技术)图。
               (1)Gantt图。Gantt图中横坐标表示时间(如时、天、周、月、年等),纵坐标表示任务,图中的水平线段表示一个任务的进度安排,线段的起点和终点对应在横坐标上的时间分别表示该任务的开始时间和结束时间,线段的长度表示完成该任务所持续的时间。当日历中同一时段中存在多个水平条时,表示任务之间的并发。下图所示的Gantt图描述了三个任务的进度安排。该图表示:任务1首先开始,完成它需要12周时间;任务2在2周后开始,完成它需要18周;任务3在12周后开始,完成它需要10周。
               
               Gantt图实例
               Gantt图能清晰地描述每个任务从何时开始,到何时结束,任务的进展情况以及各个任务之间的并行性;但是它不能清晰地反映出各任务之间的依赖关系,难以确定整个项目的关键所在,也不能反映计划中有潜力的部分。
               (2)PERT图。PERT图是一个有向图,其基本符号如下图所示。
               
               PERT图的基本符号
               PERT图中的有向弧表示任务,可以标上完成该任务所需的时间,图中的结点表示流入结点的任务已结束,并开始流出结点的任务,这里把结点称为事件。只有当流入该结点的所有任务都结束时,结点所表示的事件才出现,流出结点的任务才可以开始。事件本身不消耗时间和资源,它仅表示某个时间点。每个事件有一个事件号及出现该事件的最早时刻和最迟时刻。最早时刻表示在此时刻之前从该事件出发的任务不可能开始;最迟时刻表示从该事件出发的任务必须在此时刻之前开始,否则整个工程就不能如期完成。每个任务还可以有一个松弛时间(slack time),表示在不影响整个工期的前提下,完成该任务有多少机动时间。为了表示任务间的关系,图中还可以加入一些空任务(用虚线有向弧表示),完成空任务的时间为0。
               PERT图的一个实例如下图所示,该图所表示的工程可分为12个任务,事件号1表示工程开始,事件号11表示工程结束(完成所有任务需要23个时间单位)。松弛时间为0的任务构成了完成整个工程的关键任务,其事件流为1→2→3→4→6→8→10→11,也就是说,这些任务不能拖延,否则整个工程就不能在23个时间单位内完成。
               
               PERT图示例
               PERT图不仅给出了每个任务的开始时间、结束时间和完成该任务所需的时间,还给出了任务之间的关系,即哪些任务完成后才能开始另外一些任务,还可以找出如期完成整个工程的关键任务。任务的松弛时间则反映了完成任务时可以推迟其开始时间或延长其所需完成的时间。PERT图不能反映任务之间的并行关系。
   题号导航      2017年上半年 数据库系统工程师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第40题    在手机中做本题