教学单元2 关系代数查询优化

1. 给出下列术语的定义,并加以理解.(答案)

函数依赖、完全函数依赖、传递函数依赖、侯选码、主码、全码、1NF、2NF、3NF、BCNF。

2. 关系查询语言分为哪两大类,二者有何区别?(答案)

3. 试述关系模型的完整性规则。(答案)

4. 关系代数的基本运算有哪些?(答案)

5. 在关系模式选课(学号,课程号,成绩)中,“学号→课程号”正确吗?为什么?(答案)

7. 下面的结论哪些是正确的?哪些是错误的?对于错误的请给出一个反例说明。(答案)

1)任何一个二目关系是属于3NF的。

2)任何一个二目关系是属于BCNF的。

3)当且仅当函数依赖A→B在R上成立,关系R(A,B,C)等于投影R1(A,B)和R2(A,C)的连接。

4)若R.A→R.B,R.B→R.C,则R.A→R.C。

5)若R.A→R.B,R.A→R.C,则R.A→R.(B,C)。

6)若R.B→R.A,R.C→R.A,则R.(B,C) →R.A。

7)若R.(B,C) →R.A,则R.B→R.A,R.C→R.A。

7. 试述查询优化的一般步骤。(答案)

8. 请按要求分析下面关系模型属于第几范式,如果将其化为第三范式应该怎样分解?并指出各关系主码及可能存在的外码。(答案)

1) 图书(阅览证号,学号,姓名,性别,系部,书号,书名,作者,出版社,借书日期,还书日期)请分析这属于第几范式,如果

将其化为第三范式应该怎样分解?并指出各关系主码及可能存在的外码。

2) 医疗(患者编号,患者姓名,患者性别,医生编号,医生姓名,诊断日期,诊断结果,恢复情况,科室编号,科室名称)请分析这属于第几范式,如果将其化为第三范式应该怎样分解?并指出各关系主码及可能存在的外码。

  3)仓库(管理员号,管理员姓名,性别,年龄,商品号,商品名,类别,购入日期,库存量,单位,数量,库房编号,库房名称,库房面积 )

  请分析这属于第几范式,如果将其化为第三范式应该怎样分解?并指出各关系主码及可能存在的外码。

9.设有三个关系:(答案)
student(snum,sname,sex,age)
sc(snum,cnum,grade)
course(cnum,cname,teacher)

请用关系代数表达式表示下列查询。
 1)查询“李明”老师所教授课程的课程号和课程名。
 2) 查询学号为“2019001112”学生学习课程的课程号、课程名、任课教师和成绩。
 3) 查询至少选了两门课的学生姓名。
 4) 查询选了“李明”老师所教授课程的学生姓名。
 5) 查询女生选修课程的课程号、课程名和任课教师。
 6) 查询选了全部课程的学生学号和姓名。

 

 

习题二答案

 

 1.答:

(1) 函数依赖:设RU>是属性集U上的关系模式,X,YU的子集。若对于R<U>的任意一个可能的关系rr中不可能存在两个元组在X上的属性值相等,而Y上的属性值不等,则称X函数确定Y函数,或Y函数依赖于X函数,记作XY 。例如,在学生(学号,姓名,年龄,年级)表中:学号→姓名,学号年龄,学号年级。

(2)部分函数依赖和完全函数依赖:在RU>中,如果XY,并且对于X的任何一个真子集X’,都有X’→Y ,则称YX完全依赖,记作:XY;若XY,但Y不完全函数依赖于X,则称YX部分函数依赖,记作:X→Y

例如,在教学关系模式中,学号和课程名为主码。(学号,课程名)成绩,(学号,课程名)姓名。

(3)传递函数依赖:在R<U>中,如果XY,  ( Y     X ), YX , YZ, 则称ZX传递函数依赖。传递函数依赖记作X → Z

   例如,在教学模式中,因为存在:学号系名,系名系主任;所以也存在:学号系主任。

(4)候选关键字,主关键字,全关键字:设R <A1,A2An  >  为一关系模式,FR所满足的一级函数依赖,X{ A1,A2An }的子集,如果X满足:

1XA1,A2AnF+  

2)不存在X的真子集YY     X,  YA1,A2AnF+。则称X是关系模式的候选码(候选关键字)。在候选关键字中选择一个为主码(主关键字)。如果关系模式中不存在函数依赖,则全部属性构成码,即为全码(全关键字)。

   (51NF,2NF,3NF,BCNF:如果关系模式R,其所有的属性均为简单属性,即每个属性都是不可再分的,则称R属于第一范式;若R1NF,且每一个非属性完全依赖于码,则R2NF;关系模式 RUF 中若不存在这样的码X、属性组Y及非主属性ZZ不为Y子集)使得XYX不可推导出YYZ成立,则称 RUF 3NF;系模式RUF1NF。若XYY 不为X子集时,X必含有码,则RUF BCNF

    2.答:

  关系查询语言根据其理论基础的不同分为两大类,一是关系代数语言(查询操作是以集合操作为基础的运算);另一是关系演算语言(查询操作是以谓词演算为基础的运算)。按谓词变元的基本对象是元组变量(Tuple variable)还是域变量(Domain variable)又分为元组关系演算和域关系演算两种。这两种方式的功能是等价的。

         3.答

关系模型的完整性包括实体完整性(Entity Integrity)、参照完整性(Referential integrity)和用户定义的完整性。

    4.答:

关系代数的运算对象是关系,运算结果也为关系。关系代数用到的运算符号有四类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符。

(1) 集合运算符:U (并)、∩(交)、-(差)、×(笛卡儿积)。

(2) 专门的关系运算符:σ(选择)、(投影)π、∞(联接)、÷(除)。

(3) 算术比较符:<(小于),≤(小于等于),>(大于),≥(大于等于),≠(不等于),=(等于)。

(4) 逻辑运算符:∧(与),∨(或),┐(非)。

    5.答:

 不 正确。因为学号不能够单独决定课程号。

    6.答

    1) 正确。

    2) 正确。

    3) 正确。

    4) 正确。

    5) 正确。

    6) 正确。

    7) 不正确。

    7.答:

1)把查询转换成语法树表示。

2)把语法树转换成标准(优化)形式。

3)选择低层的存取路径。

4)生成查询计划,选择代价最小的查询计划。

    8.答:

1)图书(阅览证号,学号,姓名,性别,系部,书号,书名,作者,出版社,出版日期,页数,借书日期,还书日期);

1NF

读者信息(阅览证号,学号,姓名,性别,系部)  2NF

图书信息(书号,书名,作者,出版社,出版日期,页数) 3NF

借阅(阅览证号书号,借书日期,还书日期),外码:阅览证号书号

3NF 

2)医疗(患者编号,患者姓名,患者性别,患者电话,医生编号,医生姓名,医生性别,医生电话,医生职称,诊断日期,诊断结果,恢复情况,科室编号,科室名称,科室面积);

(1)患者信息表(患者编号,患者姓名,患者性别,患者电话)3NF

(2)医生信息表(医生编号,医生姓名,医生性别,医生电话,医生职称, 科室编号)3NF

(3)科室信息表(科室编号,科室名称,科室面积)3NF

(4)治疗表(患者编号, 医生编号,诊断日期,诊断结果,恢复情况)3NF,外码:患者编号, 医生编号

3)仓库(管理员号,管理员姓名,性别,出生日期,联系电话,商品号,商品名,类别,保质期,单位,购入日期,购入数量,库房编号,库房名称,库房面积) 

(1) 管理员信息表(管理员号,管理员姓名,性别,出生日期,联系电话,库房编号)3NF

(2) 商品表(商品号,商品名,类别,保质期,单位, 库房编号)3NF

(3) 库房表(库房编号,库房名称,库房面积)3NF

(4) 进货表(管理员号,商品号,购入日期,购入数量,购入单价)3NF,外码:管理员号,商品号

(5) 出库表((管理员号,商品号,出库日期,出库数量,出库单价))3NF外码管理员号,商品号

    9.答:

σ(选择)、(投影)π、∞(联接)、÷(除)。

student(snum,sname,sex,age)
sc(snum,cnum,grade)
course(cnum,cname,teacher)

  1)  π cnum,cname σteacher='李明'(course)
 2) 
π cnum,cname,teacher,grade σsnum='2019001112'(sc)∞(course)
 3) 
πsname1=4∧2≠5(sc∞sc)∞πsnum,sname(student))
 4)
πsname((σteacher='李明'(course))∞(sc)∞πsnum,sname(student))
 5)
π cnum,cname,teacher((σsex=''(student))∞(sc)∞(course)
 6)
π snum,sname((πsnum,cnum(sc)÷πsnum(course))πsnum,sname(student))