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
除法的结果就是,去除掉被除的相同属性CD,在这种除法中被除的S里面的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 );
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具有无损连接性,但不保持函数依赖
原 F 中的所有依赖都能被分解后的子表依赖集推导出来
→ 必然 保持函数依赖
只要分解包含了传递链上的所有相邻依赖,就一定保持函数依赖,因此可立即排除“不保持”的选项(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,可组合多个不同类型 用于组合属性(如地址拆分为省、市、街) ❌ 不是用来存多个电话的集合