0
点赞
收藏
分享

微信扫一扫

证明范式关系的逻辑推导:从3NF到2NF及BCNF之间的包含性分析

证明范式关系的逻辑推导:从3NF到2NF及BCNF之间的包含性分析

文章目录

证明:若关系模式 R 满足第三范式(3NF),则它也一定满足第二范式(2NF)


定义回顾:
  1. 第二范式(2NF):

    • 关系 R 满足 2NF 的条件是:

      • R 满足第一范式(1NF),即每个属性的值都是不可再分的基本单元。
      • R 的所有非主属性 完全函数依赖 于任意候选键(即不存在部分依赖)。
  2. 第三范式(3NF):

    • 关系 R 满足 3NF 的条件是:

      • R 满足 2NF。

      • R 的所有非主属性对任意候选键都不存在传递函数依赖,或者非主属性是某个候选键的一部分。


要证结论:

若 R 满足 3NF,则必定满足 2NF。


证明过程:
  1. 假设 R 满足 3NF,但不满足 2NF:

    • R 满足 3NF,因此:

      • R 中的每个非主属性 A 对任意候选键 K 都满足以下至少一个条件:

        1. A 是完全函数依赖于 K;

        2. A 是部分函数依赖于 K 且 A 是某个候选键的一部分;

        3. A 是传递函数依赖于 K 且 A 是某个候选键的一部分。

    • 假设 R 不满足 2NF,则存在至少一个非主属性 A,它对候选键 K 存在部分函数依赖,即 A⊆K1,其中 K1 是 K 的一个真子集。

    • 部分函数依赖的存在违反了 2NF 的定义。

  2. 分析矛盾:

    • 根据 3NF 的定义:
      • 如果 A 对 K 存在部分函数依赖,但 A 是候选键的一部分,这满足 3NF 的条件,不影响 2NF;
      • 如果 A 是传递函数依赖,这种情况必然在候选键的某部分上依赖完全,或属于主属性本身,仍然不会违反 2NF。
    • 如果 A 对 K 存在部分函数依赖,而 A 既不是候选键的一部分,也不存在传递依赖,这种情况会违背 3NF 定义,导致假设矛盾。
  3. 结论:

    • 假设 R 满足 3NF,但不满足 2NF,会导致逻辑矛盾。
    • 因此,R 若满足 3NF,则必定满足 2NF。

补充说明:

从代数角度,3NF 的条件包含了 2NF 的所有要求,并对非主属性的传递依赖提出了更严格的限制,因此 3NF 自然包含了 2NF 的要求。



证明:若关系模式 R 满足BCNF,则它一定满足3NF


定义回顾:
  1. 第三范式(3NF):

    • 关系 R 满足 3NF 的条件是:

      • R 满足 2NF。

      • R的所有非主属性 A对任意候选键 K的依赖满足以下至少一个条件:

        1. A 是完全函数依赖于 K。

        2. A 是某个候选键的一部分(即 A 是主属性)。

  2. Boyce-Codd范式(BCNF):

    • 关系 R 满足 BCNF 的条件是:

      • 对于 R 中的所有函数依赖 X → A,X 必须是超键
    • 超键是可以唯一标识关系中每一元组的属性集合。


要证结论:

若关系模式 R 满足 BCNF,则它也一定满足 3NF。


证明过程:
  1. 假设 R 满足 BCNF:

    1. 根据 BCNF 的定义,对于 R 中的任意函数依赖 X→A,都满足 X 是一个超键。

    2. 超键的定义是一个属性集合,可以唯一标识关系中的每一元组。

    3. 这意味着 X→A 不可能引起部分依赖或传递依赖:

      • 部分依赖:X→A 中 X 是超键,因此 A 不可能仅依赖于 X 的一部分。

      • 传递依赖:由于 X 是超键,A 不可能通过其他属性间接依赖于候选键。

  2. 验证 3NF 的定义:

    • 根据 3NF 的要求,对于任意函数依赖 X→A ,要么 X 是超键,要么 A 是主属性。
    • R 满足 BCNF,意味着每个 X→A 中 X 都是超键,因此满足 3NF 的第一个条件(X 是超键)。
  3. 结论:

    • R 满足 BCNF,因此 R 中的任意函数依赖 X→A 都满足 3NF 的要求。
    • 换言之,BCNF 是 3NF 的更严格形式,因此 R 满足 BCNF 时必然满足 3NF。

补充说明:
  • BCNF vs 3NF:
    • BCNF 的约束更强,所有非平凡的函数依赖都要求左部 X 是超键。
    • 3NF 允许一些特殊情况(非主属性依赖于非超键),但这些情况不满足 BCNF。
    • 因此,BCNF 是 3NF 的真子集。


相关知识点

非主属性

非主属性是数据库中指一个关系模式中不属于任意候选键的属性。简单来说,它不能作为唯一标识关系中元组的属性。


超键(Super Key)

超键是数据库关系模式中一个属性或属性的集合,用来唯一标识关系表中每一行数据。也就是说,在关系 R 中,超键的值可以唯一区分每一元组(记录)。

超键的特性:

  1. 唯一性:
    • 对于关系 R 中任意两条元组 t1 和 t2,如果 t1[X]≠t2[X],则 X 是超键。
    • 即,超键的值在整个关系中是唯一的。
  2. 冗余性:
    • 超键可以包含多余的属性。如果从超键中去掉某些属性后,仍然能唯一标识元组,则这个超键包含了冗余。
    • 例如,如果 {A,B,C} 是超键,而 {A,B} 也是超键,那么 {A,B,C} 包含冗余。

候选键(Candidate Key)

候选键是超键的一个子集,它满足以下条件:

  1. 唯一性: 候选键可以唯一标识关系中的每一元组。
  2. 最小性: 候选键不能再去掉任何属性,否则将失去唯一标识的能力。

候选键的特性:

  1. 一个关系模式可以有多个候选键。
  2. 候选键是超键的最简形式(无冗余),也是构造主键的候选项。

主键(Primary Key)

主键是从候选键中选定的,用于唯一标识关系中每一元组的键。主键具有以下特性:

  1. 主键的值必须唯一。
  2. 主键的值不能为 NULL(空值)。
  3. 在一个关系中,主键只能有一个,但候选键可以有多个。

主键的作用:

  • 确保关系表中的每一行数据的唯一性。
  • 通常用于与外键建立参照完整性约束。

候选键与主键的关系:

  • 候选键是潜在的主键,数据库设计者从候选键中选择一个作为主键。
  • 其余未选为主键的候选键可被称为备用键(Alternate Key)。

区别总结
类别定义是否包含冗余数量限制
超键唯一标识关系中每一元组的属性或属性集可能包含冗余可以有多个
候选键满足唯一性和最小性的超键无冗余可以有多个
主键从候选键中选出的用于唯一标识元组的键无冗余只能有一个

外键(Foreign Key)

外键是一个属性或属性集合,用于建立两个表之间的关联。它的值必须匹配另一个表中的主键或候选键的值,确保参照完整性。

外键的作用:

  1. 确保表之间的数据一致性。
  2. 实现关系数据库的约束机制,避免孤立数据或破坏数据完整性。

举报

相关推荐

0 条评论