FChao
发布于 2026-05-02 / 50 阅读
0
0

数据库系统工程师⑫:关系数据库

一、2025年真题

1.在数据库规范化设计中,( )的基础是多值依赖理论。

A. 1NF

B. 2NF

C. 3NF

D. 4NF

1NF → 所有属性不可再分,不允许复合属性,但是可以存在多值属性

2NF → 消除部分函数依赖

3NF → 消除传递依赖

BCNF → 依赖左边必须包含候选键

4NF → 消除非平凡多值依赖

2.若关系模式 R(X,Y,Z),满足:X→→Y,X→→Z,( )。

A. Y、Z必须完全函数依赖X

B. R中存在数据冗余,可分解为R1(X,Y)和R2(X,Z)

C. R属于4NF

D. X是码

X→→Y,表示对于同一个X,可能对应多个Y,4NF 就是要把“相互独立的多值属性”拆成不同的表。拆分之后,只剩下平凡的多值依赖。因此C明显错误,R则是满足4NF的做法。

D选项:由于原题目中存在两个独立的多值依赖,对于一个X,有多个不同的Y组合,还有多个不同的独立的Z组合,X完全不可能标识唯一的一行。因此选项错误。

A选项:多值依赖→→无法推导出函数依赖→

3.1.学生表(学号,姓名,系号,…),

关于 π(学号,系号) 说法正确的是( )。

A. 选出学号和系号并去重

B. 选出学号和系号不去重

C. 选出除学号和系号的其他列

3.2.设有关系:学生(学号,姓名,性别,年龄,系号),关系代数操作σ年龄>20(学生)的执行结果是();关系代数操作π姓名,系号(学生)的执行结果是()。

A.年龄大于20的学生的学号和年龄

B.仅年龄大于20的学生的姓名

C.所有学生的年龄属性,且仅保留年龄大于20的值

D.所有年龄大于20的学生元组,包含全部属性

选择操作是针对行进行的,肯定选择的是一整行

A.仅保留姓名和系号两列的所有学生元组

B.仅保留姓名和系号两列,并去重

C.去掉姓名和系号两列的所有学生元组

D.将姓名和系号两列合并为新属性的所有学生元组

4.若关系模式R(A,B,C)中存在函数依赖A→B和B→C,则以下说法正确的是()。

A.A→C是传递函数依赖

B.B→A是部分函数依赖

C.A→C是平凡函数依赖

D.C→B是完全函数依赖

注意看D选项C→B根本就是错的

三、按知识点分类的往年题

1.假设员工关系 EMP(员工号,姓名,性别,部门,部门电话,部门负责人,家庭住址,家庭成员,成员关系)如下表所示。

如果一个部门只能有一部电话和一位负责人,

一个员工可以有多个家庭成员,那么关系EMP属于( 1 ),且( 2 )问题;

为了解决这一问题,应该将员工关系EMP分解为( 3 )。

请作答:第 1 题

A 1NF

B 2NF

C 3NF

D BCNF

先仔细观察表,通常只有员工号是唯一的,作为主键,在这道题中,员工号 + 家庭成员 才能唯一确定一行,认为这两个属性组成主键。

其他非主属性只依赖员工号,并不依赖于家庭成员,就变成了部分依赖,不满足第二范式要求,所以只能是第一范式

请作答:第 2 题

C存在冗余,但不存在修改操作的不一致

D存在冗余、修改操作的不一致,以及插入异常和删除异常

2. 是否存在修改操作的不一致?

✅ 存在

如果张晓明的部门电话改了,需要同时修改 3 条记录,否则会出现不一致。

插入和删除异常

3. 是否存在插入异常?

插入异常:一个实体无法独立插入,必须依赖另一个实体先存在。

删除异常:删除一个实体时,不相关的信息也被连带删除。

只要发现 非主属性决定非主属性(传递依赖)或 部分依赖,就可以锤定存在插入/删除异常,不需要再看具体数据。

✅ 存在

例如一个新员工还没有家庭成员,无法插入记录(因为主键不能为空)。

4. 是否存在删除异常?

✅ 存在

如果删除某员工的所有家庭成员记录,该员工的信息就会从表中完全丢失。

请作答:第 3 题

A EMP1(员工号,姓名,性别,家庭住址) EMP2(部门,部门电话,部门负责人) EMP3(员工号,家庭成员,成员关系)

B EMP1(员工号,姓名,性别,部门,家庭住址) EMP2(部门,部门电话,部门负责人) EMP3(员工号,家庭成员,成员关系)

C EMP1(员工号,姓名,性别,家庭住址) EMP2(部门,部门电话,部门负责人,家庭成员,成员关系)

D EMP1(员工号,姓名,性别,部门,部门电话,部门负责人,家庭住址) EMP2(员工号,家庭住址,家庭成员,成员关系)

函数依赖有:

① 员工号 → 姓名,性别,部门,家庭住址

② 部门 → 部门电话,部门负责人

③ (员工号, 家庭成员) → 成员关系

原表中部门电话、部门负责人这两个属性的函数依赖并不依赖于完整的候选键(员工号+家庭成员),而是仅依赖于“部门”。所以部门也得跟着一起拆分。

4.5.6.关系 R、S 如下图所示,关系代数表达式π4,5,3(σ1<6(R×S) )的输出结果与( 4 )等价,该表达式与( 5 )等价。若对关系 R、S 进行自然连接,所得关系的属性列数和元组个数分别为( 6 )。

A

B

C

D

这道题π4,5,3(σ1<6(R×S) )考察的是 关系代数运算,特别是:

笛卡尔积(×):R × S

选择(σ):σ₁<₆

投影(π):π₄,₅,₃

列编号引用(数字表示第几列)

第一步:R × S(笛卡尔积)

R 有 4 行,S 有 4 行 → 结果有 4×4 = 16 行,列数为 3+3=6 列。

关系代数标准定义:R × S 的列顺序是 R 的列全部在前,S 的列全部在后

笛卡尔积的结果是一共有6列,那么:

R 有 3 列 → 占据编号 1、2、3

S 有 3 列 → 占据编号 4、5、6

这6列分别是:

R 的第 1 列(R.A)R 的第 2 列(R.B)R 的第 3 列(R.C)

S 的第 1 列(S.A)S 的第 2 列(S.B)S 的第 3 列(S.C)

第二步:σ₁<₆(选择运算,满足列条件 的行保留下来)

根据第一步的分析,我们知道

σ₁<₆=R 的第 1 列(A) < S 的第 3 列(C)

对每一行组合,判断“R的第1列的值”是否小于“S的第3列的值”

如果条件为真,则保留这一行;如果为假,则丢弃这一行。

具体来说,R.A 的每个值会分别与 S.C 的每个值比较,我们这里看到R.A有四行,是1、3、4、5,S.C有4行,是3、1、3、1

那么RA的第一行的1,要去和SC的四行每一行的值都去做比较

RA SC

1 3 1<3保留,保留的行是:124 533

1 1 不满足丢弃

1 3 1<3保留,保留的行是:124 983

剩下的所有情况都不满足左小于右了

第三步π₄,₅,₃ 投影

从每一行中只取第 4 列、第 5 列、第 3 列,并且按这个顺序组成新的行。

第 4 列 = S.A

第 5 列 = S.B

第 3 列 = R.C

根据上一步的操作,

(R.A=1, R.B=2, R.C=4, S.A=5, S.B=3, S.C=3)

取 4,5,3 列:

→ (S.A=5, S.B=3, R.C=4)

→ (5, 3, 4)

(R.A=1, R.B=2, R.C=4, S.A=9, S.B=8, S.C=3)

→ (S.A=9, S.B=8, R.C=4)

→ (9, 8, 4)

答案选B

第二问,我们已经分析出来了

π₄,₅,₃就是

最后一问:若对关系 R、S 进行自然连接,所得关系的属性列数和元组个数分别为( 6 )。

自然连接的规则:

找 同名属性(两个图列名都是ABC,全相同)

然后,在这些同名属性上做等值连接

1️⃣去重(同名属性只保留一份)

2️⃣去掉不等值的行

R这边的每一行,都与S那边的每一行做匹配

没有任何一行满足 A、B、C 全部相等,自然连接结果有 0 行

属性列数:3

元组个数:0

(即空关系)

7.8.9.若关系 R、S 如下图所示,π1,3,7(σ3<6(R×S))= ( 7 ),且结果集的元组列数和元组个数分别为 ( 8 ) ,R ÷ S= ( 9 ) 。

一共有4+3=7列,前4列R后3列。一共有4行x2行=8行

RA RB RC RD SC SD SE

1 2 3 4 5 6 7

在这两个选项中,要看仔细了 根本不存在RE,

因为S没有SA,所以简写A是可以的,第一张图是正确选项

第二问求结果集

先求σ3<6,也就是RC < SD的行

3 比对 4 3<4 保留 1234 342

9 3<9 保留 1234 893

4 比对 4 不满足

9 4<9 保留 1343 893

8 比对 4 不满足

9 8<9 保留 2489 893

8 比对 4 不满足

9 8<9 保留 1289 893

结果为

1 2 3 4 3 4 2

1 2 3 4 8 9 3

1 3 4 3 8 9 3

2 4 8 9 8 9 3

1 2 8 9 8 9 3

再求投影π₁,₃,₇

1 3 2

1 3 3

1 4 3

2 8 3

1 8 3

共 5 行,3 列。也就是3个属性,5个元祖

第三问求R 除以 S

R:ABCD

S:CDE

关系的除法

①ABCD/CDE,相同属性CD被除掉了,在这种除法中,被除的CDE里面的E不是子集,完全不需要考虑,相除的结果就是 ABCD 除掉CD得到AB

②有了AB,我们要找出:在所有的(RA,RB)组合中,它在R中的对应的(RC,RD),有哪些是和S中的(C,D)重合的?

所以说除法有个前提, S的属性CD,是R的属性ABCD的子集,满足

RA RB RC RD SC SD

1 2 3 4 3 4

1 2 8 9 8 9

1 3 4 3

2 4 8 9

第一种RA,RB组合:

1,2 它在R中对应的CD是3和4

在S中也能和CD的3和4重合,那么我们就保留这个1,2作为AB的结果

1,2 它在R中对应的CD8是9

在S中也能和CD的8和9重合,那么我们就保留这个1,2作为AB的结果

最后得到满足条件的(A,B)就是1,2

重复只保留一次

10.给定关系模式R ( U,F) ,U = {A,B,C,D }, F={A→C,A→D,C→B,B→D},F 中的冗余函数依赖为( 10 );若将R分解为ρ={AC,CB,BD},则ρ 满足 ( 11 )。

1️⃣A→C

2️⃣A→D

3️⃣B→C

4️⃣D→B

仔细看F条件:因为A→C,C→B,B→D,已经可以得出A→D,所以A→D,冗余

F = {A→C, A→D, C→B, B→D}

  • A→C:知道了 A,就能知道 C(C 依赖于 A)

  • C→B:知道了 C,就能知道 B(B 依赖于 C)

  • B→D:知道了 B,就能知道 D(D 依赖于 B)

第二问:题目中的若将R分解为ρ={AC,CB,BD},就是将原来有四个属性的表U拆分成3个子表

A不具有无损连接性,而且不保持函数依赖

B不具有无损连接性,但保持函数依赖

C具有无损连接性,而且保持函数依赖

D具有无损连接性,但不保持函数依赖

判断是否保持函数依赖

  • R1(A,C)

  • R2(C,B)

  • R3(B,D)

原题F = { A→C, A→D, C→B, B→D }

  • R1(A, C) → 包含 A→C ✅

  • R2(C, B) → 包含 C→B ✅

  • R3(B, D) → 包含 B→D ✅

  • 子表依赖的并集 G = {A→C, C→B, B→D},可以得出A→D

如何判断无损连接性?(无损连接性已经不考察拆分两个以上的复杂情况了,这里用拆分两个表的例子)如果是拆分成两部分的情况

假设原 R(A,B,C,D),F={A→C, C→B, B→D},

分解为 R1(A,B,C),R2(C,D)

(R1 ∩ R2) → (R1 - R2) 或 (R1 ∩ R2) → (R2 - R1)则成立

R1 ∩ R2 = {C}

R1 - R2 = {A, B}

检查:C → AB 是否成立?

从 F 有 C→B,但没有 C→A,所以 C → AB 不成立

R2 - R1 = {D}

检查:C → D 是否成立?

从 F 有 C→B→D,所以 C→D 成立 ✅

满足第二条 → 具有无损连接性

整个判断只需 10 秒,不用画表。

12.13.对象关系数据库中,员工(工号,姓名,性别,联系电话)表中的联系电话为多值属性,则员工属于( 非1NF关系 ),在SQL99标准中可以使用( 13 )来实现。

A 集合类型 可以存储多个值的集合(如数组、多重集) 存储一组同类型数据 ✅ 适合

B CLOB 类型 大文本对象 存长文本(如文章、日志) ❌ 不直接支持多值

C BLOB 类型 二进制大对象 存图片、音频、视频 ❌ 不直接支持多值

D 结构类型 类似 C 语言 struct,可组合多个不同类型 用于组合属性(如地址拆分为省、市、街) ❌ 不是用来存多个电话的集合

14.若集合D1={0,1,2}、集合D2={a,b,c}、集合D3={a,c},则D1×D2×D3应为( 14 )元的集合,其结果集的元组个数为( 15 )。若

gCJmhEZfD8.png

  ,则结果集的元组个数为( 16 )。

“几元” = 有几个集合参与笛卡尔积

14:3元

竖线 |D1| 表示集合的基数(cardinality),也就是集合中元素的个数

D1={0,1,2},∣D1∣=3

D2={a,b,c},∣D2∣=3

D3={a,c},∣D3∣=2

笛卡尔积的元组数等于各集合基数的乘积:

D1∣×∣D2∣×∣D3∣=3×3×2=18

第 15 空填:18

16题:需要运算D₁ × (D₂ ⨝ D₃)

D₂ ⨝ D₃ 表示自然连接,底下再加=号就是等值连接,都是匹配相同值但是自然连接只保留一个

(题目的底下的符号是1=1,表示的是D2表的第1个字段 等于D3表的第1个字段)

第 1 步:D₂ × D₃

结果是 (a,a), (a,c), (b,a), (b,c), (c,a), (c,c)

选择“两列值相等”即 D₂ 的元素 = D₃ 的元素

(a,a)(c,c)

与 D₁ = {0,1,2} 做笛卡尔积,也就是(0,1,2) X ((a,a)(c,c))

结果集元祖的个数就是3 x 2 =6

结果:

(0,a,a), (0,c,c), (1,a,a), (1,c,c), (2,a,a), (2,c,c)

17.设有员工实体 Employee (员工号,姓名,性别,年龄,电话,家庭住址,家庭成员,关系,联系电话)。

其中,“家庭住址”包括邮编、省、市、街道信息;

“家庭成员,关系,联系电话”分别记录了员工亲属的姓名、与员工的关系以及联系电话,且一个员工允许有多个家庭成员。

员工实体 Employee 的主键为( 17 );“家庭住址”是一个( 18 )属性;该关系属于( 19 );为使数据库模式设计更合理,对于员工关系模式 Employee ( 20 )。

17:

A员工号(员工有多个家庭成员,无法确定唯一的一条数据)

B员工号,家庭成员

18:

A简单:不可再分

B多值:多个同样属性的值

C复合:可再分为更小的子属性 地址(拆分为邮编、省、市、街道)

D派生:可由其他属性计算得出

请作答:第 19 题

A2NF,无冗余,无插入异常和删除异常

B2NF,无冗余,但存在插入异常和删除异常

C1NF,存在冗余,但不存在修改操作的不一致

D非1NF,且存在冗余和修改操作的不一致,以及插入异常和删除异常

1NF 要求所有属性的值都是原子的(不可再分)

请作答:第 20 题

A只允许记录一个亲属的姓名、与员工的关系以及联系电话

B可以不作任何处理,因为该关系模式达到了3NF

C增加多个家庭成员、关系及联系电话字段

D应该将家庭成员、关系及联系电话加上员工号作为一个独立的模式

21.22.给定关系模式R < U,F > ,U={A,B,C),F={AB→C,C→B)。关系R( 21 )且分别有( 22 )

A只有1个候选关键字AC

B只有1个候选关键字AB

C有2个候选关键字AC和BC

D有2个候选关键字AC和AB

候选关键字/候选键:是能函数决定所有属性(A、B、C)的最小属性集。

根据F={AB→C,C→B)

A不能单独推导出ABC,B和C单独也不行

AB可以推导出C,则AB是候选键

AC中,C可以推导出B,则AC也是候选键

请作答:第 22 题

A 1个非主属性和2个主属性

B 2个非主属性和1个主属性

C O个非主属性和3个主属性

D 3个非主属性和0个主属性

主属性:属于任何一个候选键的属性

非主属性:不属于任何一个候选键的属性

候选键1:AB → 主属性:A、B

候选键2:AC → 主属性:A、C

并集:{A, B, C}

→ 所有属性都是主属性

C 是主属性,和AB能不能推导出C没有关联,而是因为 AC 构成一个候选键。

23.E-R图转换为关系模型时,对实体中的多值属性采用的方法是( 23 ),得到的关系模式属于( 24 )。

将实体的码分别和每个多值属性独立构成一个关系模式

24:

A 2NF

B 3NF

C BCNF

D 4NF

1NF ~ 4NF

1NF 所有属性不可再分(不允许复合属性,允许多值属性,但需要被拆分)

  • "北京市海淀区" 作为一个字符串整体,它内部有结构 → 应该拆成省、市、街道等 → 否则违反 1NF。

2NF 非主属性无部分依赖,

3NF 非主属性无传递依赖,

BCNF 中所有依赖的左边必须是超键/完整的候选键,换句话说就是不允许主属性→主属性。

  • 由于所有依赖左边是超键(完整候选键),换言之,主属性不可以对码(主键)有部分的函数依赖,必须是依赖超键

4NF 就是把“相互独立的多值属性”拆成不同的表。符合题目

我们假设对于一个固定的学号(比如 001),他选的课程集合是 {数据库, 操作系统},他参加的社团集合是 {篮球社, 音乐社},那么:

课程和社团的每一种组合(数据库+篮球社,数据库+音乐社,操作系统+篮球社,操作系统+音乐社)都可能出现课程和社团是相互独立的无关的多值

学号 课程 社团

001 数据库 篮球社

001 数据库 音乐社

001 操作系统 篮球社

001 操作系统 音乐社

这又造成了冗余

4NFBCNF⊂3NF⊂2NF⊂1NF

如果一张表满足 4NF,它一定也满足 BCNF、3NF、2NF、1NF

25.给定关系模式销售排名(员工号,商品号,排名),若每一名员工每种商品有一定的排名,每种商品每一排名只有一名员工,则以下叙述中错误的是( )。

A关系模式销售排名属于3NF

B关系模式销售排名属于BCNF

C只有(员工号,商品号)能作为候选键

D(员工号,商品号)和(商品号,排名)都可以作为候选键

每一名员工、每种商品有一定的排名

→ (员工号, 商品号) 可确定排名

每种商品、每一排名只有一名员工

→ (商品号, 排名) 可确定员工号

首先就已经能判断出:

K1 = {员工号, 商品号}

K2 = {商品号, 排名}都是候选键

(员工号,商品号)和(商品号,排名)都可以作为候选键。所以说C是错的

还可以得知,这里没有非主属性,全都是主属性,也就没有没有非主属性对键的传递依赖。所以说✅ 满足 3NF

(员工号, 商品号) → 排名,左边是候选键 K1 ✅
依赖2:(商品号, 排名) → 员工号,左边是候选键 K2 ✅
→ ✅ 满足 BCNF

26-29.若进行R1⋈R2运算,则结果集分别为( 26 )元关系,共有( 27 )个元组;若进行R2×σF<4(R3)运算,则结果集为( 28 )元关系,共有( 29 )个元组。

26:

R1 有 A,B,C,D

R2 有 C,D,E

自然连接也就是等值比较的条件:R1.C = R2.C 且 R1.D = R2.D

R1的CD的第一行是3,6 和 R2中的CD的第三个行3,6匹配

也就是 1 5 3 6 3 6 2

特别注意,这道题算的是自然连接不是等值连接!同名属性只保留一份

所以结果是 1 5 3 6 2

逐行分析结果为

1 5 3 6 2

3 2 1 6 3

3 2 1 6 1

5 6 3 6 2

结果集是 5 元关系(A,B,C,D,E 共 5 列)

共有 4 个元组(4行)

28.29:

RσF<4(R3)

先算 σ_{F < 4}(R3)选择运算:F列小于4才保留

也就是对于R3去掉最后一行7

结果是3行、5列

笛卡尔积运算的结果是列数相加,行数相乘(因为每一行都要与另一边的每一行组合)

R2有3行3列,那么结果就是

8列,9行。8元关系,9个元组

30.约束“主码中的属性不能取空值”,属于( )。

A实体完整性约束

B参照完整性约束:表与表之间的联系。

C用户定义完整性约束:用户自定义。例如:年龄必须大于0、性别只能是‘男’或‘女’等。与题目描述不符。

D函数依赖:不属于一种约束

31.32.给定关系模式R < U,F > ,U= {A,B,C,D),F={A→B,BC→D},则关系R的候选键为( 31 ) 。对关系R分解为R1(A,B,C)和R2 (A,C,D),则该分解( 32 ) 。

A(AB)

B(AC) 逐个选项代入,A可得B,然后B和C得D

C(BC)

D(BD)

请作答:第 32 题

A有无损连接性,保持函数依赖

B不具有无损连接性,保持函数依赖

C具有无损连接性,不保持函数依赖

D不具有无损连接性,不保持函数依赖

判断无损连接性

R1(A,B,C)和R2 (A,C,D)

(R1 ∩ R2) → (R1 - R2) 或 (R1 ∩ R2) → (R2 - R1)则成立

R1 ∩ R2=A,C

R1 - R2= B

R2 - R1= D

因为F={A→B,BC→D}

所以 R1 ∩ R2的A,C中,可以推导出R1 - R2的B,具有无损连接性

判断保存函数依赖与否

原依赖:

F={A→B,BC→D}

分解后

R1(A,B,C)和R2 (A,C,D),只要任意一个R有完整的F式子则满足保存函数依赖

R1只有A→B,R2什么也得不到

R2不可以通过A→B间接依赖来判断,R2里面已经没有B了,不可能凭空变出B这个属性。

在上一道相似的题中,R1R2R3三者首先都有函数依赖保存了下来,然后才对照子表依赖并集,但是在这题中子表依赖并集也只有 G = {A→B}

不管是R1和R2,都没有保存原来的函数依赖。

  • 只要每个依赖至少完整地出现在某一个子表中,就算保存。

  • 原来如果有多个依赖,分别全部在子表中体现,没有出现拆分,也算保存。

  • 保持函数依赖只要求原 F 中的每一个依赖都能找到或推导,不要求所有推导出来的依赖也直接出现在子表中。

33.关系R、S如下图所示,关系代数表达式 πR.A,S.B,S.C(σR.A>S.B (R×S))=( 33 ),它与元组演算表达式{t|(∃u)(∃v)(R(u)∧S(v)∧( 34 )∧( 35 )}等价

R和S笛卡尔积运算,其结果有3+3=6列,4x4=16行

其中前三列必为R的,后三列比为S的

RA RB RC SA SB SC

根据选择运算,RA大于SB的行保留

比较的是字符的ASCII码,字符靠后ASCII数值更大。

RA第一行a,和SB逐行比较,h、h、n、k,全部小于,全部丢弃

RA第二行b,和SB逐行比较,h、h、n、k,全部小于,全部丢弃

RA第三行h,和SB逐行比较,h、h、n、k,全部不满足>,全部丢弃

第四行,k>h的有两行

则结果为

k m n c h m

k m n d h f

计算 πR.A,S.B,S.C投影,也就是只保留1,5,6列

结果为

k h m

k h f,得到答案选项

34.35.题:把原来算笛卡尔积的代数表达式,在以下选项中找到替代项

{t∣(∃u)(∃v)(R(u)∧S(v)∧(34)∧(35))}

元组演算表达式

这个表达式在说什么?(并不需要完全看懂)

  • t:结果的一条元组(一行数据)

  • R(u):表示 u 是关系 R中的一条元组

  • S(v):表示 v是关系 S 中的一条元组

  • ∃u:存在一个 u(存在 R 中的某一行)

  • ∃v:存在一个 v(存在 S 中的某一行)

  • :并(多个条件同时满足)

请作答:第 34 题

Au[1]<v[2]

Bu[1]>v[2]

Cu[1]<v[5]

Du[1]>v[5]

选项里的符号是什么意思?

R(u):表示 u 是关系 R中的一条元组,也就是说u 是 R 中的一行

u[1] 表示这一行的第 1 个属性(即 R.A),v也是S中的一行

系代数我们知道选择条件是 R.A > S.B,也就是u1大于v2

请作答:第 35 题

At[1]=v[1]∧t[2]=u[5]∧t[3]=v[6]

Bt[1]=u[1]∧t[2]=u[2]∧t[3]=u[3]

Ct[1]=u[1]∧t[2]=v[2]∧t[3]=v[3]

Dt[1]=u[1]∧t[2]=v[2]∧t[3]=u[3]

之前的投影条件是:πR.A,S.B,S.C

RA=u[1],SB=v[2],SC=v[3]

然后这里的t的意思就我们算出来的结果中的一行t

也就是说,我们算出来的结果的第一行t[1]等于RA等于u[1]

简单比对就得知选C

36.给定关系模式R(U,F),其中:属性集U={A,B,C,D,E,G},函数依赖集F={A→B ,A→C,C→D,AE→G}。因为( 36 )=U,且满足最小性,所以其为R的候选码;关系模式R属于( 37 ),因为它存在非主属性对码的部分函数依赖;若将R分解为如下两个关系模式( 38 ),则分解后的关系模式保持函数依赖。

36:

A→B 右边 B

A→C 右边 C

C→D 右边 D

AE→G 右边 G

因为 A 和 E 从未在箭头右边出现过,A 和 E 必须出现在候选码中。

右下角的F表示是基于F这个依赖集

右上角的加号表示从 (AE) 出发,反复使用 F 中的依赖,能推出的所有属性的集合。

37:

已知候选键为AE

而A→B说明B仅依赖于A,属于非主属性对候选键的部分依赖

而且题目也直接给出了提示

1NF

请作答:第 38 题

A R1(A,B,C)和R2(D,E,G)

丢失了C→D

B R1(A,B,C,D)和R2(A,E,G)

C R1(B,C,D)和R2(A,E,G)

A→B 丢失

D R1(B,C,D,E)和R2(A,E,G)

A→B 丢失

39.下列关于数据库对象的描述,错误的是( )。

A存储过程、函数均可接受输入参数

B触发器可以在数据更新时被激活

C域可以由用户创建,可以加约束条件

D一个关系可以有多个主码

主码可以是一个属性,也可以是多个属性的组合。但一个表中只能有一个主码。然后这一个主码可以是一个属性组成的,也可以是多个属性的组合。

40.下列描述中,不属于最小函数依赖集应满足的条件是( )。

A不含传递依赖

B每个函数依赖的左部都是单属性(之前的题目中经常可以看到多个组合)

C不含部分依赖

D每个数据依赖的右部都是单属性

41.下列关于函数依赖的描述,错误的是( )。

若BC→A,则B→A,C→A

42-44.给定关系模式R(U,F),U={A,B,C,D},函数依赖集F={AB→C,CD→B}。

关系模式R( 42 ),且分别有( 43 )。

若将R分解成ρ={R1(ABC),R2(CDB)},则分解ρ( 44 )。

请作答:第 42 题

A只有1个候选关键字ACB

B只有1个候选关键字BCD

C有2个候选关键字ACD和ABD

D有2个候选关键字ACB和BCD

不在右边出现的属性:A, D

所以 A 和 D 必须出现在候选键中。候选键必包含 AD。

直接就把不包含AD的其他几个选项排除完了

还可以通过代入的方式验证一下

单独AD:无法推导出B和C

ABD:依赖 AB→C 可用,加 C → {A, B, C, D} ⇒ U ✅

ACD:CD→B 得 B → {A, B, C, D} ⇒ U ✅

请作答:第 43 题

A0个非主属性和4个主属性

主属性:出现在任意一个候选键中的属性。

候选键 ABD 包含:A, B, D

候选键 ACD 包含:A, C, D

并集:{A, B, C, D}

→ 所有属性都是主属性,0个非主属性

请作答:第 44 题

A具有无损连接性、保持函数依赖

C不具有无损连接性、保持函数依赖

已知F={AB→C,CD→B}。恰好分解成了

(A,B,C)(C,D,B)保持函数依赖

无损连接性(R1 ∩ R2) → (R1 - R2) 或 (R1 ∩ R2) → (R2 - R1)则成立

R1 ∩ R2=AD

由于AD无法推导出任何东西,显然不具有无损连接性

45-48.给定关系模式R(A,B,C,D)和关系S(A,C,D,E),对其进行自然连接运算,R⋈S后的属性列为( 45 )个;

与σR.B>S.E(R⋈S)等价的关系代数表达式为( 46 )。

与 σR.B>S.E(R⋈S) 等价的SQL语句如下:

Select( 47 )

From A,B

Where ( 48 );

请作答:第 45 题

原本有R有四列(4个属性),S也有4个,一共8个属性

因为A C D这三个属性是重复的,在自然连接后去重了,两对重复的ACD减去一对

剩下的属性就是 8 - 3 = 5个

其结果为(A B C D E)

46题:

这道题要我们通过选项中算笛卡尔积,最终达到等效于等值运算的结果,我们先列一下笛卡尔积运算的结果都是第几列

RA RB RC RD SA SB SD SE

1 2 3 4 5 6 7 8

根据第一问我们知道,自然连接运算的结果是:

R.A, R.B, R.C, R.D, S.E

1 2 3 4 8

这里要知道,R x S运算之后,会出现多行多列

(题目没有告诉我们这些ABCD属性具体具体有几行几列,更不知道这些列里面有哪些值,什么时候相等)

回顾自然连接运算,我们要做的就是原来有8列,然后这8列里面有很多行,其中有某几行的A C D的值是重复的,我们通过选择运算的条件把这些行保存下来,然后通过投影运算,只剩下R.A, R.B, R.C, R.D, S.E这五列

(这里就假设按顺序来,我们留前面的R的列,丢弃后面S重复的)

通过选择运算σ,当某一行的列,里面的值满足RA RB RC RD SA SC SD SE的ACD相等时,我们就把这行保存下来

所以说判断条件是: R.A = S.A ∧ R.C = S.C ∧ R.D = S.D

用数字表示就是: 1= 5 ∧ 3=6 ∧ 4=7

σ1=5 ∧ 3=6 ∧ 4=7(R×S)

现在通过选择运算我们把需要的行挑出来了,但是还是剩下

RA RB RC RD SA SC SD SE 共8列

我们只要1 2 3 4 8五列,通过投影就可以简单的筛选出来了

σ2>8(π1,2,3,4,8(σ1=5 ∧ 3=6 ∧ 4=7(R×S)))

对比最终的选项,它是把2>8丢进去了

47、48:最后填空SQL语句就很简单了

Select R.A, R.B, R.C, R.D, S.E

From A,B

Where R.A=S.A AND R.B>S.E AND R.C=S.C AND R.D=S.D;

49.两个函数依赖集F和G等价是指( )。

F+= G+

无损链接和函数依赖与NF的关系

50.通过反复使用保证无损连接性,又保持函数依赖的分解,能保证分解之后的关系模式至少达到( )。

A 1NF

B 2NF

C 3NF

D BCNF

这个问题就非常复杂了,是需要通过数学的公式来推导证明的。不建议深究。

关于模式分解有三个标准:

1、分解是具有无损连接性的;

2、分解是保持函数依赖的;

3、分解既要具有无损连接又要保持函数依赖

也就是说2和3有保持函数依赖,就有3NF

(1).若要求分解保持函数依赖,那么分解后的关系模式总可以达到3NF,但不一定能达到BCNF。

(2).若要求分解既保持函数依赖又具有无损连接性,则可以达到3NF,但不一定能达到 BCNF。

也就是说2和3有保持函数依赖,就有3NF

(3).若要求分解具有无损连接性,那么一定可以达到4NF?无损连接本身不“保证”任何范式,只保证可恢复。

四种分解方式

51.52.某企业的E-R图中,职工实体的属性有:

职工号、姓名、性别,出生日期,电话和所在部门,

其中职工号为实体标识符,

电话为多值属性,

离退休职工所在部门为离退办,

在逻辑设计阶段,

应将职工号和电话单独构造一个关系模式,该关系模式为( 51 );

因为离退休职工不参与企业的绝大部分业务,应将这部分职工独立建立一个离退休职工关系模式,这种处理方式称为( 52 )。

51:4NF

✅ 满足 2NF(没有非主属性部分依赖)

✅ 满足 3NF(没有非主属性传递依赖)

✅ 满足 BCNF(每个函数依赖的左边都是主键)

请作答:第 52 题

A水平分解 :按行拆分表,具体来说,有些行是没退休员工的数据,有些行是已退休员工的数据。是根据行内容的不同把它们保持原来的表格式拆分。

B垂直分解:将一个表的数据按照字段分成多个表的数据。也就是按列分解。典型的就是原来 A B C D四个属性拆成 A B C D和 A D

C规范化 消除冗余,达到更高范式(如 2NF、3NF)

D逆规范化 人为增加冗余,提高查询性能

OLTP(联机事务处理)重规范化,OLAP(联机分析处理)可逆规范化。怕写错、要一致 → 规范化;怕查慢、能冗余 → 逆规范化。

全码

53.若关系R(H,L,M,P)的主键为全码(All-key),则关系R的主键应( )。

A为HLMP

全码就是所有属性共同组成候选键,即没有它的哪个子集能唯一标识一行。

B在集合{H,L,M,P}中任选一个

C在集合{HL,HM,HP,LM,LP,MP}中任选一个

D在集合{HLM,HLP,HMP,LMP}中任选一个

54.在关系R(A 1,A 2,A 3)和S(A 2,A 3,A 4)上进行关系运算的4个等价的表达式E 1、E 2、E 3和E 4如下所示:

如果严格按照表达式运算顺序,则查询效率最高的是( 54 )。将该查询转换为等价的SQL语句如下:

SELECT A 1,A 4 FROM R,S

WHERE( 55 );

54题:

查询效率取决于选择(σ)是否在连接/笛卡尔积之前执行”,越早选择,中间结果越小,效率越高。

E2 先选择了 R 和 S ,然后才做自然连接,所以最快。

55:

R.A2< 2015 AND S.A4=95

R.A2< 2015 AND S.A4=95 AND R.A2=S.A2AND R.A3=S.A3

首先很明显选择条件是与运算,不可能是or,我们只从AND条件里面挑

在这里面很明显,题目是有自然连接运算的,R.A2< 2015 AND S.A4=95没有任何相等的判断,只有选择运算的判断,肯定不对。

56.57.给定关系模式R(A1,A2,A3,A4),R上的函数依赖集F= {A1A3→A2,A2→A3},R( 56 )。若将R分解为ρ={(A1,A2,A4),(A1,A3)},那么该分解是( 57 )的。

给定关系模式R(A1,A2,A3,A4),R上的函数依赖集F= {A1A3→A2,A2→A3},R( 56 )。若将R分解为ρ={(A1,A2,A4),(A1,A3)},那么该分解是( 57 )的。

请作答:第 56 题

A有一个候选关键字 A1A3

B有一个候选关键字 A1A2A3

C有二个候选关键字A1A3A4和A1A2A4

D有三个候选关键字A1A2、A1A3和A1A4

不出现在右边的属性 = {A1, A4},A1 和 A4 必须出现在候选键中。

请作答:第 57 题

A无损连接

B无损连接且保持函数依赖

C保持函数依赖

D有损连接且不保持函数依赖

由于(A1,A2,A4)少了A3,必然不保持函数依赖

(U1∩U2) →(U1-U2) = A1→A2 A4 ,(U1∩U2) → (U2-U1) =A1→A3,不能从F中成立,有损连接

58.59.关系R、S如下表所示,

的结果为( 58 ),R、S的左外连接、右外连接和完全外连接的元组个数分别为( 59 )。

R ÷ (πₐ₁,ₐ₂(σ₁<₃(S)))

这里的选择σ是针对S,先找出S中第一列小于第三列的行

2 1 8

3 4 4

投影只保留第一第二列

A1 A2

2 1

3 4

除法:A1 A2 A3 / A1 A2 = A3

然后当R的A1和A2,与被除的D的A1 A2重复的时候

我们保留A3

RA1 RA2 RA3 DA1 DA2

2 1 4 2 1

3 4 4 3 4

则A3=4(重复只保留一次

内连接/左外连接/右外连接/全外连接

59题:两张表只有A1 A2是相等的,只用这两个成一行来作匹配

左外连接:保留左表所有行 + 右表匹配行

也就是图中,R的A1 A2 A3全保留

当S的A1和A2匹配的时候,因为值是相等的就不重复存了,存A4

A₁ A₂ A₃ A₄

1 2 3 NULL(不匹配不保留所以是NULL)

2 1 4 8

3 4 4 4

4 6 7 NULL

四行,四个元组

需要注意的是,若R 的一行在 S 中匹配到 k 行,则该 R 行会产生 k 行,

也就是说假设原表R中的第二行A1A2A3,在右边S中被匹配到了3次,那么结果的表中就有三行匹配的结果,所以说不是原来的表有几行结果就是几行。

A1A2A3 X

A1A2A3 Y

A1A2A3 Z

右外连接

A₁ A₂ A₃ A₄

1 9 NULL 1

2 1 4 8

3 4 4 4

4 8 NULL 3

结果的元组数也是4行

完全外连接:

取并集,保留所有行,但是要去重(重复的只留一个)

A1A2A3A4

(1,2,3,NULL) 因为对于R来说是没有A4的所以是NULL

(2,1,4,8)

(3,4,4,4)

(4,6,7,NULL)

(1,9,NULL,1)

(4,8,NULL,3)

所以结果问元组个数就是
4,4,6

内连接:(INNER JOIN有时候会简写成JOIN)

只保留匹配行

R(2,1,4) ↔ S(2,1,8) ✅

R(3,4,4) ↔ S(3,4,4) ✅

60.61.给定关系模式R < U,F > ,其中U={ABCDE},F={AB→DE,AC→E,AD→B,B→C,C→D},则R的所有候选码为( 60 ),关系R属于( 61 )。

右边出现了DE E B C D,只能知道左边必须有A

只要符号条件都应该算作候选码,不能因为前两个符合了就不试第三个了!!!

请作答:第 60 题

A AB、AC

B AB、AD

C AC、AD

D AB、AC、AD

AB:AB→DE可以得到DE, {A, B, D, E},还有B→C,{A, B, C, D, E} ,AB是候选码,排除C选项

AC:AC→E,{A, C, E},然后发现AD→B,暂时得不到B,那么缺的D能否能得到?C→D,{A, C, E,D},最后AD→B,是候选码

AD:AD→B,{A, C, B},差D,C→D,差E,AC→E,是候选码

主键和候选键/码/超键的关系

61:根据上问得知E是非主属性,候选键是:AB AC AD

这里有个非常容易混淆的地方

主键是(ABCD)吗?肯定不是,因为第一问我们已经做题得知,

AB AC AD三个候选键都可以确定唯一值。应该说A B C D是四个主属性

主键一定是候选键之一,候选键不一定是主键(不是的叫备用键)

AB→DE,AC→E

E这个非主属性,它依赖于AB或者AC这个整体,并没有部分依赖!

千万不能认为主键是ABCD,E是部分依赖!

✅ 所以 E 完全依赖于每个候选键,不违反 2NF。

{AB→DE,AC→E,AD→B,B→C,C→D}

非主属性 E:E 直接由 AB、AC 等决定,不被其他非主属性传递决定

满足3NF

BCNF:函数依赖的左边必须是候选键。显然不满足。

在这种F传递的类型中,不太可能出现多值依赖,不太可能有4NF,因为A B C D E这几个字母都基本有关联,不会有独立的多值

超键(Super Key):能唯一确定一行的属性集(可能有多余属性)
超键是大集合,候选键是最小集合,主键是我们选的那个候选键。

主属性:在候选键中出现过的属性

传递的增广/合并/分解/伪传递律

62.对于关系模式R(X,Y, Z),下列结论错误的是( ) 。

A若X→Y,Y→Z,则X→Z

B若X→Z,则XY→Z

增广律,既然X能决定Z,XY包含X当然也能决定Z,多一个Y属性又不会破坏原来X对Z的决定,相当于Y在这里是一个无用的属性

增广律②:由 A → B(已知),增广律 A → AB(因为 AB 是 A 和 B 的并集,A 能决定 A 和 B)

C若XY→Z,则X→Z,Y→Z

D若X→Y,X→Z,则X→YZ:合并律

  • 分解律:A→BC则A → B,A → C

    • 分解律和合并律互为逆过程

    • 学号 → (姓名, 年龄),显然,如果学号能决定“姓名和年龄”,那么它当然能单独决定“姓名”,也能单独决定“年龄”。

  • 自反律:若Y⊆X⊆U,则X→Y为F所逻辑蕴涵

  • 若X→Y, Z⊆Y , 则X→Z为F所蕴涵

在后面的题目中还出现一种叫伪传递律,也就是X→Y,WY→Z,

则WX→Z,也就是WX→WY→Z

63.若对关系R 1按( )进行运算,可以得到关系R 2。

σ单价≥’8‘(R1,很显然这里是按照价格这个列来筛选行

64.逻辑设计阶段的任务之一是对关系模式进一步的规范化处理。因为生成的初始关系模式并不能完全符合要求,还会有数据冗余、更新异常存在,这就需要根据规范化理论对关系模式进行分解,消除冗余和更新异常。

不过有时根据处理要求,可能还需要增加部分冗余以满足处理要求。逻辑设计阶段的任务就需要作部分关系模式的处理,分解、合并或增加冗余属性,提供存储效率和处理效率。

以上这些文字对题目没有任何意义

<U,F>,U={A,B,C),F={AB→C,C→B),则关系R( )。

A有2个候选关键字AC和BC,并且有3个主属性

B有2个候选关键字AC和AB,并且有3个主属性

C只有1个候选关键字AC,并且有1个非主属性和2个主属性

D只有1个候选关键字AB,并且有1个非主属性和2个主属性

已知候选关键字必须包含A,且单独的A没用处,然后一眼必须具有AB

65.设关系模式R<U,F>,其中U为属性集,F是U上的一组函数依赖,那么Armstrong公理系统的伪传递律是指( )。

A若X→Y,Y→Z为F所蕴涵,则X→Z为F所蕴涵传递律

B若X→Y,X→Z,则X→YZ为F所蕴涵 合并律

C若X→Y,WY→Z,则XW→Z为F所蕴涵

D若X→Y为F所蕴涵,且Z⊆U,则XZ→YZ为F所蕴涵增广律

66.67.给定关系R(A,B,C,D)和关系S(C,D,E),对其进行自然连接运算R⋈S后的属性列为( 5)个:与σ R.B>S.E(R⋈S)等价的关系代数表达式为( 67 )。

自然连接运算匹配相等并去重,结果是

A B C D E 五列

请作答:第 67 题

A σ2>7(R×S)

B π1,2,3,4,7(σ’2’>‘7’∧3=5∧4=6(R×S))

C σ’2’>‘7’(R×S)

D π1,2,3,4,7(σ2>7∧3=5∧4=6(R×S))

要用笛卡尔积来等效,先列出笛卡尔积的列的顺序

RA RB RC RD SC SD SE

1 2 3 4 5 6 7

A和C都没有匹配等值的部分直接排除掉,单引号是标注为字符常量的也排除

元组演算表达式/全称量词

68.关系R.S如下表所示,元组演算表达式T={t|R(t) ^∀u(S(u)→t[3]>u[1])}运算的结果为

题目条件解析:

t是结果中的元组

R(t):我们从 R 表中选出一行,把它作为结果 t,并且它还要满足后面的条件...

∀ 是 全称量词,读作 “对所有” 或 “任意一个”。

∀u(S(u)→t[3]>u[1])对 S 中的每一行 u,必须满足t[3]>u[1],

这里的→符号不是依赖,是S(u)为真,则t[3]>u[1]这个条件也必须为真

u[1]是S的第一列的某一行的值,也就是说,t[3]必须大于SA

再次强调不是一行一行比,既然有∀符号,那么就是和最大值比

SA的值有 3 4 5 6,则t[3]>6

t[3]就是R 的 C 列:3, 6, 9, 12

大于 6 的有:9, 12

对应的完整行:

(7, 8, 9)

(10, 11, 12)

69.关系 R(A1,A2,A3)上的函数依赖集 F={A1A3→A2,A1A2→A3},若R上的一个分解为 p={(A1,A2),(A1,A3)},则分解p( ) 。

虽然说分解后能各保持其中一个函数依赖,但是原依赖没有完整的出现在一个式子中,不符合要求

不保持函数依赖

R1∩R2= A1

R1 - R2 = A2

R2 - R1 = A3,都是单个符号,显然也无法用函数依赖集推导

70.假设关系 R(A1,A2,A3)上的函数依赖集 F={A1→A2, A1→A3, A2→A3},则函数依赖( ) 。

A1→A3是冗余的,因为可以用传递律推导

71-73.某公司数据库中的元件关系模式为P(元件号,元件名称,供应商,供应商所在地,库存量),函数依赖集F如下所示:

F={元件号→元件名称,(元件号,供应商)→库存量,供应商→供应商所在地)

元件关系的主键为( 71 ) ,该关系存在冗余以及插入异常和删除异常等问题。为了解决这一问题需要将元件关系分解为( 72 ),分解后的关系模式最高可以达到( 73 )。

7:(元件号,供应商)

根据F条件,出现在右边属性集合 = {元件名称, 库存量, 供应商所在地}

剩下的元件号,供应商,必须是包含在候选键中

因为元件号,供应商根据F可以推导得到 {元件号, 供应商, 元件名称, 库存量, 供应商所在地} = 全部属性,所以这就是主键

8.根据上题可知,主键是:

(元件号, 供应商),再看到F,很显然有好几个部分依赖

元件号 → 元件名称 → 必须单独成表(至少包含元件号、元件名称)

供应商 → 供应商所在地 → 必须单独成表(至少包含供应商、供应商所在地)

(元件号, 供应商) → 库存量 → 必须保留在一个包含这两个属性的表里

答案:C元件1(元件号,元件名称)、元件2(元件号,供应商,库存量) 元件3(供应商,供应商所在地)

9.逐个判断范式

上题分解的结果为:

R1(元件号,元件名称)

元件号 → 元件名称

无非主属性,无部分依赖、传递依赖,依赖左边是候选键 → BCNF

R2(元件号,供应商,库存量)

函数依赖:(元件号, 供应商) → 库存量

候选键:(元件号, 供应商)

满足 BCNF

R3(供应商,供应商所在地)

满足 BCNF

三个子表全部满足 BCNF。

所以分解后的关系模式最高可以达到 BCNF。

74.下列关于关系的描述中,正确的是( )。

A交换关系中的两行构成新的关系

关系是元组的集合,集合中的元素无序

交换两行不改变集合,得到的是同一个关系,不是“新的关系”

B关系中两个列的值可以取自同一域

域指的是某个属性(列)可能取值的集合,也就是该列的数据类型及其允许的值的范围。B选项正确。

C交换关系中的两列构成新的关系

关系中的属性是按列名区分的,顺序也不重要。

如果交换列且同时交换列名,那只是调整显示顺序,仍是同一个关系模式

D关系中一个列可以由两个子列组成

关系模型要求 1NF:属性值必须是原子(不可再分)

不允许一个列包含两个子列(复合属性)

关系的定义

关系模型中的关系定义如下:

每个属性值都是原子值(不可再分)

不允许表中嵌套表,不允许一列包含多个值(如集合、列表)

这其实就是 1NF 的核心要求。

因此:

一个“关系”如果违反 1NF,在关系模型的理论中就不叫“关系”,而叫“非规范化表”。

75.76.关系数据库中通常包含多个表,表与表之间的关联关系通过( 75 )来实现,通过( 76 )运算将两个关联的表合并成一张信息等价的表。

请作答:第 75 题

A指针

B外码:“外码”就是“外键”,是完全一回事。外键(Foreign Key)引用另一个表的主键 ✅

C索引

D视图

请作答:第 76 题

A选择 按条件筛选行,不合并表

B投影 按条件筛选列,不合并表

C笛卡尔积 生成所有行的组合,产生大量无关行,不是“信息等价”,笛卡尔积的作用主要是通过组合其他条件,用来表示其他的连接

D自然连接 基于同名属性等值连接,自动去重,能正确合并两个关联表,且结果与原始关联语义等价

77.给定关系模式R < U ,F > ,其中 U 为关系 R 的属性集,F 是 U 上的一组函数依赖, X 、Y、Z 、W 是 U 上的属性组。下列结论正确的是( )。

C若 X →Y ,WY →Z 成立,则 WX →Z 成立 典型的伪传递律

78.在关系R(A1,A2 ,A3) 和 S( A2,A3 ,A4 ) 上进行πA1,A4(σA2<’2017’∧A4=’95’(R⋈S))关系运算,与该关系表达式等价的是( )

列出笛卡尔积的顺序

RA1 RA2 RA3 SA2 SA3 SA4

1 2 3 4 5 6

A π1,4(σ2<’2017’˅4=’95’(R⋈S))

B π1,6(σ2<’2017’(R)×σ3=’95’(S))

C π1,4(σ2<’2017’(R)×σ6=’95’(S))

D π1,6(σ2=4˄3=5(σ2<’2017’(R)×σ3=’95’(S)))

投影A1和A4实际上是第1和第6列,首先就排除A和C,B完全没有关于自然连接运算的去重判断,所以选D

原式中去重会对RA2 = SA2,RA3 = SA3 也就是2=4且3=5判断,符合条件

79.80.给定关系模式R < U ,F > , U={A,B,C,D,E}, F= {B→A ,D →A ,A→E ,AC →B },则 R 的候选关键字为( 79 ),分解ρ={R 1(ABCE),R 2(CD)}( 80 )。

在F的右侧出现了A E B,未出现 C D,候选键必须包括CD

CD:D →A ,可得 ACD,A→E且AC →B可得余下全部

候选关键字为CD

分解的R1缺失D,显然无法保持函数依赖

R1∩R2=C

R1-R2=ABE

R2-R1=D

不在函数依赖集合中,不具有无损连接性

81.82.某企业的信息系统管理数据库中的员工关系模式为 Emp(员工号,姓名,部 门号,岗位,联系地址,薪资),函数依赖集 F={员工号→(姓名,部门号,岗位,联系地址),岗位→薪资}。Emp 关系的主键为( 81 ),函数依赖集 F( 82 )。

Emp 是 Employee 的缩写,表示员工关系模式

记住既然给出了函数依赖集,就靠分析候选键来找主键,不要通过直观看法选。

F={员工号→(姓名,部门号,岗位,联系地址),岗位→薪资}

员工号 决定 岗位,再由 岗位 决定 薪资

因此 员工号 能决定所有属性

只要发现 非主属性决定非主属性(传递依赖)或 部分依赖,就可以锤定存在插入/删除异常,不需要再看具体数据。

具体到这道题:因为有岗位→薪资这个传递依赖,插入一行员工信息时,必须提供 岗位 和 薪资。

如果某岗位薪资暂未定义(或暂时未知),就无法插入该员工。且删除最后一名员工会丢失岗位薪资信息

82:

根据上一题知道,这里存在典型的非主属性对主属性的传递依赖。然后候选键只有一个属性,不存在部分依赖问题,所以是2NF。

存在传递依赖,故关系模式 Emp 最高达到 2NF

实体完整性

83:满足BCNF范式的关系( )。

A允许属性对主键的部分依赖 违反2NF

B能够保证关系的实体完整性 实体完整性是关系模型的基本要求(主键非空唯一)

C没有传递函数依赖

D可包含组合属性 违法1NF

84.有两个关系模式R(A,B,C,D)和 S(A,C,E,G),则X=RxS 的关系模式是( )。

A X(A,B,C,D,E,G) 笛卡尔积不去重,这是自然连接

C X(R.A,B,R.C,D,S.A,S.C,E,G)

85.给定关系模式R < U ,F > ,其中属性集 U={A,B,C,D,E,G ,H} ,函数依赖集F= {A→B,AE→H,BG→DC,E→C,H→E } ,下列函数依赖不成立的是( )。

A A→AB 增广律

B H→C E→C,H→E

C AEB→C 有E就有C,相当于此时的A和B是无关属性

D A→BH

86.某销售公司需开发数据库应用系统管理客户的商品购买信息。

该系统需记录客户的姓名、出生日期 、年龄和身份证号信息,记录客户每次购买的商品名称和购买时间等信息。如果在设计时将出生日期和年龄都设定为客户实体的属性,则年龄属于( 86 ),数据库中购买记录表中每条购买记录对应的客户必须在客户表中存在,这个 约束属于( 87 )。

派生属性

各种约束

A 参与约束 E-R 模型中实体之间联系的参与度(全部/部分) ❌

一个实体是否必须参与某个联系?比如说每个学生必须选至少一门课

B 参照完整性约束 外码的值必须在被引用表中存在 ✅

C 映射约束 通常指一对一、一对多等映射基数 ❌

一个实体与另一方实体联系的个数限制

一对一 (1:1) 一个国家一个首都

一对多 (1:N) 一个部门多个员工

多对一 (N:1) 多个订单同一客户

多对多 (M:N) 学生与课程

D 主键约束 主键唯一且非空 ❌

实体完整性约束:主键唯一且非空,实体完整性约束是概念,主键约束是它的实现

用户定义完整性约束:用户自定义。例如:年龄必须大于0、性别只能是‘男’或‘女’等。与题目描述不符

88.89.给定关系R(A,B,C,D)和关系S(A,C,D,E,F),对其进行自然连接运算R⋈S后的属性列为( 88 )个;与σR.C>S.F(R⋈S)等价的关系代数表达式为( 89 )。

88:ACD三个属性重复了,去重的结果是 4+5-3=6

89:要用笛卡尔积来等效,先列出笛卡尔积的列结果

RA RB RC RD SA SC SD SE SF

1 2 3 4 5 6 7 8 9

RC为3,SF为9

等值的列为RA=SA RC=SC RD=SD即1=5 3=6 4=7

答案为:π1,2,3,4,8,9(σ1=5∧3=6∧4=7∧3>9(R×S))

90.91.给定关系R(A,B,C,D,E)与S(B,C,F,G),那么与表达式π 2,4,6,7(σ 2<7(R⋈S))等价的SQL语句如下:

SELECT ( 90 ) FROM R,S WHERE ( 91 );

这题没有要用笛卡尔积来表示,经过等值运算后R⋈S的顺序为

RA RB RC RD RE SF SG(SB SC被去重了)

1 2 3 4 5 6 7

投影即最终要保留的行

π 2,4,6,7对应 RB RD SF SG

答案是A. R.B, D, F, G

因为没有重复项,省略掉关系名R或者S都是可以的

where条件中,要做等值判断肯定是AND运算符

R.B=S.B AND R.C=S.C AND R.B < S.G

RB<SG就是σ 2<7

92.将满足3NF的关系( )后,可将其规范化为BCNF。

A消除非主属性对码的部分函数依赖 是 1NF → 2NF 的要求。

B消除非主属性对码的传递函数依赖 是 2NF → 3NF 的要求

C消除主属性对码的部分和传递函数依赖

D消除非平凡且非函数依赖的多值依赖 这是 3NF → 4NF 做的

“平凡” = 这个多值依赖天生就成立,不用管它,也不会造成数据冗余。

93.设学生关系模型Stu(学号,姓名,性别,学院)的主码是学号,

成绩关系模型SC(学号,课程号,成绩)的主码为(学号,课程号),

若关系模型R(学号,姓名,性别,学院,课程号,成绩)的主码为(学号,课程号),则R满足( )。

学号→姓名,性别,学院

学号,课程号→成绩

现在关系模型R没有拆分,显然多个属性只依赖于(学号,课程号)中的学号,存在部分依赖 1NF

94.95.关系模型SC(学号,姓名,学院,学院领导,课程号,课程名,成绩),

函数依赖集F={学号→(姓名,学院,学院领导),

学院→学院领导,课程号→课程名,(学号,课程号)→成绩},

则关系SC中( 94 ),要满足第二范式,应将SC分解为( 95 )。

学号→学院→学院领导是传递依赖

该题中只有(学号,课程号)才能确定唯一的一行

其他属性又只依赖于学号,存在部分依赖

请作答:第 95 题

S(学号,姓名,学院,学院领导),C(课程号,课程名,成绩)

S(学号,姓名),D(学院,学院领导),C(课程号,课程名,成绩)

(学号,课程号)→成绩,这两项拆分的C没办法得到成绩,排除

S(学号,姓名),D(学院,学院领导),C(课程号,课程名),SC(学号,课程名,成绩)

S(学号,姓名,学院,学院领导),C(课程号,课程名),SC(学号,课程号,成绩)

首先要记得,主键是(学号,课程号),如果拆分成D(学院,学院领导),这个关系就不能从主键确定值。

其次注意对比SC(学号,课程名,成绩)和SC(学号,课程号,成绩)

补充:D选项中,学号→学院→学院领导是传递依赖,不满足第三范式

96.下列关于函数依赖的叙述中,错误的是( )

A 若A→B,B→C,则A→C 传递律

B 若A→B,B→C,则A→BC 合并律

C 若A→BC,则A→B,A→C 分解律

D 若A→BC,则A→B,B→C 前半A→B正确,但是B→C无从得知

触发器

97.设员工表(员工号,姓名,级别,工资)中,级别增加一级,工资增加500元,实现该约束的可行方案是()。

A 在员工表上定义插入和修改操作的触发器:在 UPDATE 操作时触发,自动修改工资

B 在员工表上定义一个函数:可计算值,但不会自动执行

C 在员工表上定义一个视图:虚拟表,不存储数据

D 在员工表上定义一个索引:加速查询,不实现业务逻辑

触发器(Trigger) 是一种自动执行的存储程序。

它会在某个表发生 INSERT、UPDATE、DELETE 操作时,自动触发执行提前定义好的 SQL 代码。

CREATE TRIGGER 工资同步
ON 员工表
AFTER UPDATE #更新操作之后触发
AS
IF UPDATE(级别) #检查是否修改了“级别”列
BEGIN
    UPDATE 员工表
    SET 工资 = 工资 + 500
    FROM 员工表 e
    INNER JOIN inserted i ON e.员工号 = i.员工号
              #inserted是临时表,存放更新后的新数据行
    WHERE i.级别 = e.级别 + 1  -- 假设级别是数字,增加一级
END

98.99.给定关系模式如下,学生(学号,姓名,专业),课程(课程号,课程名称),选课(学号,课程号,成绩)。查询所有学生的选课情况的操作是( 98 );查询所有课程的选修情况的操作是( 99 )。

请作答:第 98 题

A 学生JOIN选课

B 学生LEFT JOIN选课

C 学生RIGHT JOIN选课

D 学生FULL JOIN选课

这里要特别注意不是查询某个特定的学生的选课情况,而是查询所有学生的选课情况,包括那些一门课都没选的学生

必须使用 LEFT JOIN,以学生表为主表,保留所有学生,没选课的课程和成绩填 NULL

请作答:第 99 题

A选课JOIN课程

B选课LEFT JOIN课程

C选课RIGHT JOIN课程

D选课FULL JOIN课程

同理,根据题目描述,所有课程,包括那些没有学生选修的课程。要以课程为准。

选课 RIGHT JOIN 课程 等价于 课程 LEFT JOIN 选课

查询效率/优化

100.关系代数表达式的查询优化中,下列说法错误的是( )。

A提早执行选择运算

选择运算(σ)能大幅减少元组数

越早执行,中间结果越小,后续运算(连接、投影)的开销越小

这是查询优化的基本原则

B合并乘积与其后的选择运算为连接运算

笛卡尔积(×)后跟选择(σ)等价于连接(⋈),这类题已经出现了很多遍,合并后可以减少中间结果大小

这也是标准优化策略

C如投影运算前后存在其他的二目运算,应优先处理投影运算

先做选择,投影(π)通常在最后执行,过早投影可能丢失后续运算需要的属性

D存储公共的子表达式,避免重新计算

公共子表达式复用(如视图、中间结果)

101.102.给定关系R(A,B, C,D)与S(C,D, E,F),则R×S与R⋈S操作结果的属性个数分别为( 101 );与表达式π2,3,4(σ2<5(R⋈S))等价的SQL语句如下:

SELECT R.B, R.C, R.D FROM R, S WHERE ( 102 )。

笛卡尔积运算结果列数相加4+4=8列/属性

自然连接由于要对CD去重,8-2=6列/属性

RA RB RC RD SE SF

1 2 3 4 5 6

R.C=S.C AND R.D=S.D AND R.B < S.E

最小函数依赖集

例如之前出现过的函数依赖集F= {A→B,AE→H,BG→DC,E→C,H→E }

它就不是最小函数依赖集

103.以下关于最小函数依赖集的说法中,不正确的是( )。

A不含传递依赖:有传递依赖说明还可以进一步精简

B不含部分依赖:

例如F={AB→C,A→C},实际上A→C就够了

C每个函数依赖的右部都是单属性

分解律:A→BC则A → B,A → C

D每个函数依赖的左部都是单属性

例如F={AB→C,C→D},这里AB都没有办法再分解了

104.对于关系模式R (X,Y, Z,W),下面有关函数依赖的结论中错误的是( )。

A若 X→Y,WY→Z,则 WX→Z 伪传递律

B若 XY→Z,则 X→Z

C若 X→Y,Y→Z,则 X→Z 传递律

D若 X→YZ,则 X→Z 分解律 X→YZ 推出 X→Y且 X→Z

105.106.关系模式R<{A, B, C}, {AC→B, B→C}>的候选码之一是( 105 );由于该模式存在主属性对码的部分函数依赖,其规范化程度最高属于( 106 )。

函数依赖集右边只有B和C,左边必须包含A

单独A无法推出(A B C)

AB → (ABC)

106题:根据上题得知AB是候选码,但是不代表候选码只有AB一个!!

AC也是候选码,因为AB和AC都是候选吗,所以ABC都是主属性

所以起步就已经满足3NF了(不存在非主属性对主属性的部分和传递依赖)

92.将满足3NF的关系(  )后,可将其规范化为BCNF。

A消除非主属性对码的部分函数依赖 是 1NF → 2NF 的要求。

B消除非主属性对码的传递函数依赖 是 2NF → 3NF 的要求

C消除主属性对码的部分和传递函数依赖

D消除非平凡且非函数依赖的多值依赖 这是 3NF → 4NF 做的

而且题目直接说了该模式存在主属性对码的部分函数依赖,不满足BCNF,答案是3NF

107.将一个关系r分解成两个关系r1和r2,再将分解之后的两个关系r1和r2进行自然连接,得到的结果如果比原关系r记录多,则称这种分解为( )。

A保持函数依赖的分解

B不保持函数依赖的分解

C无损连接的分解

D有损连接的分解

无损连接分解:分解后再自然连接,结果与原关系完全相同(不多也不少)

有损连接分解:分解后再自然连接,结果比原关系多出一些元组(多了不应该有的行),说明原来的信息在分解中丢失了约束,导致连接时产生了不应有的组合

108.在设计关系模式时,有时为了提高数据操作的性能,会故意增加冗余数据,使得关系模式不满足3NF或BCNF,这种方法称之为反规范化,下列不属于反规范化手段的是( )。

A合并模式 就是和我们做题拆分模式反着来

B增加冗余属性 比如在订单表中存客户姓名,避免 JOIN 客户表

C创建视图 视图是虚拟表,不存储数据

D增加派生属性 本来出生日期可以算年龄,还要去加年龄这个字段

109.关系型数据库是( )的集合,表是( 记录 ) 的集合。

请作答:第 110 题

A约束

B记录

C码

理论上的“码”就是候选码/外码,在实际 SQL 中就是 主键(PRIMARY KEY) 和 外键(FOREIGN KEY)。

D索引

111.属性指的是表中的一个( )。

112.对于两个关系E和F,( E∩F)的运算结果的任一元组, 同时属于E和F。

元组在表中的体现

113.在一个关系表中,各表的行代表( )。

A关系

B外码

C元组 看清楚是行不是列

D属性

114.关系的完整性约束不包含( )。

A实体完整性:体现为主键约束

B参照完整性:体现为外键的值必须存在

C属性完整性

D用户定义完整性

115.在一个关系型数据库中,参照完整性约束可以通过( )来实现。

A主码 主码是候选码中的一个

B候选码

C外码

D锁:“事务隔离机制”和“并发控制”的具体实现手段。

查询语言

116.关系型数据库中常用的查询语言不包括( )。

A域关系演算

变量是单个分量(列的值) { <x,y,z> | R(x,y,z) ∧ y > 10 } 用来查询

B元组关系演算

变量是整个元组(一行) { t | R(t) ∧ t[2] > 10 } 用来查询

C导航式语言 沿指针查询,不是关系型数据库的查询语言

D关系代数

σ,π,⋈ 等,用来达到筛选的结果

117.118.关系模式R<{A,B,C.D},{ (A→B, A→D. D→A. B→C}最高属于( 117 ),原因是该模式存在( 118 )。

右边集合 = {A, B, C, D} → 全都是右边

这意味着:没有哪个属性一定出现在所有候选键中(这种情况少见)。

依赖函数集合中都是单属性,把每个单属性带入试试看:

A:A→B, A→D,B→C {A, B, C, D} 全了,是候选键

B:B→C得到B和C,然后就没了

C:没有任何可用依赖

D:D可得A,A可得全部,D也是候选键

主属性:A、D(出现在候选键中)

非主属性:B、C

候选键是单属性(A 或 D),无部分依赖问题 → 满足 2NF ✅

A→B,B→C,存在非主属性的传递依赖❌ 违反 3NF

118:非主属性对码的传递函数依赖

119.关系模式R<U, D>中,D为R的函数依赖和多值依赖的集合。将R分解为两个关系模式R1<U1,,D1>和R2<U2,D2>,则以下说法中错误的是( )。

两个箭头指的就是多值依赖

A如果U1∩U2→U1-U2成立,那么此分解具有无损连接性

B如果U1∩U2→→U1-U2成立,那么此分解具有无损连接性

C如果U1∩U2→U1-U2不成立,那么此分解不具有无损连接性

C是最明显的问题,如果U1∩U2→U1-U2不成立,U1∩U2→U2-U1还是有可能成立的

D如果U1∩U2→→U1-U2不成立,那么此分解不具有无损连接性

120.下列关于BCNF的描述,正确的是( )。

A BCNF不满足列的原子性

B BCNF中存在非主属性对码的部分依赖

C BCNF中存在非主属性对码的传递依赖

D BCNF中每个函数依赖左部都包含码

平凡和多值依赖

121.关系模式R<U>中,X、Y、Z是U的子集。下列关于多值依赖描述中正确的是(  ) 。

平凡多值依赖⇔ X∪Y=U,(即 X 和 Y 的并集已经包含了所有属性)。

比如说:AB↠C,{A,B,C},已经是全部列

A若X→→Y为平凡的多值依赖,则U-X-Y为空集

根据题目:Z=U-X-Y,如果是平凡依赖(X和Y包括了全部列),相减的结果是空集∅,此选项正确

B若X→→Y为平凡的多值依赖,则Y是X的子集

反例:U={A,B,C},X={A},Y={B,C}

C若X→→Y且Y→→Z,则X→→Z 多值依赖传递的结果是一个式子,没有直接传递律

D若X→→Y,则X→Y 多值依赖不能推出函数依赖

理解平凡和平凡的多值依赖

“平凡” = 这个多值依赖天生就成立,不用管它,也不会造成数据冗余。

为什么?平凡依赖就是:一组属性函数决定它的所有子集,

比如说ABC→A或者ABC→B,这天生就成立,不需要判断

在此基础上,平凡的多指依赖需要左右两边并集包含所有属性

多值依赖是两个独立的多值属性放在一起,同时依赖某个键,符号是↠,→→,平凡的多值依赖不影响4NF

122.通过将一个关系拆分成两个更小的关系来使其满足范式时,必须( )来保持数据的完整性约束。

用相同的属性使两个子关系互相关联

123.数据模型中,唯一标识实体的属性集称为( )。

124.关系模型中,一组具有相同数据类型的值的集合称为( )。

125.在一个关系表中,一个表的列代表一个(属性)。

126.如下表所示,有两个关系E和F,若它们经过某一关系运算后的结果为{计算机学院},这一关系运算为( )。

E÷F

再次回顾关系的除法,E除以F,就是比较相同的属性(课程)中,哪一行相等?(数据库=数据库),找出相等的行(计算机学院,数据库),就取其他列的内容(计算机学院)

127.某公司开发系统记录员工基本信息。假设每个员工只在一个部门工作;每个员工必须提供工作和家庭两个电话号码。( )不满足1NF。

A R1(员工编号,姓名,性别)

B R2(员工编号,姓名,家庭电话,工作电话)

C R3(员工编号,姓名,部门)

D R4(员工编号,姓名,电话{家庭电话,工作电话})

注意看到B:本来电话是多值属性的,但是题目把它拆成了两个列

128-130.设有关系模式:选课(学号,课程号,课程名,成绩),

其函数依赖集为{课程号→课程名,课程名→课程号,(学号,课程号)→成绩}。

则关于该关系模式,以下说法错误的是( 128 )。

将“选课”分解为两个关系模式:SC(学号,课程号,成绩)和C(课程号,课程名),则SC和C最高分别属于( 129 )。

对于关系模式“选课”来说,(学号,课程号) → → 课程号是特殊的多值依赖,本质上是( 130 )。

请作答:第 128 题

A每个非平凡函数依赖的决定因素都包含码

课程号 → 课程名

课程名 → 课程号

决定因素说的就是左边这些被依赖的,他们并不包含码(完整的主键)

B不存在非函数依赖的多值依赖

所有属性之间的变化都受函数依赖约束,不存在“给定 X,Y 有多个独立取值”的情况。

C不存在非主属性对码的部分函数依赖

非主属性只有成绩这一个,没有部分依赖 ✅

D不存在非主属性对码的传递函数依赖

成绩只由 (学号, 课程号) 直接决定,没有传递依赖 ✅

函数依赖集:

课程号 → 课程名

课程名 → 课程号

(学号, 课程号) → 成绩

候选键:必须包含学号

(学号, 课程号):可确定唯一行

(学号, 课程名):课程名 → 课程号,然后可确定唯一行

非主属性:成绩(只有一个)

129.BCNF和BCNF

SC(学号,课程号,成绩):(学号, 课程号) → 成绩 的左边是候选键

C(课程号,课程名): 课程号 → 课程名:左边是候选键 ✅

请作答:第 130 题

(学号,课程号) → → 课程号

A非函数依赖的多值依赖

它是多值依赖,但这里是非平凡才叫“非函数依赖的多值依赖”,这个是一眼就是平凡的

B平凡的多值依赖

平凡的多值依赖永远成立,不过这题不符合

平凡的多指依赖不仅需要像题目这样右边是左边的子集,还需要左右并集包含所有属性

C非平凡的函数依赖

非平凡直接排除

D平凡的函数依赖

平凡依赖天然永远成立,为什么?平凡依赖就是一组属性函数决定它的所有子集,

比如说ABC→A或者ABC→B,这天生就成立,不需要判断

131.关于模式分解,( )不是分解前后模式等价性的准则。

A分解后关系模式要达到最高范式

B分解具有无损连接性

C分解要保持函数依赖

D分解既要保持函数依赖,又要具有无损连接性

132.关系模式R(U,F)中,属性集U={A,B,C,D,E},函数依赖集F=(A→BC,C→D,BD→A,AD→E,BD→E}。则(CE)F+=( )。

CE,C→D,可得CDE

133.( )要求关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。

4NF

134.某大学学生管理系统中,要求学生的年龄在16~22岁之间,该规则可以通过( )约束来实现。

A主键

BCHECK:专门用来检查输入的数据是否合法

CREATE TABLE 学生 (
    学号 INT PRIMARY KEY,
    姓名 VARCHAR(20),
    年龄 INT CHECK (年龄 BETWEEN 16 AND 22)
);

Cdefault

D唯一性

135.(外键 )约束通过被引用表中实际存在的记录值,对引用表中相应属性的取值进行了约束和限制。

136.在关系模式R(A,B,C,D)中,AB→→B显然成立,因为此数据依赖本质上是( )。

B平凡的函数依赖

C平凡的多值依赖

137.设有关系:选课(学号,姓名,课程号,成绩),规定姓名不重复,那么这一规则属于( 4 );“学号与姓名之间的数据依赖可表述为( 5 );选课关系最高属于( 6 )。

请作答:第 4 题

A实体完整性 主键唯一且非空

B参照完整性 外键引用另一个表的主键

C用户定义的完整性 这题注意姓名根本不是主键!!

D概念模型完整性 不存在这么一个东西

请作答:第 5 题

A“学号”与“姓名“之间相互函数依赖

注意这题姓名是不会重复的

C“姓名”函数依赖于学号”,反之不然

请作答:第 6 题

F={学号→姓名, 姓名→学号, (学号,课程号)→成绩}

候选键:(学号, 课程号) 和 (姓名, 课程号)

主属性:学号、姓名、课程号(出现在候选键中)

非主属性:成绩(只有一个)

A 1NF

B 2NF

C 3NF 没有传递依赖

D BCNF

  • 学号 → 姓名:左边 {学号} 不是超键(不能单独决定课程号)❌

  • 姓名 → 学号:左边 {姓名} 不是超键 ❌

范式和插入删除异常的联系

138.若关系模式R(U,F)属于3NF,则( )。

A一定属于BCNF

B消除了插入和删除异常

C仍存在一定的插入和删除异常

D属于BCNF且消除了插入和删除异常

范式

消除的异常(函数依赖)

是否完全无异常

1NF

2NF

部分依赖

3NF

非主属性传递依赖

❌(主属性仍可能有)

BCNF

全部函数依赖

❌(多值依赖仍可能有)

4NF

全部函数+多值依赖

✅(无异常)

3NF 允许主属性之间的传递依赖:可能导致主属性的插入和删除异常

BCNF 消除了所有由函数依赖导致的插入和删除异常,但仍可能存在由多值依赖导致的异常(那需要 4NF 解决)。

关系属性集直接运算的条件

特别注意这道题的情景,是对表的内容运算!和我们之前做题去运算属性(列名不一样)

关系代数中的交(∩) 两个关系实例(表)的元组集合求交 表的内容

无损连接判断中的 R₁ ∩ R₂ 两个关系模式(表结构)的属性集合求交 表的属性名

139.设有关系R(E,F,G)和S(F,G,H,K),关系代数表达( 8 )可正确计算,如果进行运算R-S,其结果集包含属性( 9 )。

请作答:第 8 题

A RUS

B R∩S

C R-S

D RxS

并(∪)、交(∩)、差(−)要求两个关系属性集完全相同

并、交、差的关系运算是要求具有相同的关系模式。而笛卡尔积是不需要。所以第1空答案是D。

140.为了把一个满足BCNF的关系模式规范化为4NF,需要( )。

A消除决定因素非码的非平凡函数依赖 ❌ 这是 BCNF 做的事

决定因素非码指的就是一个函数依赖的左边属性集不能唯一决定一行中的所有属性

B消除主属性对码的部分和传递函数依赖 ❌ 这是 3NF → BCNF 做的事

C消除非平凡的多值依赖 实际考试中,只要记住 4NF 允许非平凡 MVD 存在,前提是左边必须包含候选键,例子极少。考试常考的是违反 4NF 的典型例子(如学号 →→ 课程,学号 →→ 社团)。

D消除非平凡且非函数依赖的多值依赖

闭包和

141.关系模式R(U,F)中,U是属性集,F是函数依赖集,X、Y是U的子集。若

,则( )。

B X→Y

D X→→Y

∈这个符号就是简单的属于的意思

⊂是一个子集属于集合,∈就是元素属于集合,所以Y依赖于X

X+F表示 从 X 出发,通过 F 中的函数依赖能够推导出的所有属性的集合。

也叫做属性集 X 关于函数依赖集 F 的闭包。

闭包指的是某个属性集通过某个函数依赖能推导出的全部属性

142-144.在关系模式"学生(学号,姓名,性别,年龄,系号,系名)"中,

一个学生只能属于一个系,

"系名"对于码"学号"的数据依赖是( 12 ),

该关系模式最高属于( 13 ),

将"学生"分解为两个关系模式:

S(学号,姓名,性别,年龄,系号)和D(系号,系名),则此分解( 14 )。

请作答:第 12 题

A平凡函数依赖

C传递函数依赖 要仔细看清楚题目问的是系名,而不是系号,学号->系号,系号->系名,所以是传递依赖

请作答:第 13 题

上问已知存在传递依赖,是不可能有3NF的,可以直接选出2NF

A 2NF

B 3NF

C 4NF

D BCNF

请作答:第 14 题

A具有无损连接性,保持函数依赖

B具有无损连接性,不保持函数依赖

C不具有无损连接性,保持函数依赖

D不具有无损连接性,不保持函数依赖

这里非常容易混淆,我们要看到:如果一个依赖的属性被拆分到不同子表,则它无法被任何子表直接保留,但是实际上并没有出现拆分的情况。

依赖 1:学号 → (姓名,性别,年龄,系号)

  • 所有属性(学号、姓名、性别、年龄、系号)都在 S 中 ✅ 直接保留

依赖 2:系号 → 系名

  • 所有属性(系号、系名)都在 D 中 ✅ 直接保留

两个依赖都完整地出现在某个子表中 → 保持函数依赖

R1∩R2=系号

R2-R1=系名

(已知 系号 → 系名)✅具有无损连接性

投影的去重

145.下表记录了某系统中各个学校的基本信息,关系运算(π主管部门)的结果是( )。

B{教育部,浙江,广西}投影实际上是会去重的!!因为教育部和教育部两行的内容完全相同,我们之前算关系表

1 3 2

1 3 3

没有去重是因为行不一样

C{教育部,教育部,浙江,广西}

146.假设有关系E(学校名称,所在地)和F(学校名称,专业代码,分数线),查询所有学校所有专业的分数线,以及学校所在地的信息,对应的关系表达式为( )。

E⋈F

这里的要求包括两张表之间要联动,做等值连接的。

如果这里用的是E×F,那么就是E每一行都和F每一行运算,那么就会产生很多驴唇不对马嘴的错误行

147.在关系型数据库中,( )。

A表的行次序可以任意交换 关系是元组集合,行无序

在实际应用中,顺序也要依靠ORDER实现,而不是依靠表本身插入的顺序,这样是不符合关系模型的

B表的列次序不能任意交换

C同一个表的两个列可以有相同的属性名 必须唯一

D同一个数据库的两个表可以同名 必须唯一

148.以下选项中,( )不属于关系模型中的完整性约束。

A实体完整性

B参照完整性

C元组完整性

D用户定义的完整性

149.模式是数据库中全体数据的逻辑结构和特征的描述,模式在某一时刻的一个具体值称为该模式的一个实例。模式和实例分别是相对( )的。

固定和变化

150.( 4NF )要求关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。

151.若对关系R 1按( )进行运算,可以得到关系R 2。

A σ商品名=’毛巾‘V’’钢笔‘(R1)

首先正确的写法应该是:σ 商品名='毛巾' ∨ 商品名='钢笔'(R1)

其次,如果是按这样的条件,那么结果应该是 两条毛巾两条钢笔

B σ单价≥’8‘(R1)

C π1.2.3(R1)

D σ商品编号=’01020211‘v’02110200‘(R1)

结果只会保留两行


评论