数据库系统教程(第三版课后答案)免费下载 下载本文

内容发布更新时间 : 2024/5/20 18:03:37星期一 下面是文章的全部内容请认真阅读。

过程性语言 非过程性语言 编程时,必须指出“怎么干” 编程时,不必指出“怎么干” 由用户进行数据导航 由系统进行数据导航 单记录处理方式 集合处理方式 属于3GL范畴 属于4GL范畴 C语言,层次、网状DML等 关系DML,软件开发工具等 图2.1 2.2 教材中习题2的解答

2.1名词解释

·关系模型:用二维表格表示实体集,外键和主键表示实体间联系的数据模型,称为关系模型。

·关系模式:是对关系的描述,包括模式名、诸属性名、值域名和模式的主键。 ·关系实例:关系模式具体的值,称为关系实例。

·属性:即字段或数据项,与二维表中的列对应。属性个数,称为元数(arity)。 ·域:属性的取值范围,称为域。

·元组:即记录,与二维表中的行对应。元组个数,称为基数(cardinality)。 ·超键:能惟一标识元组的属性或属性集,称为关系的超键。 ·候选键:不含有多余属性的超键,称为候选键。

·主键:正在使用的、用于标识元组的候选键,称为主键。

·外键:属性集F是模式S的主键,在模式R中也出现,那么称F是模式R的外键。 ·实体完整性规则:实体的主键值不允许是空值。

·参照完整性规则:依赖关系中的外键值或者为空值,或者是相应参照关系中某个主键码。

·过程性语言:编程时必须给出获得结果的操作步骤,即指出“干什么”及“怎么干”的语言。

·非过程性语言:编程时,只需指出需要什么信息,不必给出具体的操作步骤,即只要指出“干什么”,不必指出“怎么干”的语言。

·无限关系:指元组个数为无穷多个的关系。

·无穷验证:验证公式真假时需要进行无限次验证。

? 2.2 在关系模型中,对关系作了哪些规范性限制?

答:对关系作了一下四个限制: 属性值不可分解;没有重复元组;没有行序;使用时有列序。

2.3 为什么关系中的元组没有先后顺序,且不允许有重复元组?

答:由于关系定义为元组的集合,而集合中的元素是没有顺序的,因此关系中的元组也就没有先后的顺序(对用户而言)。这样既能减少逻辑排序,又便于在关系数据库中引进集合论的理论。

每个关系模式都有一个主键,在关系中主键值是不允许重复的。如果关系中有重复元组,那么其主键值肯定相等,起不了惟一标识作用,因此关系中不允许有重复元组。

? 2.4 外键值何时允许空?何时不允许空?

答:在依赖表中,当外键是主键的组成部分时,外键值不允许空;否则外键值允许空。 2.5 笛卡儿积、等值联接、自然联接三者之间有什么区别?

答:笛卡尔积是一个基本操作,而等值联接和自然联接是组合操作。

设关系R的元数为r,元组个数为m;关系S的元数为s,元组个数为n。 那么,R×S的元数为r+s,元组个数为m×n;

R?S的元数也是r+s,但元组个数小于等于m×n;

iθj

R?S的元数小于等于r+s,元组个数也小于等于m×n;

2.6 设有关系R和S: R A B C 3 6 7 2 5 7 7 2 3 4 4 3 S A B C 3 4 5 7 2 3 计算R∪S,R-S,R∩S,R×S,π3,2(S),σB<’5’(R),R 2<2 S, R S。 解: R∪S A B C R-S A B C 3 6 7 3 6 7 2 5 7 2 5 7 7 2 3 4 4 3 4 4 3 3 4 5

R×S R.A R.B R.C S.A S.B S.C 3 6 7 3 4 5 3 6 7 7 2 3 2 5 7 3 4 5 2 5 7 7 2 3 7 2 3 3 4 5 7 2 3 7 2 3 4 4 3 3 4 5 4 4 3 7 2 3

σB<’5’(R)

7 4

A B C 2 4

3 3

2<2

R∩S A B C 7 2 3

π3,2(S) C B 5 4 3 2

R?S R.A R.B R.C S.A S.B S.C

7

2

3

3

4

5

R?S A B C

7

2 ? ? ? ? ?

3

2.7 设有关系R和S: R A B a b c b d e

S

B b e b C c a d

? 计算R ? S,R ? S,σA=C(R×S),S ? R。

B

? 2.8 假设关系U和V分别有m个元组和n个元组,给出下列表达式中可

能的最小和最大的元组数量: ? ⑴ U∩V ⑵ U∪V

? ⑶ U?V

⑷ σF(U)×V (F为某个条件)

? ⑸ πL(U)-V (其中L为某属性集) ? 解:

? 操? 最小元

作 组数 ? ⑴

U? 0 ∩V ? ⑵

? max(m,n

U

)

∪V ? ⑶

U

? 0

?

V ? ⑷

σ

F

? 最大元

组数 ? min(m,n)

? m+n

? m×n

(U)×V ? ⑸

π

L

? 0 ? m×n

(U)-V

? 0 ? m

2.9 如果R是二元关系,那么下列元组表达式的结果是什么?

{t|( ?u)(R(t) ∧R(u) ∧(t[1] ≠u[1]∨t[2] ≠u[2]))}

答:当R的元组数≥2时,R中每个元组都存在与之不相同的元组,因此表达式的结果为关系R; 当R的元组数为0或1时,表达式的结果为空关系。

2.10 假设R和S分别是三元和二元关系,试把表达式π1,5(σ2=4∨3=4(R×S))转换成

等价的:①汉语查询句子;②元组表达式;③域表达式。

解:⑴ 在关系R和S的笛卡尔积中,选取第2个属性值与第4个属性值相等,或者第3个属性值与第4个属性值相等的那些元组,再取第1列和第5列组成新的关系。

⑵ 与(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] )}

与σ2=4 ∨ 3=4(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[2]=t[4] ∨ t[3]=t[4]))}

与π1,5(σ2=4 ∨ 3=4(R×S))等价的元组表达式是:

{ w | (?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[2]=t[4] ∨ t[3]=t[4]) ∧ w[1]=t[1] ∧w[2]=t[5])}

再对上述元组表达式化简(消去t)可得:

{ w | (?u) (?v) (R(u) ∧ S(v) ∧ (u[2]=v[1] ∨ u[3]=v[1]) ∧ w[1]=u[1] ∧

w[2]=v[2])}

在熟练后,可以直接写出上式。 ⑶ 再转换成域表达式:

{ w1 w2 | (?u1) (?u2) (?u3) (?v1) (?v2) (R(u1u2u3) ∧ S(v1v2) ∧ (u2=v1 ∨ u3=v1) ∧

w1=u1 ∧ w2=v2)}

再化简(消去u1,v2)可得:

{ w1 w2 | (?u2) (?u3) (?v1) (R(w1u2u3) ∧ S(v1w2) ∧ (u2=v1 ∨ u3=v1))}

2.11 假设R和S都是二元关系,试把元组表达式{t|R(t) ∧(?u)(S(u) ∧u[1] ≠t[2])}转换成等价的:

①汉语查询句子; ②域表达式; ③关系代数表达式。

答:①在关系R中选取第2列的值与关系S中某个元组的第1列值不相等的那些元组,组成新的关系。

②域表达式为:

{ t1t2 | R(t1t2)∧(?u1) (?u2) ( S(u1u2) ∧ u1≠t2)} ③关系代数表达式为:

π1,2(σ2≠3(R×S))或π1,2(R?S)

2≠1

2.12 试把域表达式{ ab | R(ab) ∧ R(ba)}转换成等价的:⑴汉语查询句子;⑵关系代数表达式;⑶元组表达式。

解:⑴ 在关系R中选取属性值交换后仍是R中元组的那些元组,组成新的关系。 ⑵ 关系代数表达式为:π1,2(σ1=4 ∧ 2=3(R×R))

也可写成:R∩π2,1(R)

⑶ 元组表达式为:{ t | (?u) (?v) (R(u) ∧ R(v) ∧ u[1]=v[2] ∧ u[2]=v[1] ∧ t[1]=u[1]

∧ t[2]=u[2])}

或:{ t | (?v) (R(t) ∧ R(v) ∧ t[1]=v[2] ∧ t[2]=v[1])}

2.13 有两个关系R (A, B, C)和是S(D, E, F),试把下列关系代数表达式转换成等价的元组表达式: ①πA(R); ②σB=’17’(R); ③ R×S; ④πA,F(σC=D(R×S) 解:①πA(R):{ t | (?u) ( R(u) ∧ t[1]=u[1])}

②σB='17'(R):{ t | R(t) ∧ t[2]= '17'}

③ 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])}

④πA,F(σC=D(R×S)):{ t | (?u) (?v) ( R(u) ∧ S(v) ∧ u[3]=v[1] ∧ t[1]=u[1]

∧ t[2]=v[3])}

? 2.14 设有关系R(A,B,C)和S(A,B,C),试把下列关系代数表达式

转换成等价的域表达式: ① πA(R) ② σ2=′17′(R) ③ R∪S ⑤ R-S

④ R∩S

⑥ π1,2(R) π2,3(S)

解:① πA(R): { t1 | (?u2) (?u3) ( R(t1u2u3))} ② σ2=′17′(R): { t1t2t3 | R(t1t2t3) ∧ t2= '17'}

③ R∪S:{ t1t2t3 | R(t1t2t3) ∨ S(t1t2t3)} ④ R∩S:{ t1t2t3 | R(t1t2t3) ∧ S(t1t2t3)} ⑤ R-S:{ t1t2t3 | R(t1t2t3) ∧┓ S(t1t2t3)}

⑥ π1,2(R) π2,3(S):{ t1t2t3 | (?u3) (?v1) | R(t1t2u3) ∧ S(v1t2t3)}

? 2.15 设有关系R(A,B)和S(A,C),试把下列域表达式转换成等价的

关系代数表达式: ? ① {a |(?b)(R(ab)∧ b=17)} ? ② {abc |(R(ab)∧ S(ac))} ? ③ {a |(?b)(R(ab))∨(?c)((?d)(S(dc))?S(ac))} ? ④ {a |(?c)(S(ac)∧(?b1)(?b2)(R(ab1)∧R(cb2)∧b1>b2))}

? 解:① π1(σ2=′17′(R)) ? ② R?S

? ③ π1(R)∪(S÷π2(S))

? ④ π1(σ1=3 ∧ 2=5 ∧ 4>6(S×R×R))

2.16 设两个关系R (A,B )和S (A,C )。用null表示空值,分别写出等价于下列表达式的元组关系演算表达式:

① R S; ② R S; ③ R S 。 解:① R S:

{ t | (?u) (?v) (R(u) ∧ S(v) ∧ u[1]=v[1] ∧ t[1]=u[1] ∧t[2]=u[2] ∧ t[3]=v[2])

∨ (?v) (?u) (S(v) ∧ R(u) ∧ v[1]≠u[1] ∧ t[1]=null ∧t[2]=v[1] ∧ t[3]=v[2])}

② R S: { t | (?u) (?v) (R(u) ∧ S(v) ∧ u[1]=v[1] ∧ t[1]=u[1] ∧t[2]=u[2] ∧ t[3]=v[2])

∨ (?u) (?v) (R(u) ∧ S(v) ∧ u[1]≠v[1] ∧ t[1]=u[1] ∧t[2]=u[2] ∧

t[3]=null)

∨ (?v) (?u) (S(v) ∧ R(u) ∧ v[1]≠u[1] ∧ t[1]=null ∧t[2]=v[1] ∧ t[3]=v[2])}