数据库复习题总结.docx
《数据库复习题总结.docx》由会员分享,可在线阅读,更多相关《数据库复习题总结.docx(13页珍藏版)》请在冰豆网上搜索。
![数据库复习题总结.docx](https://file1.bdocx.com/fileroot1/2023-5/23/33fa64b8-1cbb-45d3-a623-eff6f396dad9/33fa64b8-1cbb-45d3-a623-eff6f396dad91.gif)
数据库复习题总结
2011数据库复习题总结
《数据库与信息系统》参考题
一、基本知识点
1.数据库管理系统由一个互相关联的数据的集合和一组用以访问这些数据的程序组成。
这些数据用以描述某个特定的企业。
DBMS的基本目标是要提供一个可以让人们方便地、高效地存取信息的环境。
2.数据库系统用于存储大量信息。
对数据的管理既涉及到信息存储结构的定义,又涉及到信息操作机制的提供。
另外,数据库系统还必须提供所存储数据的安全性保证,即使在系统崩溃或有人企图越权访问时也应如此。
如果数据被多用户共享,那么系统还必须设法避免可能产生的异常结果。
3.数据库系统的一个主要目的是要提供给用户数据的抽象视图,也就是说,系统隐藏了数据存储和维护的细节。
这是通过定义三个可对数据库系统进行观察的抽象层次来实现的。
这三个层次是:
物理层、逻辑层和视图层。
4.数据库结构的基础是数据模型,一个用于描述数据、数据间关系、数据语义和数据约束的概念工具的集合。
5.随着时间的推移,信息会被插人或删除,数据库随之也发生了改变。
特定时刻存储在数据库中的信息的集合称作数据库的一个实例。
数据库的总体设计称作数据库模式。
6.在某个层次上修改模式而不影响较高一层模式的能力叫做数据独立性。
有两个层次的数据独立性:
物理数据独立性和逻辑数据独立性。
7.数据库模式通过一系列用数据定义语言(DDL)表达的定义来描述。
DDL语句经过编译,产生存储在一个特殊文件中的一系列表,这个文件称作数据字典,因此数据字典中存储的是元数据。
8.数据操纵语言DML是使得用户可以访问和操纵数据的语言,主要有两种:
过程化的DML和非过程化的DML。
过程化的DML要求用户指明需要什么数据以及如何获得这些数据,非过程化的DML只要求用户指明需要什么数据,而不必指明如何获得这些数据。
9.事务管理器负责保证无论是否有故障发生,数据库都要处于一致的(正确的)状态。
事务管理器还保证并发事务的执行互不冲突。
存储管理器是在数据库中存储的低层数据与应用程序及向系统提交的查询之间提供接口的程序模块。
存储管理器负责与磁盘上存储的数据进行交互。
10.实体一联系(E--R)数据模型基于对现实世界的这样一种认识:
世界由一组基本对象(称作实体)及这些对象间的联系组成。
此模型的主要目的是服务于数据库设计过程,它的发展是为了帮助数据库设计,这是通过允许定义企业模式来实现的。
企业模式代表了数据库的全局逻辑结构,这种全局结构可以用E-R图进行图形化表示。
11.实体是实际存在的可区别于其他对象的对象,我们通过把每个实体同描述该实体的一组属性相联系来将它与其他对象相区别。
联系是多个实体间的相互关联。
相同类型的所有实体的集合构成实体集,相同类型的所有联系的集合构成联系集。
12.映射的基数指明另一实体通过联系集可以和实体集中的多少个实体相联。
13.数据库建模的一个重要任务是要说明实体之间以及联系之间如何相互区别二概念上来说,各个实体或联系是互不相同的,但从数据库的角度来看,它们的差异必须用属性表示出来。
为了进行这样的区别,为每个实体集指定一个主码。
主码是一个或多个属性的集合,这些属性的整体可以使我们在实体集中唯一确定一个实体或在联系集中唯一确定一个联系。
14.特殊化和概括定义了一个高层实体集和一个或多个低层实体集之间内容上的联系。
特殊化是取出高层实体集的一个了集来形成一个低层实体集。
概括是用两个或多个不相交的(低层)实体集的并集来形成一个高层实体集。
高层实体集的属性被低层实体集继承。
15.ER模型的一个局限是它不能表示联系间的联系,解决的办法是采用聚集。
聚集是一种抽象,它将联系集看作高层实体集,这样,联系集及其相关实体集就可以像其他实体一样被看作高层实体集。
16.符合ER图的数据库可以用表的集合来表示。
数据库的每个实体集和联系集都有唯一与之对应,表名即为相应的实体集或联系集的名称。
每个表有多个列,每列有其唯一列名的表。
17.关系数据模型建立在表的集合的基础上。
数据库系统的用户可以对这些表进行查询,可以插入新元组、删除元组以及更新(修改)元组。
表达这些操作的语言有几种。
元组关系演算和域关系演算是非过程化语言,代表了关系杳询语言所需的基本能力。
关系代数是一种过程化语言,在能力上它等价于限制在安全表达式范围内的关系演算的两种形式:
:
关系代数定义了关系查询语言中使用的基本运算。
18.域约束指出了与属性相关联的可取值的集合。
它也可以禁止某属性上取空值。
参照完整性约束保证一个关系的给定属性集上的取值也出现在另一关系的某个属性集上。
函数依赖是码依赖的扩展。
它要求某属性集的值唯一确定另一属性集的值。
19.良好数据库设汁的三个准则:
1)BCNF2)无损连接。
3)保持依赖。
20.什么是超码、候选码、主码、外码?
答:
(码是数据系统中的基本概念。
所谓码就是能唯一标识实体的属性,他是整个实体集的性质,而不是单个实体的性质。
它包括超码,候选码,主码。
超码是一个或多个属性的集合,这些属性可以让我们在一个实体集中唯一地标识一个实体。
)当一个实体集中包括有多个码时,通常要选定其中的一个码为主码,其他的码就是候选码。
实体集中不能唯一标识实体属性的叫次码。
P23
20.关系代数六个基本运算包括哪些?
答:
“选择”、“投影”、笛卡尔积、并集、差集和“重命名”
21.空值NULL的含义是什么?
答:
空值不是空格值,它是跳过或不输的属性值,用Null表示,空值说明不知道或无意思。
22.常见的聚集函数有哪些?
答:
计算count(数目),sum(和),avg(均值),max(最大值)和min(最小值)的函数。
23.解释ACID的具体含义。
答:
ACID,指数据库事务正确执行的四个基本要素的缩写。
包含:
原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
一个支持事务(Transaction)的数据库系统,必需要具有这四种特性,否则在事务过程(Transactionprocessing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。
原子性:
整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。
事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性:
在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
隔离性:
两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。
持久性:
在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
24.视图的作用是什么?
答:
视图是根据子模式设计的关系,它是由一个或几个基本表(或已定义的视图)导出的虚表。
视图能够简化用户的操作;视图机制可以使用户以不同的方式看待同一数据;视图对数据库的重构提供了一定程度的逻辑独立性;视图可以对机密的数据提供安全保护。
25.常见的完整性约束有哪些?
(没找到)
26.联系有三种常见的多重性,即多对多、多对一和一对一,它们的含义是什么?
在<数据库系统原理及应用教程>的23页在湖旁边那儿有卖的,3元本
27.实体-联系图主要构件包括哪些?
(9个)(没找到)
28.如何将ER图转换成关系模式?
在<数据库系统原理及应用教程>的56页在湖旁边那儿有卖的,3元本
29.什么是BCNF?
答:
BCNF是由Boyce和Codd提出的,比3NF又进了一步,通常认为是修正的第三范式.
所谓第三范式,定义是关系模式R中若不存在这样的码X,属性组Y及非主属性Z,使得X—>Y,Y—>Z成立,(不存在Y—>X),则称R为3NF.
即当2NF消除了非主属性对码的传递函数依赖,则称为3NF。
对3NF关系进行投影,将消除原关系中主属性对码的部分与传递依赖,得到一组BCNF关系。
BCNF定义,关系模式中,若X函数确定Y且Y不在X内时X必含有码,则此关系属于BCNF。
一个满足BCNF的关系模式的条件:
1.所有非主属性对每一个码都是完全函数依赖。
2.所有的主属性对每一个不包含它的码,也是完全函数依赖。
3.没有任何属性完全函数依赖于非码的任何一组属性。
30.包括课堂上所讲授的主要内容。
(第1章引言,第2章关系数据库,第3章SQL,第6章数据库设计与ER模型)
二、设计部分
1.考虑下面的关系数据库,主码加了下划线。
给出关系代数表达式来表示下列每个查询:
branch(branch_name,branch_city,assets)
customer(customer_name,customer_street,customer_city)
account(account_number,branch_name,balance)
loan(loan_number,branch_name,amount)
depositor(customer_name,account_number)
borrower(customer_name,loan_number)
1)Findallloansofover$900.
2)Findtheloannumberforeachloanofanamountgreaterthan$1200.
3)Findthenamesofallcustomerswhohavealoan,anaccount,orboth,fromthebank.
4)FindthenamesofallcustomerswhohavealoanatthePerryridgebranch.
5)FindthenamesofallcustomerswhohavealoanatthePerryridgebranchbutdonothaveanaccountatanybranchofthebank.
6)Findthenamesofallcustomerswhohavealoanandanaccountatbank.
7)Findthenameofallcustomerswhohavealoanatthebankandtheloanamount.
8)Findallcustomerswhohaveanaccountfromatleastthe“Downtown”andtheUptown”branches.
9)FindallcustomerswhohaveanaccountatallbrancheslocatedinBrooklyncity.
解:
(1)
amout>900(loan)
(2)
loan_number(
amout>1200(loan))
(3)
customer_name(depositor)
customer_name(borrower)
(4)
customer_name(
branch_name=Perryridge(loan
borrower))备注:
为连接,在word中没找到那个符号,所以在此处用
代替,下面都是这样。
(5)
customer_name(
branch_name=Perryridge(loan
borrower))-
customer_name(
branch_name=Perryridge(loan
accout))
(6)
customer_name(depositor)
customer_name(borrower)
(7)
customer_name,amount(loan
borrower)
(8)不懂那句英文什么意思,纠结!
(9)
branch_city=Brooklyn(customer×depositor)
2.(实践习题3.1)考虑图3-11定义的保险公司数据库,其中加下线线的是主码。
对这个关系数据库写出如下的SQL查询语句:
1)找出1989年其车辆出过交通事故的人员总数。
2)向数据库中增加一个新的事故,对每个必需的属性可以设定任意值。
3)删除“Johnsmith”的马自达车(Mazda)。
4)(习题3.8)找出和Johnsmith的车有关的交通事故数量。
5)(习题3.8)对事故报告编号为“AR2197”的且车牌是AABB2000的车辆损坏保险费用更新到3000美元。
---------------------------------------------------------------------------------------
Person(driver_id,name,address)
Car(license,model,year)
Accident(report_number,data,location)
Owns(driver_id,license)
License(driver_id,license,report_number,damage_amount)
图3-11保险公司数据库
解:
(1)SELECTCOUNT(*)
FROMLicense,Accident
WHERELicense.report_name=Accident.report_nameANDAccident.date=1989
(2)INSERT
INTOAccident(report_number,data,location)
VALUES(1,2,3)
(3)DELETE
FROMCar
WHEREmodel=MazdaANDlicense=(SELECTlicense
FROMPerson,Owns
WHEREPerson.driver_id=License.driver_idANDPerson.name=’Johnsmith’)
(4)SELECTCOUNT(*)
FROMPerson,License
WHEREPerson.driver_id=License.driver_idANDPerson.name=’Johnsmith’
(5)UPDATELicense
SETdamage_amount=3000
WHEREreport_number=’AR2179’ANDLicense=’AABB2000’
3.(实践习题3.2)考虑图3-12的雇员数据库,其中加下划线的是主码。
为下面每个查询语句写出SQL表达式:
1)找出所有为FirstBankCorporation工作的雇员名字和居住城市。
2)找出所有为FirstBankCorporation工作且薪金超过1万美元的雇员名字、居住街道和城市。
3)找出所有不为FirstBankCorporation工作的雇员。
4)找出数据库中工资比SmallBankCorporation的每个雇员都高的所有雇员。
5)假设一个公司可以在好几个城市有分部。
找出位于SmallBankCorporation所有所在城市的所有公司。
6)找出雇员最多的公司。
7)找出平均工资高于FirstBankCorporation平均工资的所有公司。
------------------------------------------------------------------------------------------
Employee(employee_name,street,city)
Works(employee_name,company_name,salary)
Company(company_name,city)
Manages(employee_name,manager_name)
图3-12雇员数据库
解:
(1)SELECTemployee_name,city
FROMEmployee,Works
WHEREEmployee.employee_name=Works.employee_nameAND
Wpany_name=FistBankCooporation
(2)SELECTemployee_name,city,street
FROMEmployee,Works
WHEREEmployee.employee_name=Works.employee_nameAND
Wpany_name=FistBankCooporationANDsalary>10000
(3)SELECTemployee_name
FROMWorks
WHEREWpany_name!
=FistBankCooporation
(4)SELECTemployee_name
FROMWorks
WHEREsalary>(SELECTMAX(salary)
FROMWorks
WHEREWpany_name=SmallBankCooporation)
(5)SELECTcompany_name
FROMCompany
WHEREcity=(SELECTcity
FROMCompany
WHEREWpany_name=SmallBankCooporation)
(6)SELECTcompany_name
FROMWorks
WHEREMAX(COUNT(employee_name))
GROUPBYcompany_name
(7)SELECTcompany_name
FROMWorks
WHEREAUG(salary)>(SELECTAUG(salary)
FROMWorks
WHEREWpany_name=FistBankCooporation)
GROUPBYcompany_name
4.(实践习题6.1)为车辆保险公司设计一个E-R图。
每个客户有一辆或多辆车。
每辆车可以关联0次或任意多次事故的记录。
并构造合适的关系表。
需要画图,在word里不方面,所以此题略!
5.(实践习题6.2)大学的注册办公室维护关于以下实体的数据:
(a)课程,包括编号、名称、学分、课程提纲和选修条件;
(b)课程提供,包括课程编号、年、学期、节数、教师(可能多个)、时间和教室;
(c)学生,包括学生标识、名字和计划(program);
(d)教师,包括标识号、名字、系和职称。
此外,学生课程和登记和学生所选的每门课程的成绩评定都要适当地建模。
(进行ER模型的设计,并构造合适的关系表。
)
需要画图,在word里不方面,所以此题略!
6.(实践习题6.3)考虑一个用于记录学生各门课程考试成绩的数据库。
(a)构造一个将考试建模成实体的E-R图,为以上的数据库设计一个三元联系。
(b)构造另一个E-R图,其中只用二元联系来连接sutdents和course_offerings。
要求特定“学生和课程”对之间只有一个联系,而且可以表示出学生在一门课程的不同考试中的成绩。
需要画图,在word里不方面,所以此题略!
7.图书借阅关系数据库如下:
图书(图书号,书名,作者,单价,库存量)
读者(读者号,姓名,工作单位,地址)
借阅(图书号,读者号,借期,还期,备注)
其中,还期为NULL表示该书未还。
1)用SQL语句查询未还图书的读者姓名和单位。
2)用SQL语句查询“马林”所借图书中未还的书名。
3)用SQL语句查询书名为“高等数学”的库存量。
4)解释以下SQL语句的含义:
SELECT姓名FROM读者
WHERE读者号IN
(SELECT读者号 FROM借阅 WHERE图书号=’’001’’)
解:
(1)SELECT姓名,工作单位
FROM读者,借阅
WHERE读者.读者号=借阅.读者号AND还期=NULL
(2)SELECT书名
FROM读者,图书,借阅
WHERE图书.图书号=借阅.图书号AND读者.读者号=借阅.读者号AND还期=NULLAND姓名=‘马林’
(3)SELECT库存量
FROM图书
WHERE书名=‘高等数学’
(4)查询借阅了图书号为‘001’的图书的读者。
8.设某商业集团数据库中有商店、商品、职工三类实体。
其中商店的属性有:
商店编号、商店名称、地址;商品的属性有:
商品号、商品名、规格、单价;职工的属性有:
职工号、姓名、性别。
每个商店可销售多种商品,每种商品也可放在多个商店销售。
每个商店聘用多名职工,每名职工只能在一个商店工作。
根据上面叙述,解答以下问题:
1)设计E—R模型。
2)将E—R模型转换成关系模型,标出每一个关系的主键码。