浙江大学《数据库系统》期末考试-Relational Model and SQL题目解析

需积分: 0 0 下载量 109 浏览量 更新于2024-08-05 收藏 791KB PDF 举报
"浙江大学2018–2019学年春夏学期《数据库系统》课程期末考试试卷,涉及关系模型和SQL的相关问题。" 在这份试卷中,Problem 1主要考察了学生对关系模型(Relational Model)以及结构化查询语言(SQL)的理解和应用。以下是对每个问题的详细解释: 1) 问题要求使用关系代数表达式找出所有由"Yimou Zhang"导演并且评分大于或等于4的电影标题。关系代数是一种查询数据库的形式化方法,它使用集合操作来表达查询。为了解决这个问题,我们可以使用投影(π)、选择(σ)和自然连接(⋈)操作。表达式可能如下: \( \pi_{title}(\sigma_{director='YimouZhang' \land grade \geq 4}(Movie \bowtie Comment)) \) 2) 问题要求写一个SQL语句将评分(grade)中的空值(NULL)改为0。在SQL中,可以使用`UPDATE`语句配合`IS NULL`条件来实现这个功能: ```sql UPDATE Comment SET grade = 0 WHERE grade IS NULL; ``` 3) 问题要求使用SQL找出平均评分最高的电影。这需要使用`GROUP BY`和`AVG`函数,结合`ORDER BY`和`LIMIT`来找到最高评分的电影: ```sql SELECT title FROM Movie JOIN ( SELECT movie_title AS title, AVG(grade) AS avg_grade FROM Comment GROUP BY movie_title ) AS AvgGrades WHERE Movie.title = AvgGrades.title AND AvgGrades.avg_grade = ( SELECT MAX(avg_grade) FROM AvgGrades ); ``` 4) 最后一个问题要求找出所有用户对某部电影评分都高于"the avenger"的电影标题。这需要使用子查询和`NOT EXISTS`: ```sql SELECT title FROM Movie WHERE NOT EXISTS ( SELECT 1 FROM Comment WHERE Comment.title = Movie.title AND Comment.grade <= ( SELECT grade FROM Comment WHERE movie_title = 'the avenger' ) ); ``` Problem 2则涉及到实体-关系模型(E-R Model),不过具体题目内容不完整,没有给出需要解答的问题。通常E-R模型用于数据建模,表示实体、属性和实体之间的关系,但在此不再详述。