2.1 试述关系模型的三个组成部分。
答:关系模型由关系数据结构、关系数据操作和关系完整性约束三部分组成。
2.2一个关系模式能否没有关键字为什么
不可以,关键字唯一标识文件中某一记录的最小字段集。
2.3
在参照完整性中,为什么外部关键字属性的值也可以为
空?什么情况下才可以为空?
外部关键字不是主码,不受实体完整性规则约束。
当外部关键字不是主属性时可以为空。
比如选修表(学号,课程号,成绩),学号加课程号是候选码,课程号是主属性,同时对应课程表中的课程号,所以课程号既是主属性也是外码,此时不能为空。
2.4一个 n 行、m 列的二维表(其中没有两行或两列全同),将行或列交换后,能导出多少
个不同的表?
答:1 个 。没有完全相同的行和列,行和列的排列顺序是无关紧要的。
2.5
假定关系 R 和 S 分别有 n 和 m 个元组,试说明下列运算结果中的最小和最大元组个
数:
⑴ R合取S
⑵
R
∞
S (自然连接的意思)
⑶
其中 c 是条件表达式 ⑷
,其中 L 是属性集合
![](https://i-blog.csdnimg.cn/blog_migrate/305b7642be9def6f7fbd01565396541c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d27d031290b246b38a3521cab0ecb2d3.png)
答:(1)最小min(m,n),最大(m+n)
(2)最小0,最大max(m,n)
(3)最小0,最大m*n
(4)最小0,最大n
2.6
![](https://i-blog.csdnimg.cn/blog_migrate/72718f51b2a60dac1772602e2d78fe4c.png)
2.10 设数据库中有四个基本表:
部门 Dept(D#(部门号),DName(部门名称),DTel(电话号码),DMan(经理工号))
职工 EMP(E#(职工号),EName(姓名),ESex(性别),EPost(职务),D#(部门号))
工程 PRO(P#(项目号),PName(项目名称),PBud(经费预算))
施工 EP(E#(职工号),P#(项目号),WH(工时))
(
1)写出每个表的主码和外码。
(2)用关系代数表达式写出职务为“工程师”的姓名和部门名称。
(3)用关系代数表达式写出姓名为“潘小光”的职工所在的部门名称和所参与的项目名称。
答:部门Dept:主码部门号D#
职工 EMP:主码E#,外码D#
工程 PRO:主码P#
施工 EP:主码E#+P#,外码E#,P#
(2)
∏
EName, DName
(σ
EPost=”工程师”
(Dept∞ EMP))
(3))∏
PName, DName(σEName =” 潘小光”(Dept∞ EMP∞ PRO∞ EP))、
2.11
设数据库中有三个基本表:
S(SNo(学号),SName(姓名),SSex(性别),SPro(专业方向))
SC(SNo(学号),CNo(课程号),Grade(成绩))
C(CNo(课程号),CName(课程名),CPre(先行课),CCredit(学分))
试用关系代数表达式表示下列查询语句:
(1)找出选修网络方向女同学名单
(2)求选修 15164 课程的学生姓名和专业方向
(3)求选修数据库原理与应用课程的学生姓名
(4)同时选修人工智能及编译技术的学生名单
(5)没有被任何人选修的课程名
(6)没有选修任何课程的学生性别和姓名
(7)至少选修了 002 号学生选修的全部课程的学生学号
(8)求所有课程被选修的情况,列出课程号、课程名、先行课、学分、学号和成绩
(9)求每个学生没有选修的课程,列出学号、课程号
答:(1)σ
SPro =”网络”
∧
SSex =”女”
(S)
(2)∏
SName, SPro
(σ
CNo=”15164”(S∞SC))
(3)∏
SName
(σCName=”数据库原理与应用”(C∞ SC∞S))
(4)∏SName(σCName=”人工智能”(C∞ SC∞S))∩∏SName(σCName=”编译技术”(C∞ SC∞S))
或者
∏SName,CNo(S∞SC)÷∏
CNo
(σ
CName =”人工智能”
∨
CName=”编译技术”
(C))
或者
∏
SNo, CNo
(SC)
÷
∏
CNo
(σ
CName =”人工智能”
∨
CName=”编译技术”
(C))
(5)
∏
CName
(σCNO=(∏CNo
(C) -∏C
No
(SC))(C))
(6)
∏SName, SSex(S)-∏SName, SSex(S∞ SC)
(7)∏
SNo, CNo
(SC)
÷
∏
CNo
(σ
Sno=”002”
(SC))
(8)
C∞SC
(9)∏
SNo, Cno
(S
×SC
) -∏
SNo, Cno
(SC)
注意:
做自然连接的时候,要写成S
∞SC
∞C这样的,有公共属性的放在中间。
(9)这种,做投影时,减法一定注意列数对应且相同
(10)查询至少选修两门课程的学生学号和姓名
分析:完全相同的两个关系做自然连接还是它本身。
R∞R=R。关系代数没有统计功能,只能退一步做笛卡尔积。
解:
∏SNo,SName(S∞∏1(σ1=4∩2≠5(SCxSC)))
2.12 为什么要对关系代数表达式进行优化?
不同的关系代数运算顺序执行效率不同。
2.13 在 2.11 中的三个关系中,用户有一个查询语句:检索网络方向的学生选修先行课为计
算机网络的课程名和课程学分。
⑴ 写出该查询的关系代数表达式.
⑵ 写出该查询优化的关系代数表达式。
⑶ 画出该查询初始的关系代数表达式的语法树。
⑷ 使用本章中介绍的优化算法,对语法树进行优化,并画出优化后的语法树。
答:(1)∏
Cname, CCredit
(σ
SPro =”网络”
∧ CPre =”计算机网络” (S∞SC∞C))
等价于
∏
Cname, CCredit
(σSPro =”网络”∧ CPre =”计算机网络” ∧ S.SNo=SC.SNo∧SC.CNo=C.CNo
(S×SC×C))
(2)
∏
Cname, CCredit
((∏
SNo
(σ
SPro =”网络”(S))∞ ∏SNo,CNo (SC)∞ (∏CNo,CName,CCredit
(σ
CPre =”计算机网络”
(C))))
(3)
![](https://i-blog.csdnimg.cn/blog_migrate/0aff5594c4353cb28c383b574da3dd38.png)
(4)
检查优化后的语法树:1.选择下放至叶子端
2.涉及两个的放在x上,比如S.SNO=SC.SNO,放在S和SC上