数据库原理与应用MySQL版第二章课后作业答案

2.1 试述关系模型的三个组成部分。
答:关系模型由关系数据结构、关系数据操作和关系完整性约束三部分组成。
2.2一个关系模式能否没有关键字为什么
不可以,关键字唯一标识文件中某一记录的最小字段集。
2.3 在参照完整性中,为什么外部关键字属性的值也可以为 空?什么情况下才可以为空?
外部关键字不是主码,不受实体完整性规则约束。
当外部关键字不是主属性时可以为空。
比如选修表(学号,课程号,成绩),学号加课程号是候选码,课程号是主属性,同时对应课程表中的课程号,所以课程号既是主属性也是外码,此时不能为空。

2.4一个 n 行、m 列的二维表(其中没有两行或两列全同),将行或列交换后,能导出多少

个不同的表?
答:1 个 。没有完全相同的行和列,行和列的排列顺序是无关紧要的。
2.5 假定关系 R 和 S 分别有 n 和 m 个元组,试说明下列运算结果中的最小和最大元组个
数:
R合取S R S (自然连接的意思)
其中 c 是条件表达式 ⑷ ,其中 L 是属性集合
答:(1)最小min(m,n),最大(m+n)
(2)最小0,最大max(m,n)
(3)最小0,最大m*n
(4)最小0,最大n
2.6

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)

 (4)

检查优化后的语法树:1.选择下放至叶子端
                                    2.涉及两个的放在x上,比如S.SNO=SC.SNO,放在S和SC上
  • 3
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值