模式分解
2026/10/10大约 5 分钟
模式分解
1. 考点:保持函数依赖分解
1.1 定义
- 核心概念:设数据库模式 是关系模式 的一个分解, 是 上的函数依赖集, 中每个模式 的 集是 。如果 与 是等价的(即相互逻辑蕴含),那么称分解 保持 。
1.2 实例讲解
1.2.1 例题一
已知条件:设关系模式 ,其中 ,。
问题 1:分解 是否保持函数依赖?
解析:
- 包含的函数依赖投影通常包括 ,, 等。
- 包含 。
- 检查原 中的所有依赖是否都能在各个分解后的关系中找到或被其逻辑蕴含:(在 中),(在 中),(在 中),(在 中)。因此该分解保持函数依赖。
问题 2:分解 是否保持函数依赖?
解析:
- 检查原依赖 可以落在 中。
- 但是原依赖 中的属性 丢失在了 之外( 只有 ),导致无法在任何单一子模式中重构或验证 。因此该分解不保持函数依赖。
1.2.2 例题二
已知条件:设关系模式 ,其中 ,。
问题:分解 是否保持函数依赖?
解析:
- 包含 。
- 包含 。
- 根据传递律,由 和 可以推导出 。因此原依赖集 中的 虽然没有直接完整地呆在某一个子模式里,但它可以被分解后的 和 联合逻辑蕴含。所以该分解保持函数依赖。
1.3 重要考场注意点
⚠️ 注意:此类题要排除传递依赖。 在分析和化简函数依赖集、判断是否保持 时,切记要考虑通过传递规则(如 且 可推出 )所隐含的依赖关系,不要误判因表面上少写一条而认为不保持。
2. 考点:无损分解
2.1 基本概念
通俗理解:
- 有损分解:分解后无法还原。
- 无损分解:分解后可以通过自然连接等运算完全还原。
无损连接分解的定义:指将一个关系模式分解成若干个关系模式后,通过自然连接等运算仍能还原到原来的关系模式。
2.2 经典思考题与解析
题目:
有关系模式:
函数依赖:,,
若将其分解为:
请思考该分解是否为无损分解?(重点看同名小表是否可以推出大表)
解析:
判断依据(定理法) :在将一个关系模式分解为两个或多个关系模式时,如果公共属性构成了其中某个子模式的候选码(或超键) ,则该分解是无损连接分解。
具体分析:
- 原关系模式的候选码为 。
- 在分解后的关系中,“学生”表与“成绩”表的公共属性是 ****,而 (即 是“学生”表的候选码)。
- 同理,“课程”表与“成绩”表的公共属性是 ****,而 (即 是“课程”表的候选码)。
结论:由于每次连接时的公共属性都能函数决定该子模式的其余属性(满足无损分解的判定条件),因此该分解是无损分解。
3. 经典例题
3.1 题目一
题目: 给定关系模式 上的函数依赖集 。若将 分解为 ,则该分解是( )的。
- A、无损连接且不保持函数依赖
- B、无损连接且保持函数依赖
- C、有损连接且保持函数依赖
- D、有损连接且不保持函数依赖
【解析】
正确答案: D
解析说明:
判断无损连接:
用 Chase 法则判断:
- 初始表格:
| 属性 | A1 | A2 | A3 | A4 |
|---|---|---|---|---|
- 根据 $A_1A_3 \to A_2$:两行在 $A_1$ 上相同,但 $A_3$ 上不同(第 $1$ 行是 $b_{13}$,第 $2$ 行是 $a_3$),不适用。
- 根据 $A_2 \to A_3$:两行在 $A_2$ 上不同(第 $1$ 行是 $a_2$,第 $2$ 行是 $b_{22}$),不适用。
- 检查结果:没有出现全部为 $a$ 的行。
- 因此,该分解是**有损连接**。
判断保持函数依赖:
原函数依赖集 。
分解后:
- 上的函数依赖:无( 不成立, 不成立)。
- 上的函数依赖:无( 不成立, 不成立)。
分解后丢失了 和 。
因此,该分解不保持函数依赖。
结论:该分解是有损连接且不保持函数依赖的。
正确答案: D(有损连接且不保持函数依赖)。
