A
B
B
C
a
b
b
c
c
b
e
a
d
e
b
d
关系R
关系S
答:
R×S:
R.A
R.B
S.B
S.C
a
a
a
c
c
c
d
d
d
b
b
b
b
b
b
e
e
e
b
e
b
b
e
b
b
e
b
c
a
d
c
a
d
c
a
d
RS:
A
B
C
a
a
c
c
d
b
b
b
b
e
c
d
c
d
a
σA=C(R×S):
R.A
R.B
S.B
S.C
a
c
d
b
b
e
E
b
b
a
c
d
6.如果R是二目关系,那么下列元组表达式的结果是什么?
{t∣(∃u)(R(t)∧R(u)∧(t[1]≠u[1]∨t[2]≠u[2]))}
答:
当R的元组数≥2时,R中每个元组都存在与之不相同的元组,因此表达式的结果为关系R;当R的元组数为0或1时,表达式的结果为空关系R。
7.设有两个关系R(A,B,C)和S(D,E,F)。
试表下列关系代数表达式转换成等价的元组表达式:
(1)πA(R)
(2)σB=’19’(R)(3)R×S(4)πA,F(σC=D(R×S))
答:
(1)πA(R)转换成{t∣(∃u)(R(u)∧t[1]=u[1])}
(2)σB=’19’(R)转换成{t∣R(t)∧t[2]=‘19’)}
(3)R×S转换成{t∣(∃u)(∃v)(R(u)∧S(v)∧t[1]=u[1]∧t[2]=u[2]∧t[3]=u[3]∧t[4]=v[1]∧t[5]=v[2]∧t[6]=v[3])}
(4)πA,F(σC=D(R×S))转换成{t∣(∃u)(∃v)(R(u)∧S(v)∧t[1]=u[1]∧t[2]=v[3]∧u[3]=v[1])}
8.已知学生一课程数据库的三个关系。
S(学生关系),C(课程关系),SC(学生选课关系)。
S(S#,SN,SD,SA)
SC(S#,C#,GS)
C(C#,CN,PC#)
试用关系代数表达式表示下列查询要求:
(1)取出所有学生的全部细节
答:
πS#,SN,SD,SA(S)
(2)取出选修课程号为‘C2’的学生姓名与所属的系。
答:
πSN,SD(sπS#(σc#=‘C2’(SC)))
(3)取出同时选修课程号为‘C1’和‘C2’两门课程的学生名字。
答:
πSN(πS#,c#(SC)÷πc#(σc#=’C1’∨c#=’c2’(C))S)
(4)取出选修“BASIC”语言这门课程的学生姓名。
答:
πSN(sπS#(σcN=‘BASIC’(C)SC))
(5)取出年龄大于23岁的计算机系的学生姓名。
答:
πSN(σAge>23∧SD=‘计算机‘(S))
(6)取出不选“操作系统”课程的学生姓名与年龄。
答:
πSN,SA-πSN,SA(sπS#(σcN=‘操作系统’(C)SC))
(7)取出学号为‘S1’的学生选修的课程号、课程名与成绩。
答:
πC#,CN,GS(CπC#,GS(σS#=‘S1’(SC)))
(8)取出全部学生都选修的课程号与课程名。
πS#,c#(SC)÷πS#(S)πC#,CN(C)
9.试用元组关系演算表达式表示第8题的各个查询语句。
(1)取出所有学生的全部细节
答:
{t∣S(t)}
(2)取出选修课程号为‘C2’的学生姓名与所属的系。
答:
{t∣(∃u)(∃v)(S(u)∧SC(v)∧v[2]=‘C2’∧u[1]=v[1]∧t[1]=u[2]∧t[2]=u[3])}
(3)取出同时选修课程号为‘C1’和‘C2’两门课程的学生名字。
答:
{t∣(∃w)(∃u)(∃v)(S(w)∧SC(u)∧SC(v)∧u[2]=‘C1’∧v[2]=‘C2’∧u[1]=v[1]∧w[1]=u[1]∧t[1]=w[2])}
(4)取出选修“BASIC”语言这门课程的学生姓名。
答:
{t∣(∃u)(∃v)(∃w)(S(u)∧SC(v)∧C(w)∧u[1]=v[1]∧v[2]=w[1]∧w[2]=“BASIC”∧t[1]=u[2])}
(5)取出年龄大于23岁的计算机系的学生姓名。
答:
{w∣(∃t)(S(t)∧t[4]>‘23’∧t[3]=‘计算机’∧w[1]=t[2])}
(6)取出不选“操作系统”课程的学生姓名与年龄。
答:
{t∣((∃u)(∀v)(∃w)(C(u)∧SC(v)∧S(w)∧u[2]=“操作系统”∧u[1]=v[1]∧t[1]=w[2]∧t[2]=w[4]∧w[1]≠v[1])}(此答案仅供参考)
(7)取出学号为‘S1’的学生选修的课程号、课程名与成绩。
答:
{t∣(∃u)(∃v)(∃w)(S(u)∧SC(v)∧C(w)∧u[1]=v[1]∧v[2]=w[1]∧w[2]=“BASIC”∧t[1]=u[2])}
(8)取出全部学生都选修的课程号与课程名。
答:
{t∣(∃u)(∀v)(∃w)(C(u)∧S(v)∧SC(w)∧u[1]=w[2]∧w[1]=v[1]∧t[1]=u[1]∧t[2]=u[2])}
10.若对于第8题的学生一课程数据库进行下列检索操作,试指出检索后的结果。
用汉语句子表达出来。
(1)πS#(σC#=’C1’(SC))
答:
取出选修课程号为‘C1’的学生学号。
(2)πSN(πS#,C#(SC)÷πC#(C)πS#,SN(S))
答:
取出选修全部课程的学生姓名。
11.假设R和S分别是三元和二元关系,试把表达式
π1,5(σ2=4∨3=4(R×S))
转换成等价的:
(1)汉语查询句子;
答:
从R与S的笛卡儿积中选择R的第2列与S的第1列相等或者R的第3列与S的第1列相等的元组并投影R的第1列与S的第2列。
(2)元组表达式;
答:
{t∣(∃u)(∃v)(R(u)∧S(v)∧t[1]=u[1]∧t[2]=v[2]∧(u[2]=v[1]∨u[3]=v[1]))}
(3)域表达式。
答:
{xv∣(∃x)(∃u)(R(xyz)∧(S(uv)∧(y=u∨z=u))}
12.假设R和S都是二目关系,试把元组表达式
{t∣R(t)∧(∃u)(S(u)∧u[1]≠t[2])}
转换成等价的:
(1)汉语查询句子;
答:
从R中选择R的第2列与S的第1列值不相等的那些元组,组成新的关系。
(2)关系代数表达式;
答:
π1,2(σ2≠3(R×S))
(3)域表达式
答:
{xy∣(R(xy)∧(∃u)(S(uv)∧u≠y)}
13.把域关系演算表达式{ab|R(ab)∧R(ba)}
(1)转换为元组关系演算表达式。
答:
{t∣R(t)∧(∃u)(R(u)∧t[1]=u[2]∧t[2]=u[1])}
(2)转换为关系代数表达式。
答:
π1,2(σ1=4∧2=3(R×R))
习题三
1.
SELECT编号,姓+名FROM家庭成员表
2.
SELECT编号,姓+名FROM家庭成员表WHERE生日=1972-08-04
3.
SELECTA.姓+A.名,B.角色FROM家庭成员表A,角色表BWHEREA.成员编号=B.编号
4.
SELECTA.姓+A.名,B.地址FROM家庭成员表A,家庭状况表BWHEREA.地址编号=B.地址编号
5.
SELECT编号,姓+名FROM家庭成员表WHERESUBSTR(生日,1,2)=”1965”
6.
SELECT编号,姓+名FROM家庭成员表WHERE发送贺卡=YES
7.
SELECT编号,姓+名FROM家庭成员表WHERE成员编号IN(SELECT编号FROM角色表WHERE角色=‘子女’)
8.
INSERTINTO家庭成员表VALUES(16,1,‘鹏’,‘李’,7,#1972-09-04#,‘NO’,#2005-1-16#,‘喜欢踢足球’)
9.
DELETEFROM家庭成员表WHERE地址编号IN(SELECT地址编号FROM家庭状况表WHERE国家=‘英国’)
10.
UPDATE家庭成员表SET发送贺卡=YESWHERE地址编号IN(SELECT地址编号FROM家庭状况表WHERE省/自治区/直辖市=‘北京’)
习题四
1.解释下列术语:
函数依赖部分函数依赖传递函数依赖完全函数依赖主键外部键
答:
设有关系模式R(∪),∪是R的属性的集合,X、Y⊆∪,对于R的任意关系实例r,r中的任意两个元组t和s,如果t[X]=s[X],则t[Y]=s[Y],则称Y函数依赖于X,或称X函数地决定Y,记作X→Y。
设R是一个具有属性集合∪的关系模式,如果X→Y,并且对于X的任何一个真子集Z,Z→Y都不成立,则称Y完全函数依赖于X,记作:
X
Y。
若X→Y,但Y不完全函数依赖于X,则称Y部分函数依赖于X,记作:
X
Y。
设R是一个具有属性集合∪的关系模式,X,Y,Z是∪的子集,Y→X不成立,Z-X、Z-Y和Y-X不空。
如果X→Y,Y→Z则称Z传递函数依赖于X,记作:
X
Z。
设R是一个具有属性集合∪的关系模式,K是∪的子集。
若K满足下列两个条件,则称K是R的一个候选键。
(1)K→∪
(2)不存在K的真子集Z,使得Z→∪。
候选键可以唯一地识别关系的元组。
一个关系模式中可能具有多个候选键。
我们可以指定一个候选键作为主键。
设X是关系模式R的属性的子集。
如果X是另一关系模式的候选键,则称X是R的外部键。
2.什么是范式?
它有几种类型?
这些类型之间的关系是什么?
答:
关系数据库中的关系满足一定的要求。
而把满足不同程度要求的关系称为不同的范式。
满足最低要求的关系叫第一范式,简称1NF。
在第一范式中进一步满足一定要求的为第二范式,简称2NF,其余以此类推。
各种范式之间的联系是:
INF⊃2NF⊃3NF⊃4NF⊃5NF
3.3NF与BCNF有何区别和联系?
答:
如果关系模式R是2NF,且它的任何一个非主属性都不传递函数依赖于任何候选键,则称R为第三范式。
如果关系模式R∈1NF,且每个函数依赖X→Y,X必为候选键,则R是BCNF范式。
如果R是BCNF,由定义可知,R中不存在任何属性传递地函数依赖或部分地函数依赖于任何候选键,所以R必为3NF。
但是,反过来,如果R是3NF,R未必是BCNF。
因为3NF中可能存在主属性传递地函数依赖或部分地函数依赖于键。
4.设有关系模式R(A,B,C,D,E)上的函数依赖集为F,并且F={A→BC,CD→E,B→D,E→A}
(1)试求关系模式R的所有侯选键。
答:
R的所有侯选键为:
A、BC、CD和E。
(2)关系模式R最高是第几范式?
答:
关系模式R最高是第3范式。
(3)分别将关系模式R规范到3NF和BCNF。
答:
关系模式R已是第3范式,故只需分解为BCNF。
∵B→D,该函数依赖不满足BCNF∴将R分解为R1(BD)和R2(ABCE),此时R1和R2已是BCNF。
5.下面的结论哪些是正确的,哪些是错误的?
对于错误的结论请给出反例说明。
(1)任何一个二目关系都属于3NF。
(√)
(2)任何一个二目关系都属于BCNF。
(√)
(3)任何一个二目关系都属于4NF。
(√)
(4)当且仅当函数依赖A→B在R上成立,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接。
(×)
(5)如果R.A→R.B,R.B→R.C,则R.A→R.C。
(√)
(6)如果R.A→R.B,R.A→R.C,则R.A→R.(B,C)。
(√)
(7)如果R.B→R.A,R.C→R.A,则R.(B,C)→R.A。
(√)
(8)如果R.(B,C)→R.A,则R.B→R.A,R.C→R.A。
(×)
习题五
1.简述数据库设计的几个阶段与其研究的目的.
答:
(1)需求分析阶段:
需求分析是整个设计过程的基础,是最困难、最耗费时间的一步。
需求分析是否做得充分与准确,决定了在此基础上创建数据库与应用程序的速度与质量。
需求分析做得不好,轻则使应用程序的开发反复性比较大,重则会导致整个数据库设计返工重做。
无论那一种都将造成巨大的经济浪费,给企业、单位和个人造成一定程度的影响。
因此,这一阶段必须认真对待。
(2)概念结构设计阶段
概念结构设计是整个数据库设计的关键。
是系统分析员根据用户的需求进行综合、归纳与抽象后形成一个独立于具体DBMS的整体概念模型。
它是对用户需求的一种总结与升华,它更能够体现用户需求的整体全貌。
(3)逻辑结构设计阶段
逻辑结构设计是将概念结构转换为所选择的DBMS所支持的数据模型,并对其进行优化。
对于不同的数据库管理系统,本身支持的功能也不完全一样,所以一般要根据用户的需求选择一个合适的DBMS。
一味地选择大型数据库将增加系统开销,同时也未必能真正发挥大型数据库的所有优势。
(4)数据库物理设计阶段
数据库物理设计是为逻辑数据模型选取一个最适合应用环境的物理结