浙江万里学院学年第学期《数据库原理》试卷(3)卷标准答案专业:计算机科学技术层次:本科年级:命题教师:杨爱民一、单项选择题(本大题共10小题,每小题2分,共20分)1 在客户机/服务器体系结构的DBS中,数据库功能分为前端和后端两部分,下列功能属于后端的是( B )A).用户界面 B). 存取结构C).数据输入 D). 报表输出2. 实体集书店与图书之间具有(B )联系。
A)一对一B)一对多C)多对多D)多对一3. 现有关系表:医疗(患者编号,医生编号,医生姓名,诊断日期,诊断结果,恢复情况)的主码是(A )A)患者编号,医生编号,诊断日期B)医生编号C)诊断日期D)患者编号4. 任何一个三目关系都属于( A )A )1NF B)3NF C)BCNF D)4NF5. 相对于关系模型,层次数据模型的缺点之一是(A )A)数据维护困难B)数据结构复杂 C )数据独立性高 D )有严格的数学基础6. 现有如下关系:患者(患者编号,患者姓名,性别,出生日期,所在单位)医疗(患者编号,患者姓名,医生编号,医生姓名,诊断日期,诊断结果)其中,医疗关系中的外码是(A )A)患者编号B)患者姓名C)患者编号和患者姓名D)医生编号和患者编号7. 班长和学生是什么关系( B )A)1:1 B)1:M C)M:N D)都不是8.下面哪种数据模型只有一个根结点( B )A)概念 B)层次 C)关系 D)网状9.哪种模式不是数据库的模式( C )A)模式 B)外模式 C)映像模式 D)内模式10.视图定义是( D )A)一个基表中导出的基表B)一个基表中导出的虚表C)一个或几个基表或视较中导出的基表D)一个或几个基表或视较中导出的虚表二、名词解释(本大题共5个小题,每小题3分,共15分)实体、实体型、实体集、属性、码1.答①实体:现实世界中存在的可以相互区分的事物或概念称为实体。
例如,一个学生、一个工人、一台机器、一部汽车等是具体的事物实体,一门课、一个班级等称为概念实体。
②实体型:现实世界中,对具有相同性质、服从相同规则的一类事物(或概念,即实体)的抽象称为实体型。
实体型是实体集数据化的结果,实体型中的每一个具体的事物(实体)为它的实例。
③实体集:具有相同特征或能用同样特征描述的实体的集合称为实体集。
例如,学生、工人、汽车等都是实体集。
④属性:属性为实体的某一方面特征的抽象表示。
如学生,可以通过学生的“姓名”、“学号”、“性别”、“年龄”及“政治面貌”等特征来描述,此时,“姓名”、“学号”、“性别”、“年龄”及“政治面貌”等就是学生的属性。
⑤码:码也称关键字,它能够惟一标识一个实体。
例如,在学生的属性集中,学号确定后,学生的其他属性值也都确定了,学生记录也就确定了,由于学号可以惟一地标识一个学生,所以学号为码。
三、填空题(本大题共5个空,每空1分,共5分)1. 标准的数据库三级模式是概念模式、内模式和(外模式)。
2. 在SQL中,用MODIFY命令可以修改表中的数据,用(ALTER)命令可以修改表的结构。
3. 在ER图中,矩形框表示(实体)。
4. 在SQL查询时,如果需要去掉查询结果中的重复组,应使用(DISTINCT)。
5. 封锁一般分为两种排他型封锁,X封锁和(共享型封锁,S封锁)四、简答题(本大题共3小题,1-2小题6分,3小题8分,共20分)1.试给出三个实际部门的E-R图,要求实体型之间具有一对一,一对多,多对多各种不同的联系。
图5-2中:一个部门有一个负责人,一个负责人负责一个部门的工作,部门和负责人间的联系是一对一的联系:一个学生可以借阅多本书,一本书只能一个人借,学生和借阅间的联系为一对多的联系;一个学生可以参加多个社会团体,一个社会团体有多个学生参加,学生和社会团体间的联系为多对多的联系。
图5-2 三个部门的E-R图2.试述数据设计过程答:数据库设计分为6个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行和维护。
各阶段的主要内容为:3..下面的结论哪些是正确的?哪些是错误的?对于错误的请给出一个反例说明。
1)任何一个二目关系是属于3NF的。
2)任何一个二目关系是属于BCNF的。
3)任何一个二目关系是属于4NF的。
4)当且仅当函数依赖A→B在R上成立,关系R(A,B,C)等于投影R1(A,B)和R2(A,C)的连接。
5)若R.A→R.B,R.B→R.C,则R.A→R.C。
6)若R.A→R.B,R.A→R.C,则R.A→R.(B,C)。
7)若R.B→R.A,R.C→R.A,则R.(B,C) →R.A。
8)若R.(B,C) →R.A,则R.B→R.A,R.C→R.A。
12答:1) 正确。
2) 正确。
3) 正确。
4) 不正确。
5) 正确。
6) 正确。
7) 正确。
8) 不正确。
五.应用题:设职工---社团数据库有三个基本表:职工(职工号,姓名,年龄,性别);社会团体(编号,名称,负责人,活动地点);参加(职工号,编号,参加日期);其中:1)职工表的主码为职工号。
2)社会团体表的主码为编号;外码为负责人,被参照表为职工表,对应属性为职工号。
3)参加表的职工号和编号为主码;职工号为外码,其被参照表为职工表,对应属性为职工号;编号为外码,其被参照表为社会团体表,对应属性为编号。
试用SQL语句表达下列操作:(每小题4分共40分)1)定义职工表、社会团体表和参加表,并说明其主码和参照关系。
2)建立下列两个视图。
社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别);参加人情况(职工号,姓名,社团编号,社团名称,参加日期)3)查找参加唱歌队或篮球队的职工号和姓名。
4)查找没有参加任何团体的职工情况。
5)查找参加了全部社会团体的职工情况。
6)查找参加了职工号为“1001”的职工所参加的全部社会团体的职工号。
7)求每个社会团体的参加人数。
8)求参加人数最多的社会团体的名称和参加人数。
9)求参加人数超过100人的社会团体的名称和负责人。
10)把对社会团体和参加两个表的数据查看、插入和删除数据的权力赋给用户李平,并允许他将此权力授予其他用户。
答:1)CREAT TABLE职工(职工号CHAR(10)NOT NULL UNIQUE,姓名CHAR(8)NOT NULL,年龄SMALLINT,性别CHAR(2),CONSTRAINT C1CHECK(性别IN(‘男’,‘女’)));CREAT TABLE社会团体(编号CHAR(8)NOT NULL UNIQUE,名称CHAR(12)NOT NULL,负责人CHAR(8),活动地点V ARCHAR(50),CONSTRAINT C2FOREIGN KEY(负责人)REFERENCES职工(职工号));CREAT TABLE参加(职工号CHAR(8),编号CHAR(8),参加日期DATA,CONSTRAINT C3PRIMARY KEY(职工号,编号),CONSTRAIN C3 FOREIGN KEY(职工号)REFERENCES职工(职工号));2)CREAT VIEW 社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别)AS SELECT 编号,名称,负责人,姓名,性别FROM社会团体,职工WHERE社会团体.负责人=职工.职工号;CREAT VIEW参加人情况(职工号,姓名,社团编号,参加日期)AS SELECT参加.职员号,姓名,社会团体.编号,名称,参加日期FROM 职工,社会团体,参加WHERE职工.职工号=参加.职工号AND 参加.编号=社会团体.编号;3) SELECT职工号,姓名FROM职工,社会团体,参加WHERE职工.职工号=参加.职工号AND 参加.编号=社会团体.编号AND社会团体.名称IN(‘唱歌队’,‘篮球队’);4)SELECT*FROM职工WHERE NOT EXISTS(SELECT*FORM参加WHERE参加.职工号=职工.职工号);5)SELECT*FROM职工WHERE NOT EXISTS(SELECT*FROM 参加WHERE NOT EXISTS(SELECT*FROM社会团体WHERE参加.职工号=职工.职工号AND 参加.编号=社会团体.编));6)SELECT 职工号FROM职工WHERE NOT EXISTS(SELECT*FROM 参加参加1WHERE参加1.职工号=‘1001’AND NOT EXISTS(SELECT*FROM参加参加2WHERE参加2.编号=参加1.编号AND参加2.职工号=职工.职工号));7) SELECT COUNT(职员号)FROM参加GROUP BY编号;8)SELECT社会团体.名称,COUNT(参加.职工号)FROM 社会团体参加WHERE社会团体.编号=参加.编号GROUP BY参加编号HA VING MAX(COUNT(参加.职工号))=COUNT(参加.职工号));9)SELECT社会团体.名称,职工.姓名FROM职工,社会团体,参加WHERE社会团体.编号=参加.编号AND社会团体.负责人=职工.职工号GROUP BY参加.编号HA VING COUNT(参加.编号)>100;10)GRANT SELECT,INSERT,DELECT ON社会团体,参加TO李平WHERE GRANT OPTION;。