1. mysql数据库原理及应用第三版答案在哪里找
mysql数据库原理及应用 数据库原理与应用(第3版)答案《数据库原理与应用》(第三版)习题参考答案 第 1 章 数据库概述 1. 试说明数据、数据库、数据库管理系统和数据库系统的概念。答:数据是描述事物的符号记录。数据库是长期存储在计算机中的有组织的、可共享的大量数据的集合。数据库管理系统是一个专门用于实现对数据进行管理和维护的系统软件。数据库系统是指在计算机中引入数据库后的系统,一般由数据库、数据库管理系统(及相关的实用工具)、应用程序、数据库管理员组成。2. 数据管理技术的发展主要经历了哪几个阶段?答:文件管理和数据库管理。3. 与文件管理相比,数据库管理有哪些优点? 答:与文件系统管理数据相比,数据库系统管理数据带来了如下好处:将相互关联的数据集成在一起,较少的数据冗余,程序与数据相互独立,保证数据的安全可靠,最大限度地保证数据的正确性,数据可以共享并能保证数据的一致性。4. 在数据库管理方式中,应用程序是否需要关心数据的存储位置和存储结构?为什么? 答:不需要。因为数据库管理系统提供了逻辑独立性和物理独立性。5. 在数据库系统中,数据库的作用是什么? 答:数据库是数据的汇集,它以一定的组织形式保存在存储介质上。6. 在数据库系统中,应用程序可以不通过数据库管理系统而直接访问数据文件吗? 答:不能7. 数据独立性指的是什么?它能带来哪些好处? 答:数据独立性是指应用程序不会因数据的物理表示方式和访问技术的改变而改变,即应用程序不依赖于任何特定的物理表示方式和访问技术,它包含两个方面:逻辑独立性和物理独立性。物理独立性是指当数据的存储位置或存储结构发生变化时,不影响应用程序的特性;逻辑独立性是指当表达现实世界的信息内容发生变化时,不影响应用程序的特性。8. 数据库系统由哪几部分组成,每一部分在数据库系统中的作用大致是什么? 答:数据库系统一般包括数据库、数据库管理系统(及相应的实用工具)、应用程序和数据库管理员四个部分。数据库是数据的汇集,它以一定的组织形式保存在存储介质上;数据库管理系统是管理数据库的系统软件,它可以实现数据库系统的各种功能;应用程序专指以数据库数据为基础的程序,数据库管理员负责整个数据库系统的正常运行。
第2章 数据模型与数据库结构 1. 解释数据模型的概念,为什么要将数据模型分成两个层次? 答:答:数据模型是对现实世界数据特征的抽象。数据模型一般要满足三个条件:第一是数据模型要能够比较真实地模拟现实世界;第二是数据模型要容易被人们理解;第三是数据模型要能够很方便地在计算机上实现。由于用一种模型来同时很好地满足这三方面的要求在目前是比较困难的,因此在数据库系统中就可以针对不同的使用对象和应用目的,采用不同的数据模型。根据模型应用的不同目的,将这些模型分为两大类:概念层数据模型和组织层数据模型,以方便对信息的描述。2. 概念层数据模型和组织层数据模型分别是针对什么进行的抽象? 答:概念层数据模型是对现实世界的抽象,形成信息世界模型,组织层数据模型是对信息世界进行抽象和转换,形成具体的DBMS支持的数据组织模型。3. 实体之间的联系有哪几种?请为每一种联系举出一个例子。答:实体之间的联系有一对一、一对多和多对多三种。例如:系和正系主任是一对一联系(假设一个系只有一个正系主任),系和教师是一对多联系(假设一个教师只在一个系工作),教师和课程是多对多联系(假设一个教师可以讲授多门课程,一门课程可由多个教师讲授)。4. 说明实体-联系模型中的实体、属性和联系的概念。5.指明下列实体间联系的种类:(1)教研室和教师(设一个教师只属于一个教研室,一个教研室可有多名教师)。(2)商品和顾客。(3)国家和首都(假设一个国家的首都可以变化)。(4)飞机和乘客。(5)银行和账户。(6)图书和借阅者。(设一个借阅者可同时借阅多本书,可在不同时间对同一本书借阅多次) 6.数据库系统包含哪三级模式?试分别说明每一级模式的作用? 答:数据库系统包含的三级模式为:内模式、模式和外模式。外模式是对现实系统中用户感兴趣的整体数据结构的局部描述,用于满足不同数据库用户需求的数据视图,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是对数据库整体数据结构的子集或局部重构。模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。内模式是对整个数据库的底层表示,它描述了数据的存储结构。
7. 数据库管理系统提供的两级映像的作用是什么?它带来了哪些功能? 答:数据库系统的两级映象是模式与内描述间的映象和外模式与模式间的映象。模式/内模式的映象带来了物理独立性,即如果数据库的存储结构改变了,可通过调整模式/内模式的映象,使模式能够保持不变。外模式/概念模式间的映象带来了逻辑独立性,当概念模式的结构可发生改变时,也可通过调整外模式/模式间的映象关系,使外模式可以保持不变。8.数据库三级模式划分的优点是什么?它能带来哪些数据独立性? 答:数据库的三级模式的划分实际上将用户、逻辑数据库与物理数据库进行了划分,使彼此之间的相互干扰减到最少。这三个模式的划分实际上带来了两个数据独立性:物理独立性和逻辑独立性。这使得底层的修改和变化尽量不影响到上层。第3章 关系数据库 1. 试述关系模型的三个组成部分。答:关系数据结构、关系操作集合和关系完整性约束。2. 解释下列术语的含义:(1) 笛卡尔积:设D1,D2,…,Dn为任意集合,定义笛卡尔积D1,D2,…,Dn为:D1×D2× …×Dn ={(d1,d2,…,dn) | di ∈Di,i=1,2,…,n }(2) 主键:也称主码为或主关键字,是表中的属性或属性组,用于惟一地确定一个元组。(3) 候选键:如果一个属性或属性集的值能够惟一标识一个关系的元组而又不包含多余的属性,则称该属性或属性集为候选键。(4) 外键:设F是关系R的一个或一组属性,如果F与关系S的主键相对应,则称F是关系R的外键。(5) 关系:关系就是简单二维表。(6) 关系模式:二维表的结构称为关系模式。(7) 关系数据库:对应于一个关系模型的所有关系的集合称为关系数据库。3. 关系数据库的三个完整性约束是什么?各是什么含义? 答:实体完整性、参照完整性和用户定义的完整性。实体完整性是保证关系中的每个元组都是可识别的和惟一的。参照完整性也称为引用完整性,用于表达现实世界中的实体之间的关联关系。
用户定义的完整性也称为域完整性或语义完整性,用于保证数据库中存储的值与现实世界相符。4. 连接运算有哪些?等值连接和自然连接的区别是什么? 答:连接运算中最重要也是最常用的连接有两个,一个是等值连接,一个是自然连接。自然连接与等值连接的差别为:l 自然连接要求相等的分量必须有共同的属性名,等值连接则不要求;l 自然连接要求把重复的属性名去掉,等值连接却不这样做。5. 对参与并、交、差运算的两个关系R、S有什么要求? 答:必须结构相同,且相应的属性值取自同一个值域。6. 对参与除运算的两个关系(R÷S)有什么要求?除运算的结果关系中包含哪些属性? 答:R中必须包含S的全部或部分属性,除运算的结果包含的属性是只属于R不属于S的属性。7. 对参与自然连接和等值连接操作的两个关系R、S有什么要求?答:有语义相同的属性。8. 投影操作的结果关系中是否有可能存在重复的记录?为什么? 答:不可能,因为投影运算会自动去掉投影后重复的记录。9.利用表3-10至3-12所示的三个关系,写出实现如下查询要求的关系代数表达式。(1)查询“信息系”学生的选课情况,列出学号、姓名、课程号和成绩。∏Sno, Sname, Cno, Grade(σSdept=‘信息系’(SCStudent)) 或:∏Sno, Sname, Cno, Grade(SC σSdept=‘信息系’(Student))(2) 查询“VB”课程的考试情况,列出学生姓名、所在系和考试成绩。∏Sname, Sdept, Grade(σCname=‘VB’(CoureSCStudent)) 或:∏Sname, Sdept, Grade(σCname=‘VB’(Coure) SCStudent)(3) 查询考试成绩高于90分的学生的姓名、课程名和成绩。∏Sname, Cname, Grade(σGrade>90(CoureSCStudent)) 或:∏Sname, Cname, Grade(Coure
σGrade>90(SC)Student)(4) 查询至少选修了0512号学生所选的全部课程的学生的姓名和所在系。∏Sname, Sdept(Student (SC ÷ ∏Cno(σsno=’0512’(SC))))(5) 查询至少选了“C01”和“C02”两门课程的学生的姓名、所在系和所选的课程号。∏Sname, Sdept, Cno(Student (SC ÷ ∏Sno(σcno=’C01’ V Cno=’C02’(SC))))(6) 查询没有选修第1学期开设的全部课程的学生的学号、姓名和所选的课程号。∏Sno, Sname, Cno(Student SC (∏sno(SC) - ∏sno(σsemester=1(Course)SC)))(7) 查询计算机系和信息系选了VB课程的学生姓名。∏Sname(σsdept=’计算机系’V sdept=’信息系’)∧ cname=’vb’(StudentSC Course)) 或:∏Sname(σsdept=’计算机系’V sdept=’信息系’(Student)SC σcname=’vb’(Course)) 第4章 SQL Server 20__基础 1. 安装SQL Server 20__对硬盘及内存的要求分别是什么? 答:SQL Server 20__实际硬盘空间需求取决于系统配置和您决定安装的功能,一般应确保系统驱动器中是否有至少 6.0 GB 的可用磁盘空间。内存:E_press 版本:最少512 MB;其他版本:最少1 GB。2. SQL Server实例的含义是什么?实例名的作用是什么? 答:一个实例代表一个独立的数据库管理系统。实例名是实例的标识,用户通过“计算机名/实例名”的方式可访问指定的命令实例。3. SQL Server 20__的核心引擎是什么? 答:SQL Server(MSSQLSERVER)4. SQL Server 20__提供的设置服务启动方式的工具是哪个? 答:配置管理器
5. 在SQL Server 20__中,每个数据库至少包含几个文件? 答:2个文件,一个数据文件,一个日志文件 6. SQL Server 20__数据库文件分为几类?每个文件有哪些属性? 答:主要数据文件和次要数据文件,属性有:物理文件名及其位置、逻辑文件名、初始大小、增长方式、最大大小。第 5 章 数据类型及关系表创建 1. Tinyint数据类型定义的数据的取值范围是多少? 答:0-2552. SmallDatatime类型精确到哪个时间单位? 答:分钟3. 定点小数类型numeric中的p和q的含义分别是什么? 答:p代表整数位数+小数位数的和值,q代表小数位数。4. Char(n)、nchar(n)的区别是什么?它们各能存放多少个字符? 答:Char(n)中的n代表能存放n个字节的字符,如果是字母可以存放n个,如果是汉字可存放n/2个。Nchar(n)中的n代表能存放的字符个数。5. Char(n)和varchar(n)的区别是什么?答:Char(n)是定长存储,一定占n个字节的空间。Varchar(n)代表最多占n个字节的空间。6. 数据完整性约束的作用对象有哪些? 答:表和列7. CHECK约束的作用是什么? 答:限制列的取值范围。8. UNIQUE约束的作用是什么? 答:限制列取值不重。9. DEFAULT约束的作用是什么? 答:提供列的默认值。上机练习 1. 在第4章创建的Students数据库中,写出创建如下三张表的SQL语句,要求在定义表的同时定义数据的完整性约束:(1)“图书”表结构如下:书号:统一字符
2. 数据库原理及应用试题
1.B 2.C 3.B 4.C 5.D 6.C 7.C 8.D 9.C 10.A
11.A 12.A 13.A --不太确定 14.B 15.C 16.A 17.B 18.A 19.D 20.C
1.试述事务的概念及事务的四个特性。
答:
事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。
事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这个四个特性也简称为ACID特性。
原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
持续性:持续性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。
2.为什么事务非正常结束时会影响数据库数据的正确性,请列举一例说明之。
答:
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。
例如某工厂的库存管理系统中,要把数量为Q的某种零件从仓库1移到仓库2存放。
则可以定义一个事务T,T包括两个操作;Q1=Q1-Q,Q2=Q2+Q。如果T非正常终止时只做了第一个操作,则数据库就处于不一致性状态,库存量无缘无故少了Q。
3.数据库中为什么要有恢复子系统?它的功能是什么?
答:
因为计算机系统中硬件的故障、软件的错误、操作员的失误以及恶意的破坏是不可避免的,这些故障轻则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失,因此必须要有恢复子系统。
恢复子系统的功能是:把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)。
4.数据库运行中可能产生的故障有哪几类?哪些故障影响事务的正常执行?哪些故障破坏数据库数据?
答:数据库系统中可能发生各种各样的故障,大致可以分以下几类:
(1)事务内部的故障;
(2)系统故障;
(3)介质故障;
(4)计算机病毒。
事务故障、系统故障和介质故障影响事务的正常执行;介质故障和计算机病毒破坏数据
库数据。
5.据库恢复的基本技术有哪些?
答:
数据转储和登录日志文件是数据库恢复的基本技术。
当系统运行过程中发生故障,利用转储的数据库后备副本和日志文件就可以将数据库恢复到故障前的某个一致性状态。
6. 数据库转储的意义是什么? 试比较各种数据转储方法。
答:
数据转储是数据库恢复中采用的基本技术。所谓转储即DBA定期地将数据库复制到磁带或另一个磁盘上保存起来的过程。当数据库遭到破坏后可以将后备副本重新装入,将数据库恢复到转储时的状态。
静态转储:在系统中无运行事务时进行的转储操作。静态转储简单,但必须等待正运行的用户事务结束才能进行。同样,新的事务必须等待转储结束才能执行。显然,这会降低数据库的可用性。
动态转储:指转储期间允许对数据库进行存取或修改。动态转储可克服静态转储的缺点,它不用等待正在运行的用户事务结束,也不会影响新事务的运行。但是,转储结束时后援副本上的数据并不能保证正确有效。因为转储期间运行的事务可能修改了某些数据,使得后援副本上的数据不是数据库的一致版本。
为此,必须把转储期间各事务对数据库的修改活动登记下来,建立日志文件(log file)。这样,后援副本加上日志文件就能得到数据库某一时刻的正确状态。
转储还可以分为海量转储和增量转储两种方式。
海量转储是指每次转储全部数据库。增量转储则指每次只转储上一次转储后更新过的数据。从恢复角度看,使用海量转储得到的后备副本进行恢复一般说来更简单些。但如果数据库很大,事务处理又十分频繁,则增量转储方式更实用更有效。
7. 什么是日志文件?为什么要设立日志文件?
答:
(1)日志文件是用来记录事务对数据库的更新操作的文件。
(2)设立日志文件的目的是: 进行事务故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复。
8. 登记日志文件时为什么必须先写日志文件,后写数据库?
答:
把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。
如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,在恢复时只不过是多执行一次UNDO操作,并不会影响数据库的正确性。所以一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。
9. 针对不同的故障,试给出恢复的策略和方法。(即如何进行事务故障的恢复?系统故障的恢复?介质故障恢复?)
答:
事务故障的恢复:
事务故障的恢复是由DBMS自动完成的,对用户是透明的。
DBMS执行恢复步骤是:
(1)反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。
(2)对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”写入数据库。
(3)继续反向扫描日志文件,做同样处理。
(4)如此处理下去,直至读到此事务的开始标记,该事务故障的恢复就完成了。
答:
系统故障的恢复:
系统故障可能会造成数据库处于不一致状态:
一是未完成事务对数据库的更新可能已写入数据库;
二是已提交事务对数据库的更新可能还留在缓冲区,没来得及写入数据库。
因此恢复操作就是要撤销(UNDO)故障发生时未完成的事务,重做(REDO)已完成的事务。
系统的恢复步骤是:
(1)正向扫描日志文件,找出在故障发生前已经提交的事务队列(REDO队列)和未完成的事务队列(UNDO队列)。
(2)对撤销队列中的各个事务进行UNDO处理。
进行UNDO处理的方法是,反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作,即将日志记录中“更新前的值”(Before Image)写入数据库。
(3)对重做队列中的各个事务进行REDO处理。
进行REDO处理的方法是:正向扫描日志文件,对每个REDO事务重新执行日志文件登记的操作。即将日志记录中“更新后的值”(After Image)写入数据库。
*解析:
在第(1)步中如何找出REDO队列和UNDO队列?请大家思考一下。
下面给出一个算法:
1) 建立两个事务队列:
· UNDO-LIST: 需要执行undo操作的事务集合;
· REDO-LIST: 需要执行redo操作的事务集合;
两个事务队列初始均为空。
2) 从日志文件头开始,正向扫描日志文件
· 如有新开始(遇到Begin Transaction)的事务Ti,把Ti暂时放入UNDO-LIST队列;
· 如有提交的事务(遇到End Transaction)Tj,把Tj从UNDO-LIST队列移到REDO-LIST队列;
直到日志文件结束
答:
介质故障的恢复:
介质故障是最严重的一种故障。
恢复方法是重装数据库,然后重做已完成的事务。具体过程是:
(1)DBA装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复到转储时的一致性状态。
(2)DBA装入转储结束时刻的日志文件副本
(3)DBA启动系统恢复命令,由DBMS完成恢复功能,即重做已完成的事务。
*解析
1)我们假定采用的是静态转储,因此第(1)步装入数据库后备副本便可以了。
2)如果采用的是静动态转储,第(1)步装入数据库后备副本还不够,还需同时装入转储开始时刻的日志文件副本,经过处理后才能得到正确的数据库后备副本。
3)第(2)步重做已完成的事务的算法是:
a. 正向扫描日志文件,找出故障发生前已提交的事务的标识,将其记入重做队列
b. 再一次正向扫描日志文件,对重做队列中的所有事务进行重做处理。即将日志记录中“更新后的值”写入数据库。
10. 具有检查点的恢复技术有什么优点?
答:
利用日志技术进行数据库恢复时,恢复子系统必须搜索日志,确定哪些事务需要REDO,哪些事务需要UNDO。一般来说,需要检查所有日志记录。这样做有两个问题:
一是搜索整个日志将耗费大量的时间。
二是很多需要REDO处理的事务实际上已经将它们的更新操作结果写到数据库中了,恢复子系统又重新执行了这些操作,浪费了大量时间。
检查点技术就是为了解决这些问题。
11. 试述使用检查点方法进行恢复的步骤。
答:
① 从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录。
② 由该检查点记录得到检查点建立时刻所有正在执行的事务清单ACTIVE-LIST。
这里建立两个事务队列:
· UNDO-LIST: 需要执行undo操作的事务集合;
· REDO-LIST: 需要执行redo操作的事务集合;
把ACTIVE-LIST暂时放入UNDO-LIST队列,REDO队列暂为空。
③ 从检查点开始正向扫描日志文件
· 如有新开始的事务Ti,把Ti暂时放入UNDO-LIST队列;
· 如有提交的事务Tj,把Tj从UNDO-LIST队列移到REDO-LIST队列,直到日志文件结束;
④ 对UNDO-LIST中的每个事务执行UNDO操作, 对REDO-LIST中的每个事务执行REDO操作。
12. 什么是数据库镜像?它有什么用途?
答:
数据库镜像即根据DBA的要求,自动把整个数据库或者其中的部分关键数据复制到另一个磁盘上。每当主数据库更新时,DBMS自动把更新后的数据复制过去,即DBMS自动保证镜像数据与主数据的一致性。
数据库镜像的用途有:
一是用于数据库恢复。当出现介质故障时,可由镜像磁盘继续提供使用,同时DBMS自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本。
二是提高数据库的可用性。在没有出现故障时,当一个用户对某个数据加排它锁进行修改时,其他用户可以读镜像数据库上的数据,而不必等待该用户释放锁。
3. 【数据库历年期末考试题】数据库原理期末考试题
2005-2006(2)数据库系统原理试题(A)参考答案及评分标准
一、填空题(每空1分,共14分)
1、 数据结构
2、 元组
3、 实体完整性 参照完整性
4、 1NF
5、 数据字典
6、 B R +BR B S B S +BR B S
7、 可串行的
8、 RAID
9、 动态Hash 方法 可扩展Hash 方法
10、 并发控制技术 数据库恢复技术
二、选择题(每题1分,共10分)
1、 D 2、A 3、A 4、B 5、C 6、C 7、C 8、C 9、C 10、A
三、简答题(每题4分,共16分)
1. 可以表示任何关系代数操作的5种基本代数操作是什么?
答: ⋃ , - , ⨯ , σ , π
注:1个1分,写对4个即可得4分
2. 关系数据库中常用的连接操作的实现算法有哪些?
答:循环嵌套连接算法(1分)、排序合并连接算法(1分)、hash 连接算法(1分)、索引连接算法(1分)。
3. 简述B 树和B+树的区别。
答:(1)B+树的叶子节点链在一起(2分)。(2)B+树的内节点不存放数据指针(2分)。
4. 什么是数据库事务?什么是数据库事务的原子性?
答:一个存取或更改数据库的程序的运行称为数据库事务(2分)。事务中的所有操作要么全部被成功的完成且这些操作的结果被永久地存储到数据库中,要么这
个事务对数据库和其它事务没有任何影响。这种性质称为事务的原子性(2分)。
四、综合题(每题12分,共60分)
(一)已知关系S ,P ,J ,SPJ 的关系模式为:
S (SNO ,SN ,CITY )
P (PNO ,PN ,COLOR )
J (JNO ,JN ,CITY )
SPJ (SNO ,JNO ,PNO ,QTY )
其中:SNO 为供应商号,SN 为供应商姓名,CITY 为所在城市;PNO 为零件号,PN 为 零件名称,COLOR 为颜色;JNO 为工程项目号,JN 为工程项目名称;QTY 为数量。
1、 试用
∏JN ((∏JNO ,PNO (SPJ )÷ ∏PNO (P ∏JNO ,JN (J ))(4分)
2、试用完成下列查询:把零件号为P2的零件重量增加5,颜色改为黄色。
UPDATE P
SET WEIGHT=WEIGHT+5,COLOR=’黄色’
WHERE PNO=’P2’; (4分)
3、试用完成下列查询:取出1个以上供应商提供的零件号。
SELECT PNO
FROM SPJ
GROUP BY PNO
HA VING COUNT (SNO )≥1 (4分)
(二) 设某商业集团数据库有三个实体集。一是“商店”实体集,属性有商店编号、商店名、地址等;二是“商品” 实体集,属性有商品编号、商品名、规格、单价等;三是“供应商” 实体集,属性有供应商编号、供应商名、地址等。
商店与商品间存在“销售”联系,每个商店可销售多种商品,每个商品也可放在多个商店档信胡销售,每个商店行拦销售一种商品,有月销售量;供应商与商品间存在着“供应” 联系,每个供应商供应多种商品,每种商品可以向多个供应商订购。供应商供应商品给每个商店有月供应量。
(1)试画出E-R 图,并在图上注明属性。
(2) 将E--R 图转换成关系模型,并指明主键和外键。
(1)E-R 图如图所示。
(6分,其中实体2分、联系2分、属性2分)
(2)此E--R 图转换成的关系模型如下
商店(商店编号,商店名,地址) 主码为商店编号
供应商(供应商编号,供应商名,地址) 主码为供应商编号
商品(商品编号,商品名,规格,单价)
销售(商店编号,商品号,月销售量)
主码为(商店编号,商品号),外码为商店编号和商品号
供应(供应商编号,商店编号,月供应量)
主码为(供应商编号,商店编号),外码为供应商编号,商店编号
共6分,由于学生的写法多样,教师根据具体情况给分。
(三)1.设关系模式R 其中: U={A, B, C, D, E, P}
F={A→B,C→P,E→A,CE→D}
求出R 的所有候选关键字。
解:由计算可知: (CE)的闭包 = {ABCDEP}
而 C 的闭包={CP}
E 的闭包={ABE} (2分)
所以:R 的候选键为坦配 : CE 。 (2分)
2.判断下面的关系模式最高属于第几范式) ,并说明理由。
R({A,B,C},{AC→B,AB→C,B→C})
答:是1NF ,(2分) 因为该关系的候选键之一为AB, 又因为有B→C,存在部分函数依赖(2分), 所以, 该关系为1NF.
3. 设关系R 具有属性集合{O, I, S, A, B},函数依赖集合{I->B, IS->A, A->O}。把R 分解成
3NF ,并使其具有无损连接性和函数依赖保持性。
答:{IB,ISA,AO}(4分)
(四) 设文件F 具有10000个记录,每个记录50字节,其中10字节用来表示文件的键值。每个磁盘块大小1000字节,指向磁盘块的指针占5字节,不允许记录跨两个块。
(1) 如果为文件F 建立简单hash 索引,使用100个hash 桶,则桶目录需要多
少磁盘块?平均每个桶需要多少磁盘块?
答:(1)1 (2)10000个记录/100个桶=100个记录每桶,(2分)100个记
录×50字节每记录/1000字节每块=5块(2分)
(2) 如果为文件F 建立B +树索引,各磁盘块尽量装满,需要多少磁盘块存储索
引?
答:求秩D :5D+10(D+1) D=67 (2分)
即每个叶节点能保存D-1=66个键值。所以叶节点数为⎡10000/66⎤
=152个。(2分)
上一层的内节点同样有67个指针,是一个67叉的节点,
⎡10000/67⎤=3,⎡3/67⎤=1(2分)
因此B+树的节点总数为152+3+1=156个。即需要156个磁盘块
存储B+树索引。(2分)
(五) 对于教学数据库S(S#,SNAME ,AGE ,SEX) ,SC(S#,C#,GRADE) ,C(C#,CNAME ,TEACHER) 。现有一个查询:检索至少学习W ANG 老师所授一门课程的男学生学号和姓名。
1. 给出该查询的关系代数表达式,并画出该表达式构成的语法树。
2. 使用启发式优化算法对语法树进行优化,得到优化的语法树。
解:(1) 关系代数表达式:
∏ S#,SNAME (σS.S#=SC.S#∧SC.C#=C.C#∧S.SEX=’男’ ∧teacher=’wang’(S×SC×C )) (3分)
∏ S#,SNAME
S.S#=SC.S#∧SC.C#=C.C#∧S.SEX=’男’ ∧teacher=’wang’
(3分)
∏ S#,SNAME σSC.C#=C.C#
σteacher=’wang’
∏ S#,C# S.SEX=’男’
s
结果树(3分) c sc (3分)
4. 数据库期末考试题 求答案 急!
--1
create database 学生选课系统
on primary
(name = 学生选课系统_data,
filename='d:\aa\学生选课系统.mdf',
size=8,
maxsize=100,
filegrowth=20%)
log on
(name =学生选课系统_log,
filename = 'e:\ee\学生选课系统.ldf')
--2
create table 学生
(学号 char(10) primary key,
姓名 char(20),
性别 char(2) check (性别 in('男','女')),
年龄 int default 20,
所在系 char(20))
--3
select 学号,年龄
from 学生
where 所在系='物理系'
--4
select 学号,成绩
where 课程号='2'
order by 成绩 asc,学号 desc
--5
select 学生.学号 学号,姓名,选修的课程名,成绩
from 学生,课程,选课
where 学生.学号=选课.学号 and 课程.课程号=选课.课程号
--6
insert into 学生(学号,姓名,所在系)
values('96002','张三','英语系')
--7
update 学生 set 年龄=年龄+3
--8
delete from 学生
where 所在系='化学系'
--9
create view 英语系学生
as
select 学号,性别,年龄
from 学生
where 所在系='英语系'
--10
create unique index IX_课程号 on 课程(课程号)
--11
create trigger trig1 on 学生
for delete
as
declare @SID char(10)
select @SID=学号 from deleted
begin
delete from 选课 where 学号=@SID
end