数据库系统原理练习 | 作业2-第2章关系数据库(附答案)

整理自博主本科《数据库系统原理》专业课完成的课后作业,以便各位学习数据库系统概论的小伙伴们参考、学习。

*文中若存在书写不合理的地方,欢迎各位斧正。

专业课本:

目录

一、选择题

二、填空题

三、简答题

四、关系代数

1.课本p70页,第6题,第(1)--(4)题,第(5)题选做,用关系代数完成。

2.设有关系S(S#,SNAME,AGE,SEX)、C(C#,CNAME,TEACHER)和SC(S#,C#,GRADE)。试用关系代数表达式表示下列查询语句:注意:一门课的老师只有一个,但是一个老师可能教多门课。、C(C#,CNAME,TEACHER)和SC(S#,C#,GRADE)。试用关系代数表达式表示下列查询语句:注意:一门课的老师只有一个,但是一个老师可能教多门课。)

(1)检索"程军"老师所授课程的课程号(C#)和课程名(CNAME)。和课程名(CNAME)。)

(2)检索年龄大于21的男学生的学号(S#)和姓名(SNAME)。和姓名(SNAME)。)

(3)检索"李强"同学不学课程的课程号(C#)。。)

(4)检索选修课程名为"C语言"的学生学号(S#)和姓名(SNAME)。和姓名(SNAME)。)

(5)检索选修课程包含"程军"老师所授课程之一的学生学号(S#)。。)

(6)检索选修课程号为k1和k5的学生学号(S#)。。)

(7)检索选修全部课程的学生姓名(SNAME)。

(8)检索选修课程包含学号为2的学生所修课程的学生学号(S#)。。)

(9)检索至少选修"程军"老师所授全部课程的学生姓名(SNAME)。

(10)检索全部学生都选修的课程的课程号(C#)和课程名(CNAME)。和课程名(CNAME)。)


一、选择题

1、关系数据库管理系统应能实现的专门关系运算包括。

A.排序、索引、统计

B.选择、投影、连接

C.关联、更新、排序

D.显示、打印、制表

答案:B

2、关系模型中,一个关键字是 。

A.可由多个任意属性组成

B.至多由一个属性组成

C.可由一个或多个其值能惟一标识该关系模式中任何元组的属性组成

D.以上都不是

答案:C

3、自然连接是构成新关系的有效方法。一般情况下,当对关系R和S使用自然连接时,要求R和S含有一个或多个共有的。

A.元组

B.行

C.记录

D.属性

答案:D

5.关系模式的任何属性。

A.不可再分

B.可再分

C.命名在该关系模式中可以不惟一

D.以上都不是

答案:A

6.在关系代数运算中,五种基本运算为。

A.并、差、选择、投影、自然连接

B.并、差、交、选择、投影

C.并、差、选择、投影、乘积

D.并、差、交、选择、乘积

答案:C

二、填空题

1、关系代数运算中,传统的集合运算有++++①++++ 、++++②++++ 、++++③++++ 和++++④++++ 。

答案:①笛卡尔积 ②并 ③交 ④差

2、关系数据库中基于数学上两类运算是++关系代数++ 和++关系演算++ 。

3、已知系(系编号,系名称,系主任,电话,地点)和学生(学号,姓名,性别,入学日期,专业,系编号)两个关系,系关系的主关键字是++++①++++ ,系关系的外关键字++++②++++ ,学生关系的主关键字是++++③++++ ,外关键字++++④++++

答案:①系编号 ②无 ③学号 ④系编号


三、简答题

课本P70,第3,4,5题。

答案参考 《数据库系统概论习题解析与实验指导》。

(待补充)


四、关系代数

1.课本p70页,第6题,第(1)--(4)题,第(5)题选做,用关系代数完成。

(1)

(2)

(3)

(4)

(5)

2.设有关系S(S#,SNAME,AGE,SEX)、C(C#,CNAME,TEACHER)和SC(S#,C#,GRADE)。试用关系代数表达式表示下列查询语句:注意:一门课的老师只有一个,但是一个老师可能教多门课。

*此处博主只给出解题思路,请翻阅的同学们自行将思路转换为关系代数的格式。

(1)检索"程军"老师所授课程的课程号(C#)和课程名(CNAME)。

在C表中进行选择和投影。

(2)检索年龄大于21的男学生的学号(S#)和姓名(SNAME)。

在S表中进行选择和投影。

(3)检索"李强"同学不学课程的课程号(C#)。

先求出李强同学选修的课程,再用所有课程的课程号减去李强同学选修的课程的课程号。

(4)检索选修课程名为"C语言"的学生学号(S#)和姓名(SNAME)。

用s和sc连接,再选择和投影。

(5)检索选修课程包含"程军"老师所授课程之一的学生学号(S#)。

用c和sc连接,再选择和投影。

(6)检索选修课程号为k1和k5的学生学号(S#)。

在sc表中选择学号和课号 除以 包含这两门课的表格。

(7)检索选修全部课程的学生姓名(SNAME)。

连接s和sc,投影出学号,姓名和课程号,除以,在c表上投影所有课程的课程号。以上步骤得到两列,学号和姓名,最后再投影出姓名即可。

(8)检索选修课程包含学号为2的学生所修课程的学生学号(S#)。

在sc中投影出学号,除以,在sc中选择投影出对应的课程。

(9)检索至少选修"程军"老师所授全部课程的学生姓名(SNAME)。

连接s和sc,投影出学号,姓名和课程号,除以,在c表上选择和投影出程军老师教的所有课程的课程号。以上步骤得到两列,学号和姓名,最后再投影出姓名即可。

(10)检索全部学生都选修的课程的课程号(C#)和课程名(CNAME)。

连接c和sc,投影出课程号,课程名和学号,除以在s中投影出所有学生的学号。

相关推荐
吃好睡好便好24 分钟前
白发的根源和应对
学习·生活
老纪30 分钟前
Redis分布式锁进第九零篇
数据库·redis·分布式
haven-85231 分钟前
MySQL事务ACID、隔离级别、MVCC、幻读解决
数据库·mysql
自然语35 分钟前
基于场景、需求、方法匹配和学习评价的垂直移动任务控制系统
学习
小高学习java1 小时前
事务的边界问题,如何判断数据回滚时机。
java·数据库·后端
旅僧1 小时前
Π0 理论讲解更新中
学习
迷枫7122 小时前
【无标题】
数据库
知南x2 小时前
【DPDK例程学习】(3) timer
学习
TDengine (老段)2 小时前
TDengine 扫描算子 — TableScan、TagScan 与下推优化
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
放下华子我只抽RuiKe52 小时前
FastAPI 全栈后端(三):数据库与 ORM
前端·数据库·react.js·oracle·性能优化·前端框架·fastapi