《数据库原理与系统》习题解答文档格式.docx
《《数据库原理与系统》习题解答文档格式.docx》由会员分享,可在线阅读,更多相关《《数据库原理与系统》习题解答文档格式.docx(33页珍藏版)》请在冰豆网上搜索。
习题二
一、概念题
1.解释下列事业术语的合义:
关系、元组、属性、属性域、超码、候选码、主码、外码。
2.简述关系的性质。
3.说明关系数据库实现数据之间联系的方法。
4.什么是实体完整性和参照完整性?
5.什么是数据字典和系统目录?
6.什么是关系代数的选锈、投影、并、差、笛卡儿积、交和连接运算?
7.什么是自然连接?
8.什么是左外连接、右外连接和全外连接?
9.外连接与自然连接的区别是什么?
1.下面对关系性质的描述中,错误的是
A、表中的—行称为一个元组B、行与列交叉点不允许有多个值
C、表中的一列称为一个属性D、表中任意两行可能相同
2.“元数据”是指
A、数据结构的描述B、数据项的描述
C、数据的来源D、系统自身的各种有用信息,包括数据结构的描述
3.在数据库系统中,空值是
A、0B、空格C、空字符串D、不确定
4.实体完整性是指关系中
A、不允许有空行B、主码不允许空值
C、属性值外码取空值D、外码允许取空值
5.已知关系R与S如图2.25所示:
在关系S中,违反参照完整性约束的元组是
A、(11,21)B、(22,NULL)
C、(33,33)A、(44,11)
6.已知关系R和S,R∩S等价于
A、(R-S)-SB、S-(S-R)
C、(S-R)-RD、S-(R-S)
7.关系R和S各有10个元组,则关系R×
S的元组个数为
A、10B、20
C、100D、不确定
8.从关系中选择指定的属性组成新关系的关系运算是
A、选取B、投影C、连接D、笛卡儿乘积
9.有关系:
学生(学号,姓名,性别,专业,宿舍编号,宿舍地址),主码是
A、宿合编号B、学号
C、宿舍地址,姓名D、宿舍编号,学号
10.有两个关系:
部门(编号,部门名称,地址.电话)和职工(职工号,姓名,性别,职务.编号)。
职工关系的外码是
A、职工号B、编号C、职工号,编号D、编号,部门名称
11.若关系R1和R2的结构相同,各有10个元组,则R1R2的元组个数为
A、10B、小于等于10C、20D、小于等于20
12.设关系R和S的属性个数分别为2和3,则与关系代数表达式
等价的是
A、B、C、D、
13.当关系R和S自然连接时,能够把R和S中不满足连接条件的元组保留在结果关系中的运算是
A、左外连接B、右外连接C、全外连接D、等值连接
14.设关系R(A,B)和S(B,C)中分别有10个和15个元组,属性B是R的主码.则R|×
|S中元组数目的范围是
A、(0,15)B、(10,15)C、(10,25)D、(0,150)
l5.设有关系R和S如图2.26所示,则关系
的元组数目是
A、6B、7C、8D、9
16.设有关系R和S,如图2.27所示,R的主码是编号,S的主码是学号、外码是编号。
若有如下4个元组:
ⅠI(S3李林,C2),Ⅱ(Sl,江荷,C1),Ⅲ(S4,白玉.C4),Ⅳ(S5,康嘉,NULL),能够插入关系3的元组是
A、I,Ⅱ,ⅣB、I,ⅢC、I,ⅡD、I,Ⅳ
]7.已知关系R如图2.28所示,可以作为R主码的属性组是
A、XYZB、XYWC、XZWD、YZW
]8.关系R和S分别有20、15个元组,则RS、R-S、R∩S的元组数不可能是
A、29,13,6B、30,15,5C、35,20,0D、28,13,7
R-S=R-(R∩S)
]9.设关系R和S的属性数目分别是a和b、则关系RS的属性数目是
A、a十bB、a—bC、a×
bD、a/b
三、解答题
1.设有4个关系模式:
供应商关系:
S(SNO,SNAME,CITY),属性依次是供应商号、供应商名称和所在城市
零件关系:
P(PNO,PNAME,COLOR),属性依次是是产品号、品名和颜色
工程关系:
J(JNO,JNAME,CITY),属性依次是是工程号、工程名和所在城市
供应关系:
SPJ(SNO,PNO,JNO,QTY),属性依次是供应商号、产品号、工程号和数量
试用关系代数完成下列操作:
(])J1工程零件的所有供应商号i
(2)求供应J1工程P1零件的供应商号;
(3)求供应J1工程红色零件的供应商号;
(4)求没有使用天津供应商生产的红色零件的工程号;
(5)求S1供应商供应零件的所有工程号。
2.设有3个关系模式:
学生(学号,姓名,性别,专业)
课程(课程号,课程名称,学分)
成绩(学号,课程号,分数)
试用关系代数表达式完成下列操作:
(1)所有学生成绩获得满分(100分)的课程号、课程名称;
(2)检索至少有一门课程的分数达到95分以上的学生信息,包括学号、姓名和专业
(3)检索没有任何一门课程成绩在80分以下的学生的信息,包括学号、姓名和专业
(4)检索”英语”专业学生所学课程的信息,包括学号、姓名、课程名称和分数;
(5)检索“数据库原理“课程分数高于90分的所有学生的学号、姓名、专业和分数;
(6)检索没有不及格分数的学生的信息,包括学号、姓名和专业;
(7)检索“国际贸易”专业选修“数据库原理”课程的学号和姓名。
答案:
π课程号,课程名称(σ分数=100(成绩)|×
|课程)
π学号,姓名,专业(σ分数>
=95(成绩)|×
|学生)
π学号,姓名,专业(学生)-π学号,姓名,专业(σ分数<
80(成绩)|×
π学号,姓名,课程名称,分数(课程|×
|成绩|×
|σ专业=‘英语’(学生))
π学号,姓名,专业,分数(σ课程名称=‘数据库原理’(课程)|×
|σ分数>
90(成绩)|×
|学生)
60(成绩)|×
(三表连接,投影)
π学号,姓名,专业(σ课程名称=‘数据库原理’(课程)|×
|σ专业=‘国际贸易’(学生))
3、设有3个关系模式:
员工(职工姓名,街道,城市)
工作(职工姓名,公司名称,工资)
公司(公司名称,城市)
用关系代数表达式来表达下列问题:
(1)列出泰斗公司所有员工的姓名;
(2)列出泰斗公司所有员工的姓名和居住的城市;
(3)列出泰斗公司所有年收入在10万元以上的员工姓名、居住的街道和城市
(4)列出所有居住地与工作的公司在同一城市的员工姓名;
(5)列出不在泰斗公司的所有员工的姓名
π职工姓名(σ公司名称=‘泰斗公司’(工作))
π职工姓名,城市(σ公司名称=‘泰斗公司’(员工|×
|工作)
π职工姓名,街道,城市(σ公司名称=‘泰斗公司’AND工资>
100000(员工|×
|工作)
π职工姓名(σ员工.城市=公司.城市(员工|×
|工作|×
|公司)
(5)列出不在泰斗公司的所有员工的姓名
π职工姓名(员工)-π职工姓名(σ公司名称=‘泰斗公司’(员工|×
|工作|))
习题三
一、单项选择题
1.SQL语言是
A、高级语言B、宿主语言C、汇编语言D、非过程化语言
2.在SQL语言查询语句中,SELECT子句实现关系代数的
A、投影运算B、选择运算C、连接运算D、交运算
3.在SQL语言查询语句中,WHERE子句实现关系代数的
4.为在查询结果中去掉重复元组.应该使用保留字
A、UNIQUEB、UNIONC、COUNTD、DISTINCT
5.当关系R和S做自然连接时,能够保留R中不满足连接条件元组的操作是
A、左外连接B、右外连接C、内部连接D、全外连接
6.SQL语言中,更新表结构的的命令是
A、UPDATETABLEB、MODIFYTABLE
C、ALTERTABLED、CHANGETABLE
7.下列聚合函数中不忽略空值(NULL)的是
A、SUM(列名)B、MAX(列名)C、AVG(列名)D、COUNT(*)
8.SQL语言中,下列涉及空值操作的短语,不正确的是(VFP全部正确,SQLSERVER中C错)
A、AGEISNULLB、AGEISNOTNULL
C、AGE=NULLD、NOT(AGEISNULL)
9.SQL语言中,删除一个表的命令是
A、CLEARTABLEC、DROPTABLE
C、DELETETABLED、REMOVETABLE
10.设有一个关系:
DEPT(DNO,DNANE).如果要找出倒数第三个字母为W.并且至少包含4个字母的DNAME,则查询条件子句应写成WHEREDNANCLIKE//有疑问
A.’__W_%’,B.’_W_%’,C.’__W_’D.’_%W__’
SELECT*FROMSTUDENTWHERESNAMELIKE'
__林_%'
11已知班级和学生关系如图3.11所示。
执行下列语句,在学生关系中插入新的数据:
IINSERTINTO学生VALUES(101,”李玲”,”女”,”C01”)
ⅡINSERTINTO学生VALUES(103,”田京”,”男”,”C03”)
ⅢINSERTINTO学生VALUES(106,”康雨”,”男”,NULL)
ⅣINSERTINTO学生VALUES(105,”何光”,”男”,”C02”)
能正确执行的语句是
A、I,ⅡB、Ⅲ,ⅣC、I,Ⅱ,ⅢD、I,Ⅱ,Ⅲ,Ⅳ
二、解答题
1.没有3个关系模式:
业务员(业务员编号,业务员姓名,性别,年龄,月薪)
订单(订单号,日期,客户编号,业务员编号,金额)
客户(客户编号,客户姓名,地址,类别)
用SQL语句解答下列
(1)-(12)题。
(1)显示所有50岁以上女业务员的姓名和年龄;
(2)检索年龄最大的业务员姓名和年龄;
(3)显示所有业务员的姓名和月薪.要求按照月薪降序排列;
(4)检索月薪在2000元到3000元之间的业务员姓名。
用BETWEEN关键词;
(5)统计每个客户签定订单的数目和总金额;
(6)检索所有经办客户王明订单的业务员姓名(分别用连接和子查询实现)
(7)统计每个业务员签定500元以上订单的数目;
(8)检索签定2个以上订单的业务员姓名;
(9)将所有业务员的月薪增加10%;
(10)将业务员关悦的月薪改为3500元;
(11)检索超过平均月薪的业务员姓名和年龄;
(12)将签定订单总金额超过2万元的月薪增加5%。
SELECT业务员姓名,年龄FROM业务员WHERE年龄>
50AND性别=‘女’
SELECT业务员姓名,年龄FROM业务员WHERE年龄=(SELECTMAX(年龄)FROM业务员)
SELECT业务员姓名,月薪FROM业务员ORDERBY月薪DESC
SELECT业务员姓名FROM业务员WHERE月薪BETWEEN2000AND3000
SELECT客户编号,COUNT(*)订单数目,SUM(金额)总金额FROM订单GROUPBY客户编号
SELECT业务员.业务员姓名FROM业务员,订单,客户WHERE业务员.业务员编号=订单.业务员编号AND订单.客户编号=客户.客户编号AND客户.客户姓名=‘王明’
SELECT业务员.业务员姓名FROM业务员innerjoin订单innerjoin客户on业务员.业务员编号=订单.业务员编号on订单.客户编号=客户.客户编号where客户.客户姓名=‘王明’
SELECT业务员姓名FROM业务员WHERE业务员.业务员编号IN(SELECT业务员编号FROM订单WHERE客户编号IN(SELECT客户编号FROM客户WHERE客户姓名=‘王明’))
SELECT业务员编号,COUNT(*)订单数目FROM订单where金额>
500GROUPBY业务员编号
SELECT业务员姓名FROM业务员WHERE业务员编号IN(SELECT业务员编号FROM订单GROUPBY业务员编号HAVINGCOUNT(*)>
2)
UPDATE业务员SET月薪=月薪*1.1
UPDATE业务员SET月薪=3500WHERE业务员姓名=‘关悦’
SELECT业务员姓名,年龄FROM业务员WHERE月薪>
(SELECTAVG(月薪)FROM业务员)
UPDATE业务员SET月薪=月薪*1.05WHERE业务员编号IN(SELECT业务员编号FROM业务员GROUPBY业务员编号HAVINGSUM(金额)>
20000)
学生(学号,姓名,性别,专业,籍贯)
课程(课程号,课程名,学时,性质)
成绩(学号,课程号,分数)
回答下列
(1)-(10)题。
(1)检索所有女同学的姓名。
试写出实现该查询的关系代数表达式;
(2)检索选修“数据库”课程的学生姓名。
要求写出关系代数表达式和实现这个查询的SQL语句;
(3)检索课程号等于“C101”,且分数90分以上(含90分)学生的姓名。
要求写出关系代数表达式和实现这个查询的SQL语句;
(4)写出SQL语句,检索学习“Cl01”课程中分数最高的学生姓名;
(5)写出SQL语句,检索所有未选修“Cl01”课程的学生姓名;
(6)写出SQL语句,在成绩表中增加“学分”列,并根据学分=学时/18的算法,填上每门课程的学分;
(7)写出SQL语句,实现关系代数表达式:
成绩-分数>
=60(成绩);
(8)写出SQL语句,检索选修5门以上课程的学生姓名;
(9)创建一个查询成绩的视图VSK,其属性有姓名、课程名和分数;
(10)检索学生选课情况,显示姓名、课程名和分数,其中包括没有选课的学生。
π姓名(σ性别=‘女’(学生))
π姓名(σ课程名=‘数据库’(课程|×
|成绩)|×
SELECT姓名FROM课程,成绩,学生WHERE课程.课程名=‘数据库’AND课程.课程号=成绩.课程号AND成绩.学号=学生.学号
π姓名(σ课程号=‘C101’分数>
=90(成绩)|×
SELECT姓名FROM成绩,学生WHERE成绩.课程号=‘C101’AND成绩.分数>
=90AND成绩.学号=学生.学号
SELECT姓名FROM学生WHERE学号IN(SELECT学号FROM成绩WHERE课程号=‘C101’AND分数=(SELECTMAX(分数)FROM成绩WHERE课程号=‘C101’))
SELECT姓名FROM学生WHERE学号NOTIN(SELECT学号FROM成绩WHERE课程号=‘C101’)
SELECT姓名FROM学生WHERE学号IN(SELECT学号FROM成绩WHERENOT课程号=‘C101’)
(6)写出SQL语句,在成绩表中增加“学分”列,并根据学分=学时/18的算法,填上每门课程的学分;
ALTERTABLE成绩ADD学分INTEGER
UPDATE成绩SET学分=课程.学时/18FROM成绩INNERJOIN课程ON成绩.课程号=课程.课程号
SELECT*FROM成绩WHERENOT分数<
60
SELECT*FROM成绩MINUSSELECT*FROM成绩WHERE分数>
=60
SELECT姓名FROM学生WHERE学号IN(SELECT学号FROM成绩GOUPBY学号HAVINGCOUNT(*)>
5)
CREATEVIEWVSKASSELECT学生.姓名,课程.课程名,成绩.分数FROM课程,成绩,学生WHERE课程.课程号=成绩.课程号AND成绩.学号=学生.学号
SELECT学生.姓名,课程.课程名,成绩.分数FROM学生leftouterjoin成绩innerjoin课程on成绩.学号=学生.学号ON课程.课程号=成绩.课程号(错误的写法)
SELECT学生.姓名,课程.课程名,成绩.分数FROM学生leftouterjoin成绩on成绩.学号=学生.学号innerjoin课程ON课程.课程号=成绩.课程号inner、outer可省略
SELECTstudent.sname,ame,sc.grade
FROMstudentleftouterjoinscon
sc.sno=student.snoinnerjoincourse
ONo=o
习题四
实体、实体集、属性、属性域、主码、单值属性、多值属性、派生属性、基数
1.数据库设计中,概念模型
A、依赖于计算机的硬件B、依赖于DBMS
C、独立于DBMSD、独立于计算机的硬件和DBMS
2.将E-R模型转换为关系数据模型属于数据库的
A、概念设计B、物理设计C、逻辑设计D、运行设计
3.设在某个公司环境中,一个部门有多名职工,一名职工只能属于一个部门,则部门与职工之间的联系是
A、—对一B、一对多C、多对多D、不确定
4.概念结构设计的主要目标是真实地反映
A、企业对信息的需求B、DBA的管理信息需求
C、数据库系统的维护需求D、应用程序员的编程需求
5.数据库设计人员和用户之间沟通信息的桥梁是
A、程序流程图B、实体-联系图C、模块结构图D、数据结构图
6.在E-R模型转换成关系模型的过程中,下列不正确的做法是
A、每个联系均转换成一个关系B、每个实体集均转换成一个关系
C、1:
N联系不必转换成关系D、M:
N联系转换成—个关系
7.假设任一个E-R模型中,存在10个不同的实体集和12个不同的二元联系(二元联系是指两个实体集之目的联系),其中3个1:
1联系、4个1:
N联系、5个M:
N联系,则这个E-R模型转换成关系的数目可能是
A、14B、15C、19D、22
8.当同一个实体集内部实体之间存在着一个M:
N的关系时,根据E-R模型转换成关系模型的规则,转换成关系的数目为
A、1B、2C、3D、4
1.简述数据库设计的基本步骤。
2.概念设计的主要内容有哪些?
3.使用派生属性有什么好处?
4.确定基数的依据是什么?
基数的用途是什么?
5.举例说明一元、二元、三元和N元联系。
6.举例说明实体之间的联系方式?
7.简述E-R模型转换为关系模型的规则。
四、设计题
1.假设图书馆业务规则:
(1)读者需要凭借书证借阅图书,借书证有借书证号、姓名、年龄、单位等属性;
(2)每一本图书有书号、书名、作者、出版社等属性;
(3)每一本借出的图书有借书证号、书号、借出日期、应还日期。
试:
①根据上述业务规则设计E-R模型,要求E-R图中注明属性和联系的类型。
②将E-R模型转换成关系模型。
③用SQL语句创建表、定义完整性规则。
②三个关系模