数据库原理与应用复习资料.docx
- 文档编号:28042749
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:20
- 大小:95.32KB
数据库原理与应用复习资料.docx
《数据库原理与应用复习资料.docx》由会员分享,可在线阅读,更多相关《数据库原理与应用复习资料.docx(20页珍藏版)》请在冰豆网上搜索。
数据库原理与应用复习资料
1-3数据库阶段的数据管理有哪些特色?
答:
主要有5个特点:
采用数据模型可以表示复杂的数据结构;有较高的数据独立性;
为用户提供了方便的用户接口;提供了4个方面的数据控制功能;对数据的操作以数据项为
单位,增加了系统的灵活性。
1-4什么是数据独立性?
在数据库中有哪两级独立性?
答:
数据独立性是指应用程序与DB的数据结构之间的相互独立。
在物理结构改变时,尽量不影响应用程序,称为物理独立性;在逻辑结构改变时,尽量不影响应用程序,称之为逻辑数据独立性。
1-5试解释DB、DBMS和DBS三个概念。
答:
DB是长期存储在计算机内、有组织的、统一管理的相关数据的集合。
DBMS是位于用户与0S之间的一层数据管理软件,它为用户或应用程序提供访问DB的方法。
DBS是实现有组织地、动态地存储大量关联数据、方便多用户访问的计算机硬件、软件
和数据资源组成的系统,即采用数据库技术的计算机系统。
2-2逻辑记录与物理记录、逻辑文件与物理文件有哪些联系和区别?
答:
逻辑数据是用户用以操作的数据形式,是抽象的概念化数据。
物理数据是实际存放在存储设备上的数据。
逻辑数据与物理数据在结构上可以差别很大,需通过两级映象来进行数据传输和格式转换。
从以上的解释可以看出,逻辑记录和逻辑文件是用户在程序中使用的记录和文件,而物理记录和物理文件是指磁盘上的记录和文件。
逻辑记录、文件与物理记录、文件在结构、组成上可以有很大的差异,而数据库管理软件就是通过三级结构两级映象来实现逻辑数据与物理数据之间的转换。
2-3试述ER模型、层次模型、网状模型、关系模型和面向对象模型的主要特点。
答:
ER模型直接表示实体类型及实体间联系,与计算机系统无关,充分反映用户的需求,用户容易理解。
层次模型的数据结构为树结构,记录之间联系通过指针实现,查询较快,但DML属于过程化的语言,操作复杂。
网状模型的数据结构为有向图,记录之间联系通过指针实现,查询较快,并且容易实现M:
N联系,但DML属于过程化的语言,编程较复杂。
关系模型的数据结构为二维表格,容易为初学者理解。
记录之间联系通过关键码实现。
DML属于非过程化语言,编程较简单。
面向对象模型能完整描述现实世界的数据结构,具有丰富的表达能力,能表达嵌套、递归的数据结构。
但涉及的知识面较广,用户较难理解,这种模型尚未普及。
2-4数据之间的联系在各种结构数据模型中是怎么实现的?
答:
在层次、网状模型中,数据之间的联系通过指针实现的;在关系模型中,数据之间联系通过外键和主键间联系实现的;在面向对象模型中,数据之间嵌套、递归联系通过对象标识符(OID)实现的。
2-5DB的三级模式结构描述了什么问题?
试详细解释。
答:
DB的三级模式结构是对数据的三个抽象级别,分别从外部(用户)级、概念级和内部级去观察数据库。
外部级是用户使用的局部数据库的逻辑结构,其描述称为外模式。
概念级是DB的整体逻辑结构,其描述称为概念模式。
内部级是DB的物理结构,其描述称为内模式。
3-7设教务管理数据库中有三个关系
S(SNO,SNAME,AGE,SEX,SDEPT)
SC(SNO,CNO,GRADE)
C(CNO,CNAME,CDEPT,TNAME)
试用关系代数表达式表示下列查询语句:
⑴检索LIU老师所授课程的课程号、课程名。
⑵检索年龄大于23岁的男学生的学号与姓名。
⑶检索学号为S3学生所学课程的课程名与任课教师名。
⑷检索至少选修LIU老师所授课程中一门课的女学生姓名。
⑸检索WANG同学不学的课程的课程号。
⑹检索至少选修两门课程的学生学号。
⑺检索全部学生都选修的课程的课程号与课程名。
⑻检索选修课程包含LIU老师所授课程的学生学号。
解:
⑴πCNO,CNAME(σTEACHER=’LIU’(C))
⑵πSNO,SNAME(σAGE>’23’∧SEX=’M’(SC))
⑶πCNAME,TEACHER(σSNO=’S3’(SCC))
⑷πSNAME(σSEX=’F’∧TEACHER=’LIU’(SSCC))
⑸πCNO(C)-πCNO(σSNAME=’WANG’(SSC))
⑹π1(σ1=4∧2≠5(SC×SC))
⑺πCNO,CNAME(C(πSNO,CNO(SC)÷πSNO(S)))
⑻πSNO,CNO(SC)÷πCNO(σTEACHER=’LIU’(C))
4-2对于教务管理数据库的三个基本表
S(SNO,SNAME,SEX,AGE,SDEPT)
SC(SNO,CNO,GRADE)
C(CNO,CNAME,CDEPT,TNAME)
试用SQL的查询语句表达下列查询:
⑴检索LIU老师所授课程的课程号和课程名。
⑵检索年龄大于23岁的男学生的学号和姓名。
⑶检索学号为200915146的学生所学课程的课程名和任课教师名。
⑷检索至少选修LIU老师所授课程中一门课程的女学生姓名。
⑸检索WANG同学不学的课程的课程号。
⑹检索至少选修两门课程的学生学号。
⑺检索全部学生都选修的课程的课程号与课程名。
⑻检索选修课程包含LIU老师所授课程的学生学号。
解:
⑴SELECTCNO,CNAME
FROMC
WHERETEACHER=’LIU’;
⑵SELECTSNO,SNAME
FROMS
WHEREAGE>23ANDSEX=’M’;
⑶SELECTCNAME,TEACHER
FROMSC,C
WHERESC.CNO=C.CNOANDSNO=’200915146’
⑷SELECTSNAME(连接查询方式)
FROMS,SC,C
WHERES.SNO=SC.SNOANDSC.CNO=C.CNOANDSEX=’F’ANDTEACHER=’LIU’;
或:
SELECTSNAME(嵌套查询方式)
FROMS
WHERESEX=’F’ANDSNOIN
(SELECTSNO
FROMSC
WHERECNOIN(SELECTCNO
FROMC
WHERETEACHER=’LIU’))
或:
SELECTSNAME(存在量词方式)
FROMS
WHERESEX=’F’ANDEXISTS(SELECT*
FROMSC
WHERESC.SNO=S.SNO
ANDEXISTS(SELECT*
FROMC
WHEREC.CNO=SC.CNOANDTEACHER=’LIU’))
⑸SELECTCNO
FROMC
WHERENOTEXISTS
(SELECT*
FROMS,SC
WHERES.SNO=SC.SNOANDSC.CNO=C.CNOANDSNAME=’WANG));
⑹SELECTDISTINCTX.SNO
FROMSCASX,SCASY
WHEREX.SNO=Y.SNOANDX.CNO!
=Y.CNO;
⑺SELECTCNO.CNAME
FROMC
WHERENOTEXISTS(SELECT*
FROMS
WHERENOTEXISTS
(SELECT*
FROMSC
WHERESNO=S.SNOANDCNO=C.CNO));
⑻SELECTDISTINCTSNO
FROMSCASX
WHERENOTEXISTIS
(SELECT*
FROMC
WHERETEACHER=’LIU’ANDNOTEXISTS
(SELECT*
FROMSCASY
WHEREY.SNO=X.SNOANDY.CNO=C.CNO));
4-4试用SQL更新语句表达对4.2给出的教务管理数据库中三个基本表S、SC、C进行如下更新操作:
⑴往基本表S中插入一个学生元组(‘200912143’,‘张晶’,21)。
⑵在基本表S中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别,并把检索到的值送往另一个已存在的基本表STUDENT(SNO,SNAME,SEX)。
⑶在基本表SC中删除尚无成绩的选课元组。
⑷把张成民同学在SC中的选课记录全部删去。
⑸把选修高等数学课程中不及格的成绩全部改为空值。
⑹把低于总平均成绩的女同学成绩提高5%。
⑺在基本表SC中修改4号课程的成绩,若成绩小于等于75分时提高5%,若成绩大于75分时提高4%(用两个UPDATE语句实现)。
解:
⑴INSERTINTOS(SNO,SNAME,AGE)
VALUES(‘200912143’,’张晶’,21);
⑵INSERTINTOSTUDENT(SNO,SNAME,SEX)
SELECTSNO,SNAME,SEX
FROMS
WHERESNOIN(SELECTSNO
FROMSC
WHERE80<=ALL(SELECTGRADE
FROMSC
GROUPBYSNO));
⑶DELETEFROMSC
WHEREGRADEISNULL;
⑷DELETE
FROMSC
WHERESNOIN(SELECTSNO
FROMS
WHERESNAME=’张民’)
⑸UPDATESC
SETGRADE=NULL
WHEREGRADE<60ANDCNOIN(SELECTCNO
FROMC
WHERECNAME=’高等数学’);
⑹UPDATESC
SETGRADE=GRADE*1.05
WHERESNOIN(SELECTSNO
FROMS
WHERESEX=’F’)
ANDGRADE<(SELECTAVG(GRADE)
FROMSC);
⑺用两个UPDATE语句实现:
UPDATESC
SETGRADE=GRADE*1.04
WHERECNO=’4’ANDGRADE>75;
UPDATESC
SETGRADE=GRADE*1.05
WHERECNO=’4’ANDGRADE<=75;
注意:
这两个UPDATE语句的顺序不能颠倒。
4-7预处理方式对于嵌入式SQL的实现有什么重要意义?
答:
此时宿主语言的编译程序不必改动,只要提供一个SQL函数定义库,供编译时使用。
预处理方式只是把源程序中的SQL语句处理成宿主语言的函数调用形式。
5-3设关系模式R(ABCD),F是R上成立的FD集,F={A→B,C→B},则相对于F,试写出关系模式R的关键码。
并说明理由。
解:
R的关键码为ACD。
因为从已知的F,只能推出ACD→ABCD。
5-4设关系R(ABCDE)上FD集为F,并且F={A→BC,CD→E,B→D,E→A}。
求出R的候选键。
解:
R的候选键有4个:
A、E、CD和BC。
5-8设关系模式R(ABCD),F是R上成立的FD集,F={AB→CD,A→D}。
⑴试说明R不是2NF模式的理由。
⑵试把R分解成2NF模式集。
答:
⑴从已知的函数依赖集F,可知R的候选键是AB。
另外,由AB→CD可推出AB→D,再由A→D可知AB→D是部分(局部)函数依赖,因此R不是2NF模式。
⑵如果将R分解成ρ={AD,ABC},则ρ是2NF模式集。
5-9设关系模式R(ABC),F是R上成立的FD集,F={C→B,B→A}。
⑴试说明R不是3NF模式的理由。
⑵试把R分解成3NF模式集。
答:
⑴从已知函数依赖集F可知,R的候选键是C。
由C→B,B→A可知,C→A是一个传递依赖,因此R不是3NF模式。
⑵此时如果将R分解成ρ={CB,BA},则ρ是3NF模式集。
5-11设有关系模式R(运动员编号,比赛项目,成绩,比赛类别,比赛主管),如果规定:
每个运动员每参加一个比赛项目,只有一个成绩;每个比赛项目只属于一个比赛类别;每个比赛类别只有一个比赛主管。
试回答下列问题:
⑴根据上述规定,写出模式R的基本FD和关键码;
⑵说明R不是2NF的理由,并把R分解成2NF模式集;
⑶进而分解成3NF模式集。
解:
⑴基本的FD有3个:
(运动员编号,比赛项目)→成绩
比赛项目→比赛类别
比赛类别→比赛主管
R的关键码为(运动员编号,比赛项目)。
⑵R有两个这样的FD:
(运动员编号,比赛项目)→(比赛类别,比赛主管)
比赛项目→(比赛类别,比赛主管)
可见,前一个FD是部分(局部)函数依赖,所以R不是2NF模式。
如果把R分解成R1(比赛项目,比赛类别,比赛主管)
R2(运动员编号,比赛项目,成绩)
这里,R1和R2都是2NF模式。
⑶R2已是3NF模式。
在R1中,存在两个FD:
比赛项目→比赛类别
比赛类别→比赛主管
因此,“比赛项目→比赛主管”是一个传递依赖,R1不是3NF模式。
R1应分解为R11(比赛项目,比赛类别)
R12(比赛类别,比赛主管)
这样,ρ={R11,R12,R2}是一个3NF模式集。
6-15设某商业集团数据库中有三个实体集。
一是“公司”实体集,属性有公司编号、公司名、地址等;二是“仓库”实体集,属性有仓库编号、仓库名、地址等;三是“职工”实体集,属性有职工编号、姓名、性别等。
公司与仓库间存在“隶属”联系,每个公司管辖若干仓库,每个仓库只能属于一个公司管辖;
仓库与职工间存在“聘用”联系,每个仓库可聘用多个职工,每个职工只能在一个仓库工作,仓库聘用职工有聘期和工资。
试画出ER图,并在图上注明属性、联系的类型。
再转换成关系模式集,并指出每个关系模式的主键和外键。
解:
ER图及属性、联系图如下:
将ER图转换成为关系模式集为:
公司(公司编号,公司名,地址)
仓库(仓库编号,仓库名,地址,公司编号)
职工(职工编号,姓名,性别,仓库编号,聘期,工资)
6-16设某商业集团数据库中有三个实体集。
一是“商品”实体集,属性有商品号、商品名、规格、单价等;二是“商店”实体集,属性有商店号、商店名、地址等;三是“供应商”实体集,属性有供应商编号、供应商名、地址等。
供应商与商品间存在“供应”联系,每个供应商可供应多种商品,每种商品可向多个供应商订购,供应商供应每种商品有月供应量;商店与商品间存在“销售”联系,每个商店可销售多种商品,每种商品可在多个商店销售,商店销售商品有月计划数。
试画出ER图,并在图上注明属性、联系的类型。
再转换成关系模式集,并指出每个关系模式的主键和外键。
解:
ER图及属性、联系图为:
这个ER图转换的关系模式如下:
商品(商品号,商品名,规格,单价)
供应商(供应商编号,供应商名,地址)
商店(商店号,商店名,地址)
供应(商品号,供应商编号,月供应量)
销售(商品号,商店号,月计划数)
6-17假设要为银行的储蓄业务设计一个数据库,其中涉及到储户、存款、取款等信息,试设计ER模型。
解:
储蓄业务主要是存款、取款业务,设计的ER图如下所示。
6-18假设某超市公司要设计一个数据库系统来管理该公司的业务信息。
该超市公司的业务管理规则如下:
⑴该超市公司有若干仓库,若干连锁商店,供应若干商品。
⑵每个商店有一个经理和若干收银员,每个收银员只在一个商店工作。
⑶每个商店销售多种商品,每种商品可在不同的商店销售。
⑷每个商品编号只有一个商品名称,但不同的商品编号可以有相同的商品名称。
每种商品可以有多种销售价格。
⑸超市公司的业务员负责商品的进货业务。
试按上述规则设计ER模型。
解:
1.简单查询实验
用Transact-SQL语句表示下列操作,在“学生选课”数据库中实现其数据查询操作:
(1)查询数学系学生的学号和姓名。
selectsno,sname
froms
wheresdept='ma'
(2)查询选修了课程的学生学号。
selectdistinctsno
fromsc
(3)查询选修课程号为0101的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
selectsno,grade
fromsc
wherecno='0101'orderbygradeasc,snodesc
(4)查询选修课程号为0101的成绩在80-90分之间的学生学号和成绩,并将成绩乘以系数0.8输出。
selectsno,0.8*grade
fromsc
wherecno='0101'andgradebetween80and90
(5)查询数学系或计算机系姓张的学生的信息。
select*
froms
wheresdept='计算机系'ORSDEPT='数学系'andsnamelike'张%'
(6)查询缺少了成绩的学生的学号和课程号。
selectsno,cno
fromsc
wheregradeisnull
2.连接查询实验
用Transact-SQL语句表示,并在“学生选课”数据库中实现下列数据连接查询操作:
(1)查询每个学生的情况以及他(她)所选修的课程。
selects.*,ame
froms,sc,c
wheres.sno=sc.snoando=o
(2)查询学生的学号、姓名、选修的课程名及成绩。
selects.sno,sname,cname,grade
froms,sc,c
wheres.sno=sc.snoando=o
(3)查询选修离散数学课程且成绩为90分以上的学生学号、姓名及成绩。
selects.sno,sname,grade
froms,sc,c
wheres.sno=sc.snoando=oandcname='离散数学'andgrade>=90
(4)查询每一门课的间接先行课(即先行课的先行课)。
selecto,second.cpno
fromcfirst,csecond
wherefirst.cpno=o
用Transact-SQL语句表示,在学生选课库中实现其数据嵌套查询操作:
(l)查询选修了离散数学的学生学号和姓名。
selectsno,grade
fromsc,c
whereo=oandcname='计算机基础'ANDGRADE>
(SELECTAVG(GRADE)
FROMSC,C
WHEREC.CNO=SC.CNOANDCNAME='计算机基础');
(2)查询0101课程的成绩高于张林的学生学号和成绩。
SELECTAVG(GRADE)
FROMSC,C
WHERESC.CNO=C.CNOANDcname='计算机基础'
(3)查询其他系中年龄小于计算机系年龄最大者的学生。
SELECTSNAME,AGE
FROMS
WHERESEX='男'ANDAGE<
(SELECTAVG(AGE)
FROMS
WHERESEX='女')
(4)查询其他系中比计算机系学生年龄都小的学生。
selectdept,count(*)astotal
froms
groupbydept
orderbytotaldesc
(5)查询同王洪敏数据库原理课程分数相同的学生的学号。
selectdept,cno,avg(grade)as平均分
froms,sc
groupbydept,cno
(6)查询选修了0206课程的学生姓名。
selectx.sno,avg(grade)as平均分
fromscasx,casy,casz
whereo=oando=oandame='计算机基础'andame='离散数学'
groupbyx.sno
在学生选课数据库中实现其查询操作:
/*1.创建各系学生情况存储过程(输入参数:
系名)*/
createproceduredept2@系名char(16)
as
select*
froms
wheredept=@系名
execdept2'计算机系'
/*2.创建某门课程的成绩统计的存储过程(输入参数:
课程名)*/
createproceduregrade2@课程名char(30)
as
selecto,grade,ame
fromsc,c
whereo=oandcname=@课程名
execgrade2'离散数学'
/*创建某个年龄段学生情况存储过程(年龄)*/
createprocedureage
as
select*
froms
whereagebetween19and20
execage
/*创建统计某系平均成绩的存储过程(系名*/)
createprocedureavggrade@系名char(16)
as
selectavg(grade),cname
fromsc,c
whereo=o
groupbycname
execavggrade'计算机系'
/*创建统计某门课程不及格人数的存储过程(课程名)*/
createproceduregrade3@课程名char(30)
as
selectcname,count(*)astotal
froms,c,sc
wheres.sno=sc.snoando=oandgrade<60
groupbycname
execgrade3'离散数学'
/*6.修改存储过程*/
/*删除存储过程*/
dropproceduredept
CREATEDATABASEWDQ
USEWDQ
createdatabaseJWXT
CREATETABLESTUDENT(SNOCHAR(8)PRIMARYKEY,
SNAMECHAR(8)NOTNULL,
AGEINT,
SEXCHAR
(2),
DEPTVARCHAR(50)
);
CREATETABLECOURSE(CNOCHAR(4)PRIMARYKEY,
CNAMECHAR(20)NOTNULL,
CREDITFLOAT,
PCNOVARCHAR(20),
DESCRIBEVARCHAR(100)
);
CREATETABLESC(SNOCHAR(8),
CNOCHAR(4),
GRADEFLOAT,
PRIMA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 应用 复习资料