莞工数据库练习试卷(A卷)答案
试卷(A)参考答案
1-5 AADAC 6-10 BDDCD 11-15 AABDA 16-20 BCADD
21.答:
(1)A (1分)
(2)不是 (1分)
(3)F={A->B, A->C, A-D} (3分)
22.答:
算法执行步骤:
步骤 FD closure
1. 初值 AG
2. A B ABG
3. A C ABCG
4. CG H ABCGH
5. CG I ABCGHI
6. B H ABCGHI
结果为closure=ABCGHI。
23.答:
数据库的安全性:保护数据库以防止不合法使用所造成的数据泄密、更改或破坏。
数据库的完整性:防止数据库中存在不符合语义的数据,其防范对象是不合语义的、不正确的数据。
数据库安全保护目标是确保只有授权用户才能访问数据库,未被授权的人员则无法接近数据。
24.答:
原子性、一致性、隔离性和持久性。
读脏数据、丢失更新和不可重复读。
T2更新丢失
三、应用题(共40分 )
25.答:
1、课程号->教师姓名 学生号,课程号->成绩 学生号->学生姓名 (2分)
2、候选码是 课程号,学生号 (2分)
3、关系模式R符合第一范式。因为非关键字“学生姓名”部分依赖于关键字“学生号”不符合第二范式,因此只符合第一范式(1NF) (2分)
4、将R分解为3个表——S(学生学号,学生姓名) C(学生学号,课程号,成绩)T(课程号,教师姓名) (4分)
26.答:
(1)SELECT studentNo, courseNo, score FROM Score WHERE score BETWEEN 80 AND 90 (2分)
(2)SELECT studentNo, studentName, birthday FROM Student WHERE year(getdate()) - year(birthday)>=19 and sex=’女’ (2分)
(3)SELECT studentNo, studentName FROM Student WHERE studentName LIKE '李__' (2分)
(4)SELECT a.studentName, a.classNo, a.birthday FROM Student a, Student b WHERE b.studentName='王五' AND a.classNo=b.classNo
或
SELECT a.studentName, a.classNo, a.birthday FROM Student a, ( SELECT * FROM Student WHERE studentName='王五' ) b
WHERE a.classNo=b.classNo (2分)
(5)SELECT StudentNo, count(*) 门数, avg(score) 平均分, max(score) 最高分 FROM Score
GROUP BY StudentNo HAVING avg(score)>=70 (2分)
(6)SELECT studentName FROM Student WHERE Student.studentNo IN (SELECT Score.studentNo FROM Score) (2分)
(7)SELECT studentNo, courseNo, score FROM Score WHERE score>ALL ( SELECT score
FROM Score WHERE courseNo='005' ) (2分)
(8)SELECT studentName, classNo FROM Student x WHERE EXISTS ( SELECT * FROM Score a, Course b WHERE a.courseNo=b.courseNo AND a.studentNo=x.studentNo AND courseName='数据库系统原理' ) (2分)
(9)CREATE INDEX ClassBirthIdx ON Student(classNo, birthday DESC) (2分)
(10)DELETE FROM Score WHERE courseNo IN (SELECT courseNo FROM Course WHERE courseName='离散数学' )
27.答:
E-R图:

对应的关系数据模型:
论文(题目,期刊名称,年份,期刊号)
作者(姓名,单位,地址)
发表(姓名,题目,顺序号)