山东大学数据库习题及答案
山东大学-函授-数据库原理复习

7. 查询缺少成绩的学生的学号和课程号(选修而未考试,涉及空值'null')
19. 非关系模型中数据结构的单位是 [ ]。 A. 关系 B.实体 C.元组 D. 基本层次联系
20. [ ]使得 SQL 具备了对机密数据的安全保护功能。 A. 视图机制 B.人机对话 C.数据查询 D.数据更新
21. CREAT TABLE Student (Sno Char(5) Not Null Unique, Sname Char(10), Ssex Char(1), Sdept Char(15)); 在上述关系中,属性[ ]是主码。 A. Sno B. Sname C. Ssex D. Sdept
《数据库原理》
一.选择题
1.一个数据库系统至少应包括数据库、( )、软件和用户四大部分。
A.环境
B. 硬件
C.界面
D.管理
2. 数据库管理系统的主要功能是定义、( )、、管理、维护数据库。
A.查询
B.修改
C. 操纵
D.授权
3. 在关系数据库中,若关系模式 R∈1NF,且每个非主属性都完全函数依赖
于任一候选关键字,则该关系模式 R 属于( )。
24. 在连接查询中, WHERE 子句中可以有多个连接条件,称为 [ ]。 A 等值连接.B.外连接 C. 自身连接 D.复合条件连接
25. 删除索引用 [ ]。 A. Drop view B. Drop table C. Drop Index D. Alter table
26. 数据库与文件系统的根本区别在于 [ ]。 B.提高了系统效率 B.方便了用户使用 C.数据的结构化 D.节省了存储空间
22. SQL 语言用 GRANT 语句向用户授予操作权限,所有授予出去的权限在必要时都 可以用 [ ] 语句收回。 A. Alter B. Creat C. Update D. Revoke
数据库基础课后习题及答案

数据库基础课后习题及答案数据库基础课后习题及答案数据库是计算机科学中非常重要的一个概念,它用于存储和管理大量的数据。
在数据库基础课程中,学生通常需要完成一些习题来巩固所学的知识。
本文将介绍一些常见的数据库基础课后习题,并提供相应的答案。
一、选择题1. 数据库是指什么?A. 存储和管理数据的软件系统B. 存储和管理硬件设备的软件系统C. 存储和管理网络的软件系统D. 存储和管理操作系统的软件系统答案:A2. 数据库管理系统(DBMS)的主要功能是什么?A. 存储和管理数据B. 分析和处理数据C. 网络和通信D. 操作系统管理答案:A3. 下列哪个不属于数据库的特点?A. 数据共享B. 数据冗余C. 数据独立性D. 数据一致性答案:B4. 数据库中的数据是以什么形式存储的?A. 文件B. 表格C. 文本D. 图像答案:B5. 数据库中的主键是什么?A. 唯一标识一个记录的属性B. 存储在数据库中的所有数据C. 数据库中的表格D. 数据库中的索引答案:A二、填空题1. 数据库中的关系是指什么?关系是指数据之间的联系和关联。
2. 数据库中的SQL是什么意思?SQL是结构化查询语言(Structured Query Language)的缩写。
3. 数据库中的DDL是什么意思?DDL是数据定义语言(Data Definition Language)的缩写。
4. 数据库中的DML是什么意思?DML是数据操作语言(Data Manipulation Language)的缩写。
5. 数据库中的索引有什么作用?索引可以提高数据库的查询效率,加快数据检索的速度。
三、简答题1. 数据库的三级模式是什么?数据库的三级模式包括外模式、概念模式和内模式。
外模式是用户对数据库的直接接口,概念模式是数据库的全局逻辑结构,内模式是数据库在物理存储上的表示。
2. 数据库的ACID是什么意思?ACID是数据库事务的四个特性,包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
山大网教数据库原理及应用1

《数据库原理及其应用》模拟题1一、选择题1-5 DCACC二、填空题1、文本框用于数据输入输出的属性是V ALUE 。
2、用于处理文本信息的控件有:文本框、标签、编辑框。
3、SQL语言所具有的功能是数据定义、数据操纵、数据控制。
4、查询向导中可以有三种选择:查询向导、交叉表格查询、图形向导。
5、参照完整性的规则包括插入规则、更新规则、删除规则。
6、建立索引的字段值不允许重复,且一个表中只能创建一个,它应该是主索引。
7、8、在数据表中,每一行是关于客观事物的具体描述,叫做元组。
9、表结构定义了数据表的字段个数、字段名、字段类型、字段宽度和小数位数等内容。
10、日期型常量的一般格式为{yyyy-mm-dd} 。
11、数据库表中的字段有效性规则用来指定字段的验证性规则。
12、数据库系统的组成是数据库、计算机硬件、数据库管理系统、应用程序、用户13、14、利用SQL语句创建一个表文件,文件名为student,表结构由五个字段组成,分别是xm字符类型,长度为10;xb 字符类型,长度为2,默认值为“男”;csrq 日期类型;sfty 逻辑类型;bz 备注类型。
15、假设有一个设备管理表sb.dbf,其表结构为:sb (编号C(5),名称C(6),启用日期D,价格N(9,2),部门C(2),主要设备L)在sb表中编号字段值要求唯一。
利用SQL语句查询sb表中价格大于10000元的所有主要设备。
16、假设由一个设备管理表sb,其结构见第15题。
还有一个设备大修表dx.dbf,其表结构为:dx(编号C(5),费用N(6,1)),每台设备大修一次,就作为一条记录保存在dx 表中,因此一台设备在dx表中可能有多条记录,即维修过多次。
利用SQL语句查找设备编号为106-1的设备的大修费用及其设备名称,并按费用降序排列。
17、利用SQL语句查询设备管理表sb中的部门数。
18、19、20、焦点事件包括When事件、Valid事件、21、2223三、简答及描述题1、举例说明五种VFP数据类型的特点。
山东大学信息查询数据库

山东大学信息查询数据库一.设计步骤1.需求分析a.数据库所涉及的基本情况b.不同用户对数据库要求c.建立数据流图d.建立数据字典2.概念结构设计3.逻辑结构设计二.数据库具体设计过程1.需求分析a.数据库所涉及的基本情况(1)教务管理员,宿舍管理员等管理员基本信息各管理员有相应的管理员号,管理员用户名,管理员密码,可以访问相应的信息。
(2)校区基本情况山大共有六个校区,为每一个校区给定编号,校区地址等信息。
(3)院部基本情况各学院有院号,院名和院长等基本信息。
(4)班级基本情况各班级根据所在校区,学院和年级设置一个班级号以及班级名等信息。
(5)课程基本情况为每门课程分配课程号,课程名,各课程对应学分和属性等信息。
(6)教师基本情况各教师根据工作起始年份和序号给定教师号,另外还有教师姓名等信息(7)学生基本情况根据校区,学院,年级和序号给定学生号,另外还有学生姓名等基本信息(8)宿舍基本情况各宿舍根据所在校区,楼号和宿舍序号设置一个宿舍号等信息。
(9)课程编排基本情况包含教师号,课程号和班级号等信息(10)选课基本情况包括学生号,课程号和教师号等基本信息。
(11)职工基本情况职工根据所在的校区和宿舍楼号以及职工序号来给定职工编号,另外还有职工名,职工性别等基本信息。
b.用户对数据库的要求(1)管理员信息要求。
管理员能够完成对宿舍,学生,校区,课程编排以及教师等信息的查询。
②处理过程。
管理员能够完成对宿舍,学生,校区,课程编排以及教师等信息的查询。
③安全性与完整性要求。
安全性要求:•只有合法用户,使用正确密码,方可登录到查询系统。
•对不同的用户设置相应的权限,限制用户对数据库的访问内容。
完整性要求:•各种信息记录完整,记录内容不得为空。
•保证个数据间的联系正确性。
•相同的数据在不同记录中的一致性。
(2)教师①信息要求。
教师能够完成对学生,选课以及课程编排等的信息查询。
②处理过程。
教师能够完成对学生,选课以及课程编排等的信息查询。
山东大学数据库实验答案2—8

⼭东⼤学数据库实验答案2—8⼭东⼤学数据库实验答案2—8 CREATE TABLE test2_01 ASSELECT SID, NAMEFROM pub.STUDENTWHERE sid NOT IN(SELECT sid FROM pub.STUDENT_COURSE)CREATE TABLE test2_02 ASSELECT SID,NAMEFROM PUB.STUDENTWHERE SID IN(SELECT DISTINCT SIDFROM PUB.STUDENT_COURSEWHERE CID IN(SELECT CID FROM PUB.STUDENT_COURSE WHERESID='200900130417'))CREATE TABLE test2_03 ASselect SID,NAME from PUB.STUDENT where SID in ( select distinct SID from PUB.STUDENT_COURSE where CID in (select CID from PUB.COURSE where FCID='300002') )CREATE TABLE test2_04 ASselect SID,NAME from PUB.STUDENT where SID in ( select distinct SID from PUB.STUDENT_COURSE where CID in (select CID from PUB.COURSE where NAME='操作系统')intersectselect distinct SID from PUB.STUDENT_COURSE where CID in (select CID from PUB.COURSE where NAME='数据结构') )create table test2_05 aswith valid_stu(sid,name) as(select SID,NAME from PUB.STUDENT where AGE=20 and SID in (select SID from PUB.STUDENT_COURSE))select sid,name as name,ROUND(avg(score)) as avg_score,sum(score) as sum_score fromPUB.STUDENT_COURSE natural join valid_stu where SID in (select SID from valid_stu)group by SID,NAMEcreate table test2_06 asselect CID,(max(SCORE))max_score from PUB.STUDENT_COURSE group byCIDcreate table test2_07 asselect SID,NAME from PUB.STUDENT where(NAME not like '张%' and NAME not like '李%' and NAME not like '王%') create table test2_08 aswith xing(value) as (select substr(NAME,1,1) from PUB.STUDENT)select value as second_name,count(value) as p_count from xing group by valuecreate table test2_09 asselect distinct SID,NAME,SCORE from PUB.STUDENT_COURSE natural join PUB.STUDENTwhere CID ='300003';create table test2_10 asselect distinct SID,CID from PUB.STUDENT_COURSE where SID in (select SID from PUB.STUDENT_COURSE) /* 1 */create table test3_01 asselect * from pub.student_31 where regexp_like(SID,'^[0-9]+$')/* 2 */create table test3_02 asselect * from pub.student_31where to_number(substr(BIRTHDAY,8,2))+AGE=112/* 3 */create table test3_03 asselect * from pub.student_31where SEX is null or SEX='男' or SEX='⼥'/* 4 */create table test3_04 asselect * from pub.student_31where DNAME is not null and length(DNAME)>=3 and instr(DNAME,' ')<=0 /* 5 */create table test3_05 asselect * from pub.student_31where regexp_like(CLASS,'^[0-9]{4}$')/* 6 */create table test3_06 asselect * from pub.student_31where regexp_like(SID,'^[0-9]+$')and to_number(substr(BIRTHDAY,8,2))+AGE=112 and (SEX is null orSEX='男' or SEX='⼥')and (DNAME is not null and length(DNAME)>=3 and instr(DNAME,' ')<=0) and regexp_like(CLASS,'^[0-9]{4}$') and (instr(NAME,' ')<=0 and length(NAME)>=2)/* 7 */create table test3_07 asselect * from pub.student_course_32 where SID in (select SID from pub.student)/* 8 */create table test3_08 asselect * from pub.student_course_32 natural join pub.teacher_course /* 9 */create table test3_09 asselect * from pub.student_course_32 where SCORE>=0 and score <=100 /* 10 */create table test3_10 asselect * from pub.student_course_32 natural join pub.teacher_course where SID in (select SID from pub.student) and CID in (select CID from pub.course) and TID in (select TID from pub.teacher) and SCORE>=0 and score <=100/*-------------- test4_01 --------------*/ create table test4_01 as select * from pub.student_41;ALTER TABLE test4_01 ADD sum_score number;update test4_01 set sum_score=(select sum(score) from pub.student_course a wheretest4_01.sid=a.sid group by sid);/*-------------- test4_02 --------------*/create table test4_02 as select * from pub.student_41;ALTER TABLE test4_02 ADD avg_score number;update test4_02 set avg_score =(select round(avg(score),1) from pub.student_course a wheretest4_02.sid=a.sidgroup by sid);/*-------------- test4_03 --------------*/create table test4_03 as select * from pub.student_41;ALTER TABLE test4_03 ADD sum_credit number;update test4_03 set sum_credit =(with a as (select * from pub.student_course natural join pub.course) (select sum(credit) from awhere SCORE>=60 and test4_03.sid=a.sid group by sid) )/* 4 */create table test4_04 as select * from pub.student_41;update test4_04 set dname=(select did from pub.department wheretest4_04.dname=pub.department.dname)where dname in (select dname from pub.department);/* 5 */create table test4_05 as select * from pub.student_41;ALTER TABLE test4_05 add did varchar(2);ALTER TABLE test4_05 ADD sum_score number;ALTER TABLE test4_05 ADD avg_score number;ALTER TABLE test4_05 ADD sum_credit number;update test4_05 set sum_score=(select sum(score) from pub.student_course a wheretest4_05.sid=a.sid group by sid);update test4_05 set avg_score =(select round(avg(score),1) from pub.student_course a wheretest4_05.sid=a.sidgroup by sid);update test4_05 set sum_credit =(with a as (select * from pub.student_course natural join pub.course) (select sum(credit) from awhere SCORE>=60 and test4_05.sid=a.sid group by sid));update test4_05 set did =(select did from pub.department wherepub.department.dname=test4_05.dname) where dname in (select dname from pub.department);update test4_05 set did =(select did from pub.department_41 where pub.department_41.dname=test4_05.dname) where dname in (select dname from pub.department_41);update test4_05 set did ='00' where did is null;/* 6 */create table test4_06 as select * from pub.student_42;update test4_06 set name=replace(name,' ','');/* 7 */create table test4_07 as select * from pub.student_42;update test4_07 set SEX=substr(trim(SEX),1,1) where length(SEX)<>1;/* 8 */create table test4_08 as select * from pub.student_42;update test4_08 set CLASS=substr(CLASS,1,4) where length(CLASS)<>4;/* 9 */create table test4_09 as select * from pub.student_42;update test4_09 set AGE=112-to_number(substr(BIRTHDAY,8,2)) where AGE is null;/* 10 */create table test4_10 as select * from pub.student_42;update test4_10 set name=replace(name,' ',''),DNAME=replace(DNAME,' ','');update test4_10 set SEX=substr(trim(SEX),1,1) where length(SEX)<>1;update test4_10 set CLASS=substr(CLASS,1,4) where length(CLASS)<>4;update test4_10 set AGE=112-to_number(substr(BIRTHDAY,8,2)) where AGE is null;create table test5_10(test varchar(20),age numeric (3));insert into test5_10 values('结果1',88);insert into test5_10 values('结果2',90);insert into test5_10 values('结果3',90);insert into test5_10 values('结果4',86);insert into test5_10 values('结果5',90);insert into test5_10 values('结果6',90);insert into test5_10 values('结果7',86);insert into test5_10 values('结果8',86);insert into test5_10 values('结果9',76);insert into test5_10 values('结果10',86);/* 1 */create view test6_01 asselect sid,name,dname from pub.studentwhere age<20 and dname='物理学院' order by sid/* 2 */create view test6_02 aswith temp_table(sid,ss) as(select sid,sum(score) from pub.student_course group by sid) select sid,name,dname,ss as sum_score from pub.student natural join temp_table where class='2009' and dname='软件学院'/* 3 */create view test6_03 asselect * from pub.student_course natural join pub.student whereclass='2010' and dname='计算机科学与技术学院' and cid =(select cid from pub.course where name='操作系统')/* 4 */create view test6_04 asselect sid,/doc/06a78e778662caaedd3383c4bb4cf7ec4bfeb671.html from pub.student_course natural join pub.studentwhere score>90 and cid =(select cid from pub.course where name='数据库系统')/* 5 */create view test6_05 asselect sid,cid,name,score from pub.student_course natural joinpub.coursewhere sid in (select sid from pub.student where name='李龙')/* 6 */create view test6_06 aswith a as (select sid,count(*) as totc from pub.student_course group by sid)select sid,name from pub.student where sid in (select sid from a where totc>=(selectcount(*) from pub.course))/* 7 */create view test6_07 asselect * from test6_06 where sid not in (select distinct sid from pub.student_course where sid in(select sid from test6_06)and score<60)/* 8 */create view test6_08 asselect cid,name from pub.coursewhere fcid in (select cid from pub.course where credit=2)/* 9 */create view test6_09 aswith a(sid,sum_credit) as(select sid,sum(credit) as sum_creditfrom pub.student_course natural join pub.course where SCORE>=60 group by sid)select sid,name,sum_credit from pub.student natural join a where class='2010' and dname='化学与化⼯学院'/* 10 */create view test6_10 asselect cid,name from pub.coursewhere fcid in(select cid from pub.course where fcid is not null)/* 1 */create table test7_01 asselect First_name,count(*) as frequency from( select substr(NAME,2) as First_name from pub.student ) group by First_name /* 2 */create table test7_02 asselect letter,count(*) as frequency from(select substr(NAME,2,1) as letter from pub.studentunion allselect substr(NAME,3) as letter from pub.student wherelength(Name)=3 ) group by letter/* 3 */create table test7_03 aswith a as (select sid,sum(credit) as tot from pub.student_course natural join pub.course where SCORE>=60 group by sid),b as (select * from pub.student natural left join a),c as (select dname,class,count(sid) as p_count from b group by (dname,class)),d as (select dname,class,count(sid) as p_count1 from b where tot>=10 group by (dname,class)),e as (select dname,class,count(sid) as p_count2 from b where tot<10 or tot is null group by (dname,class))select * from c natural left join d natural join eupdate test7_03 set p_count1=0 where p_count1 is null;/* 4 */create view test7_04_v1 asselect * from pub.student natural left join(select sid,sum(credit) as tot from pub.student_course natural join pub.course where SCORE>=60 group by sid);create table test7_04 aswith b as (select * from test7_04_v1),c as (select dname,class,count(sid) as p_count from b group by (dname,class)),d as (select dname,class,count(sid) as p_count1 from b where class<=2008 and tot>=8 group by (dname,class)unionselect dname,class,count(sid) as p_count1 from b where class>2008 and tot>=10 group by (dname,class))select * from c natural left join d where dname is not null;alter table test7_04 add p_count2 NUMBER;update test7_04 set p_count2 = p_count - p_count1;/* 1 */create table test8_01 aswith A as(select DNAME,SCORE,NAME from(select CID,DNAME,SCORE from pub.student_course natural joinpub.student where dnameis not null) natural join pub.course),B as(select dname,round(avg(score)) as avg_ds_score from A where name='数据结构' groupby dname),C as(select dname,round(avg(score)) as avg_os_score from A where name='操作系统' groupby dname)select * from B natural join C/* 2 */create table test8_02 aswith a as(select sid from pub.student_course where cid=(select cid frompub.course where name='操作系统') intersectselect sid from pub.student_course where cid=(select cid frompub.course where name='数据结构')),b as (select a.sid,score as ds_score from pub.student_course,a where pub.student_course.sid=a.sid and cid=(select cid from pub.course where name='数据结构')),c as (select a.sid,score as os_score from pub.student_course,a where pub.student_course.sid=a.sid and cid=(select cid from pub.course where name='操作系统'))select sid,name,dname,ds_score,os_score from b natural join cnatural join pub.student where dname='计算机科学与技术学院' /* 3 */create table test8_03 aswith a as(select sid from pub.student_course where cid=(select cid frompub.course where name='操作系统') unionselect sid from pub.student_course where cid=(select cid frompub.course where name='数据结构')),b as (select a.sid,score as ds_score from pub.student_course,a where pub.student_course.sid=a.sid and cid=(select cid from pub.course where name='数据结构')),c as (select a.sid,score as os_score from pub.student_course,a wherepub.student_course.sid=a.sid and cid=(select cid from pub.course where name='操作系统'))select sid,name,dname,ds_score,os_score from b natural full join c natural join pub.student where dname='计算机科学与技术学院' /* 4 */create table test8_04 aswith a as(select sid from pub.student_course where cid=(select cid frompub.course where name='操作系统') unionselect sid from pub.student_course where cid=(select cid frompub.course where name='数据结构')),b as (select a.sid,score as ds_score from pub.student_course,a where pub.student_course.sid=a.sid and cid=(select cid from pub.course where name='数据结构')),c as (select a.sid,score as os_score from pub.student_course,a where pub.student_course.sid=a.sid and cid=(select cid from pub.course where name='操作系统'))select sid,name,dname,ds_score,os_score from b natural full join c natural full join pub.student where dname='计算机科学与技术学院'。
数据库练习题库(含答案)

数据库练习题库(含答案)一、单选题(共98题,每题1分,共98分)1.在需求分析阶段,结构化分析和建模方法是一种较为有效的需求分析方法,下列不属于结构化分析和建模方法优点的是()。
A、可避免过早陷入具体细节B、从局部或子系统开始分析问题,便于建模人员了解业务模型C、图形对象不涉及太多技术术语,便于用户理解模型D、用图形化的模型能直观表示系统功能正确答案:B2.DBMS通过加锁机制允许用户并发访问数据库,这属于DBMS提供的()。
A、数据定义功能B、数据操纵功能C、数据库运行管理与控制功能D、数据库建立与维护功能正确答案:C3.关于数据划分策略,下述说法错误的是()。
A、散列划分釆用某种散列函数,以数据的划分属性作为函数参数,计算数据应存储的磁盘序号B、范围划分根据某个属性的取值,将数据划分为n个部分,分别存储到不同磁盘上C、范围划分有利于范围查询和点查询,但也可能会引起数据分布不均匀及并行处理能力下降问题D、轮转法划分能保证元组在多个磁盘上的平均分配,并具有较高的点查询和范围查询正确答案:D4.存取方法设计属于数据库设计的()阶段的设计任务。
A、逻辑结构设计B、概念结构设计C、系统需求分析D、物理结构设计正确答案:D5.将新插入的记录存储在文件末尾,并使记录随机地分布在文件物理存储空间中的文件结构是()。
A、散列文件B、堆文件C、索引文件D、聚集文件正确答案:B6.关于"死锁”,下列说法中正确的是()。
A、在数据库操作中防止死锁的方法是禁止两个用户同时操作数据库B、只有出现并发操作时,才有可能出现死锁C、当两个用户竞争相同资源时不会发生死锁D、死锁是操作系统中的问题,数据库操作中不存在正确答案:B7.关于数据库应用系统的需求分析工作,下列说法正确的是()。
A、在需求分析阶段,系统需求分析员要与用户充分沟通,并做出各类用户视图B、通过需求分析过程,需要确定出整个应用系统的目标、任务和系统的范围说明C、数据操作响应时间、系统吞吐量、最大并发用户数都是性能需求分析的重要指标D、数据需求分析的主要工作是要辩识出数据处理中的数据处理流程正确答案:C8.如果一个系统定义为关系系统,则它必须( )oA、支持关系数据库B、支持选择、投影和连接运算C、A和B均成立D、A、B都不需要正确答案:C9.联机分析处理包括以下()基本分析功能。
2022年山东大学威海分校计算机科学与技术专业《数据库原理》科目期末试卷B(有答案)

2022年山东大学威海分校计算机科学与技术专业《数据库原理》科目期末试卷B(有答案)一、填空题1、关系代数运算中,基本的运算是______________、______________、______________、______________和______________。
2、数据仓库创建后,首先从______中抽取所需要的数据到数据准备区,在数据准备区中经过净化处理______,再加载到数据仓库中,最后根据用户的需求将数据发布到______。
3、“为哪些表,在哪些字段上,建立什么样的索引”这一设计内容应该属于数据库设计中的______阶段。
4、在SQL Server 2000中,新建了一个SQL Server身份验证模式的登录账户LOG,现希望LOG在数据库服务器上具有全部的操作权限,下述语句是为LOG授权的语句,请补全该语句。
EXEC sp_addsrvrolemember‘LOG’,_____;5、数据库内的数据是______的,只要有业务发生,数据就会更新,而数据仓库则是______的历史数据,只能定期添加和刷新。
6、在一个关系R中,若每个数据项都是不可再分割的,那么R一定属于______。
7、数据库系统是利用存储在外存上其他地方的______来重建被破坏的数据库。
方法主要有两种:______和______。
8、在关系数据库的规范化理论中,在执行“分解”时,必须遵守规范化原则:保持原有的依赖关系和______。
9、SQL Server中数据完整性包括______、______和______。
10、____________、____________、____________和是计算机系统中的三类安全性。
二、判断题11、在关系数据库中,属性的排列顺序是可以颠倒的。
()12、概念模型是对现实世界的第二层抽象。
()13、数据模型的核心构成要素是数据结构。
()14、等值连接与自然连接是同一个概念。
山东大学2012年数据库实验5答案

1.首先开两个不同的浏览器,我用的是safari和opera(chrome / IE什么的只要能登录都可以)safari登录名userb2011……,作为备用账户;opera登录名user2011……,作为主账户。
两个用户都关闭自动提交。
//2011……是自己的学号2.备用账户:CREATE TABLE test5_00 ASSELECT * FROM pub.teacherupdate test5_00 set age=age+1Rollbackselect * from test5_00grant all on userb2011…….test5_00 to user2011……主账户:select * from userb2011…….test5_00备用账户:Update test5_00 set age=age-2select * from test5_00主账户:select * from userb2011…….test5_00commit备用账户:select * from test5_00主账户:SELECT * FROM userb2011…….test5_00备用账户:Commitselect * from test5_00主账户:SELECT * FROM userb201100130078.test5_00Rollback备用账户:select * from test5_00主账户:SELECT * FROM userb201100130078.test5_003.主账户:(勾选上自动提交)create table test5_10(test varchar(20),age numeric (3))insert into test5_10 values ('结果1',88)insert into test5_10 values ('结果2',88)insert into test5_10 values ('结果3',86)insert into test5_10 values ('结果4',88)insert into test5_10 values ('结果5',86)insert into test5_10 values ('结果6',88)insert into test5_10 values ('结果7',86)insert into test5_10 values ('结果8',86)insert into test5_10 values ('结果9',86)insert into test5_10 values ('结果10',86)ps1:其实只要有第三步就可以了ps2:数据库实验指导书的答案有问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
山东大学数据库系统课程试卷A卷参考答案一、简答(每小题5分,共25分)1、如何理解空值(NULL),空值在参与运算时有哪些特点?答:空值null表示“不知道”或者“不存在”的含义。
不是指“0”,也不是“false”,也不是’’。
Null参与的关系运算和算术运算结果均为null。
评分细则:Null的含义3分,Null参与的运算特点2分2、简述事务的概念及其相关特性。
答:事物是访问并可能更新各种数据项的一个程序执行单元。
事物具有ACID四种特性。
A指原子性:事物的所有操作在数据库中要么全部正确反映出来,要么全部不反映。
C指一致性:事物的隔离执行保持数据库的一致性。
I指隔离性:尽管多个事物可以并发执行,但系统必须保证每一个事物都感觉不到系统中有其他事物在并发地执行。
D指持久性:一个事物成功完成后,它对数据库的改变必须是永久的。
评分细则:事物概念2分,事物的性质3分。
3、关系中的元组有先后顺序吗?为什么?答:没有。
关系是元组的集合,而集合中的元素是没有顺序的,因此关系中的元组也就没有先后顺序。
评分细则:第一问回答“有”,零分;第一问回答“没有”,2分,说明原因3分4、设关系模式R(A,B,C)上有一个多值依赖A B。
如果已知R的当前关系中存在着三个元组(a,b1,c1)、(a,b2,c2)、(a,b3,c3),那么这个关系中至少还应该存在哪些元组?答:(a b1 c2),(a b2 c1),(a b1 c3),(a b3 c1),(a b2 c3),(a b3 c2)评分细则:每一个元组1分。
5、简述时间戳排序协议。
答:时间戳:对于系统中的每一个事务Ti,我们把一个唯一的固定的时间戳和它联系起来,记为TS(Ti)。
每个数据项Q需要与两个时间戳相关联:W-timestamp(Q)表示成功执行write(Q)的所有失去的最大时间戳;R-timestamp(Q)表示成功执行read(Q)的所有事务的最大的时间戳。
假设事务Ti发出read(Q)操作:a.若TS(Ti)<W-timestamp(Q),则Ti需读入的Q值已被覆盖。
因此,read操作被拒绝,Ti回滚。
b.若TS(Ti)>= W-timestamp(Q),则执行read操作,R-timestamp(Q)被设为R-timestamp(Q)与TS(Ti)两者中的最大值。
假设事务Ti发出write(Q)操作:a.若TS(Ti)< R-timestamp(Q),则Ti产生的Q值是先前所需要的值,且系统一经假设该值不会被产生。
因此,write操作被拒绝,Ti回滚。
b.若TS(Ti) <W-timestamp(Q),则Ti想写入的Q值已过时。
因此,write操作被拒绝,Ti回滚。
c.其他情况发生时,执行write操作,将W-timestamp(Q)设为TS(Ti)。
评分细则:读规则2分,写规则3分二、工厂需要建立一个管理数据库存储下列信息:1、一个工厂内有多个车间,每个车间有车间号、车间主任姓名、车间地址和电话2、一个车间内有多个工人,每个工人有职工号、姓名、年龄、性别和工种3、一个车间生产多种产品,产品有产品号和价格4、一个车间生产多种零件,一个零件也可以被多个车间制造。
零件有零件号、重量和价格5、一个产品由多种零件组成,一种零件也可以装配出多种产品。
6、产品与零件均存入仓库中7、一个工厂有多个仓库,仓库有仓库号、仓库主任姓名、仓库地址和电话要求:1.画出该系统的E-R图2.给出相应的关系模式(共10分)答:关系模式工厂(厂名、厂长姓名)车间(车间号、车间主任姓名、车间地址、电话、厂名)工人(职工号、姓名、年龄、性别、工种、车间号)仓库(仓库号、仓库主任姓名、仓库地址、电话、厂名)产品(产品号、价格、车间号、仓库号)零件(零件号、重量、价格、仓库号)制造(车间号、零件号)评分细则:画E-R图5分,需要表明联系的基数;关系模式5分,基于实体和基于联系的关系模式都需要。
二、有关系模式R(A, B, C, D),其上的函数依赖集F={A→C,C→A,B→AC,D→AC},要求:(15分)1、计算(AD)+2、求F的正则覆盖F c3、求R的码4、将R分解,使其满足BCNF且具有无损连接性5、将R分解,使其满足3NF并具有无损连接性与保持依赖性答:(AD)+=ACDF c={A→C,C→A,B→A,D→A}(BD)+=ABCD,所以BD时候选码分解为BCNF:ρ={AC,AB,BD}分解为3NF:ρ={AC,BA,DA,BD}评分细则:每一小题3分。
第一小题:必须写明全部属性才能得分第二小题:正则覆盖不唯一,写明一个即可第三小题:要求写候选码,写超码不得分第四小题:如果学生的分解与答案不完全一致,可以适当给分第五小题:如果学生的分解与答案不完全一致,可以适当给分四、有关系S(SNO, SNAME, DEPT,SEX,DORM, MONITOR), C(CNO, CNAME, CREDIT, TEACHER), SC(SNO, CNO, SCORE)。
关系S、C和SC分别表示学生信息、课程信息和学生选课情况。
请按要求表达下列查询与修改。
(42分)其属性分别表示如下:SNO—学生编号,SNAME—学生姓名,DEPT—学生所在系,SEX—学生性别,DORM—学生宿舍,MONITOR—该学生的班长的学号,CNO—课程编号,CNAME—课程名称,SCORE—成绩,TEACHER—任课教师姓名,CREDIT—课程学分。
1、查询计算机系全部学生的学号、姓名、性别。
(SQL+关系代数+元组关系演算)Select sno, sname, sexFrom sWhere dept=’计算机’∏ sno, sname, sex(σdept=’计算机’(S)){t|∃u∈S t[sno]=u[sno] ∧t[sname]=u[sname] ∧t[sex]=u[sex] ∧u[dept]=’计算机’}评分细则:每小题3分2、查询张明同学没有选修的课程的课程号和课程名称。
(SQL+关系代数+元组关系演算)select cno,cnamefrom cwhere cno not in (select cno from scwhere sno in(select sno from s where sname=’张明’))∏cno, cname(∏cno(C) - ∏cno(σsname=’张明’(S∞SC)))∞C{t|∃u∈S ┐∃v∈SC ∃w∈C t[cno]=w[cno] ∧t[cname]=w[cname] ∧u[sname]=’张明’∧u[sno]=v[sno] }评分细则:每小题3分。
本题的重点是要用关系代数减法、SQL用not、关系演算用非,并且一定要在c表中做减法。
如果不从c表中做减法,每小题扣2分。
3、查询与其班长住在同一宿舍的学生的姓名。
(SQL+关系代数+元组关系演算)Select snameFrom S s1, S s2Where s1.montior=s2.sno and s.dorm=s2.dorm∏name(σs.montior=s1.sno∧s.dorm=s1.dorm(S⨯ρs1(S))){t|∃u∈S ∃v∈S t[sname]=u[sname]∧ u[monitor]=v[sno]∧u[dorm=v[dorm] }评分细则:每小题3分,本题的重点是关系的重命名以及重命名后关系之间在where 条件中的联系。
4、学生的课程成绩及格(>=60)表示学生已获得该课程的学分;求至少已获得50个学分的学生学号及其已获得学分数,要求按照已获得学分数降序排序显示。
(SQL)select sno,sum(credit) as totalfrom swhere sno not in (select sno from sc,cwhere o=o and score>=60)group by sno having sum(credit)>50order by total desc评分细则:本题3分。
重点是score>=60 和group sno having。
有score>=60 和group having 的可得两分。
写明not in的得三分。
5、查询全部学生都选修的课程的课程号与课程名。
(SQL+关系代数+元组关系演算)select cno,cnamefrom cwhere cno in (select cno from scgroup by cnohaving count(*) = (select count(*) from s))∏cno, cname (C ∞ (∏sno, cno(SC))÷∏sno(S)){t|∀s∈S ∃u ∈C∃v∈SC t[cno]=u[cno] ∧t[cname]=u[cname] ∧s[sno]=sc[sno]∧c[cno]=sc[cno]}评分细则:每小题3分。
sql用not exists和group 均可。
6、当“数据库”课程的成绩小于该课程的平均成绩时,将该成绩提高5%。
(SQL)Update SCSet score=score*1.05Where cno in (select cno from C where cname=’数据库’)And score < (select avg(score) from SC wehre cno in (select cno from C where cname=’数据库’))评分细则:本题三分。
写明update和set可得2分,where条件1分。
五、按照冲突可串行化的判定算法,判定下属调度是否冲突可串行化(8分)T1 T2 T3Read(Q)Write(Q)Read(Q)Read(Q)Write(Q)Read(P)Read(P)Write(P)Read(P)Write(P)不是冲突可串行化的。
因为T3在T1 Write(Q)之后要Write(Q)而这两个都是写操作,不可以调换次序,所以不是冲突可串行化的。
评分细则:写明不是冲突可串行化的,得10分,否则不得分。