数据库范式理解

第一范式(1NF):确保表中的每一列都是不可分割的基本数据项,即表中的每一列只能包含单一的数据类型。若列中包含多个数据类型或可分割的数据,如地址列中同时包含街道、城市、邮编等信息,则需要拆分该列,使其符合1NF的要求。

记忆技巧:1NF关注的是列的不可分割性,可以联想为“简一列”,即简化每一列。

第二范式(2NF):在满足1NF的基础上,要求表中的非主键列都完全函数依赖于主键。这意味着,每一列的数据必须仅与整个主键相关联,而不能只与主键的一部分相关联。这样可以避免插入异常和删除异常,以及部分数据冗余的问题。

记忆技巧:2NF强调的是非主键列对主键的完全依赖,“完二依赖”,即完全依赖于整体主键。

第三范式(3NF):在满足2NF的基础上,进一步要求消除传递依赖。也就是说,非主键列不能仅依赖于其它非主键列,而必须直接依赖于主键。这样可以更彻底地消除数据冗余。

记忆技巧:3NF是要消除传递依赖,“传三无”,即传递依赖无处不在,3NF要消除它。

巴斯卡尔范式(BCNF, Boyce-Codd Normal Form):在满足3NF的基础上,进一步要求主键的一部分不能被另一部分或其它部分所决定。这意味着在3NF的基础上,主属性之间也不能存在任何函数依赖关系。

记忆技巧:BCNF不仅要求主键外的属性对主键的直接依赖,还要确保主键内各个属性的独立性,可以联想为“主属性独立”,即主属性之间不能有决定关系。

假设关系模式R(U,F),属性集U={A,B,C},函数依赖集F={A→B,B→C}。若将其分解为ρ={R1(U1,F1),R2(U2,F2)},其中U1={A,B},U2={A,C}。那么,关系模式R、R1、R2分别达到了();分解ρ( )。

原始关系模式 R(U, F)

  • 属性集 U: {A, B, C}
  • 函数依赖集 F: {A→B, B→C}

要判断关系模式R是否满足各个范式,我们先分析其函数依赖。

  1. 1NF(第一范式): 关系模式R的每一列都是不可分割的基本数据项。从属性集来看,A、B、C都是不可分割的基本数据项,因此R满足1NF。

  2. 2NF(第二范式): 除了满足1NF之外,R的所有非主键列都必须完全函数依赖于主键。这里我们有两个函数依赖:A→B 和 B→C。B是A的函数依赖,而C是B的函数依赖,因此C不是完全函数依赖于A,而是传递依赖。所以R不满足2NF。

  3. 3NF(第三范式): 除了满足2NF之外,R的所有非主键列必须直接函数依赖于主键,不能存在传递依赖。由于R存在B→C的传递依赖,R不满足3NF。

  4. BCNF(巴斯卡尔范式): 除了满足3NF之外,R的每个主键的一部分不能被其余部分所决定。我们先要知道关系模式R的候选键,即能够唯一标识一个元组的最小属性集。在这个例子中,A是候选键,因为它可以决定B和C。但是由于存在B→C的传递依赖,R也不满足BCNF。

分解后的关系模式 R1(U1, F1) 和 R2(U2, F2)

  • R1(U1, F1): U1 = {A, B}

    • 函数依赖 F1: A→B
    • R1满足2NF,因为A是唯一候选键,B完全函数依赖于A。但是,R1不满足3NF或BCNF,因为B→C的传递依赖没有被消除,并且没有提供足够的信息来判断这个依赖是否存在于R1中。
  • R2(U2, F2): U2 = {A, C}

    • 函数依赖 F2: A→C (通过A→B,B→C可以推导出A→C)
    • R2满足3NF,因为A是唯一候选键,C直接函数依赖于A。但是,R2不满足BCNF,因为没有提供足够的信息来判断主属性之间是否存在决定关系(这里只有一个候选键A,所以这个问题不明显)。

关系模式的范式判断和分解评估

  • R: 不满足2NF、3NF和BCNF。
  • R1: 满足2NF。
  • R2: 满足3NF。

分解的评估

对于分解后的集合ρ={R1, R2},我们来判断它是否为一个有效的分解,即是否无损连接和保持函数依赖。

  • 无损连接: 如果由R1和R2的自然连接能够恢复出R的原始数据,我们称这个分解是无损连接的。
  • 保持函数依赖: 如果F中的所有函数依赖都能在分解后的子模式集中找到,我们称这个分解保持函数依赖。

在这个例子中,R1和R2的自然连接可以恢复出R的原始数据,即无损连接。同时,函数依赖A→B在R1中,A→C在R2中,而B→C可以由A→B和A→C两个依赖推导出来,因此分解ρ保持函数依赖。

综上所述,可以得出结论:

  • 关系模式R、R1、R2分别达到了0NF、2NF、3NF;分解ρ是无损连接且保持函数依赖的。

但请注意,这里假设的“0NF”并不是一个标准的术语,通常我们只会说R不满足2NF、3NF和BCNF。所以更准确的说法是:

  • 关系模式R、R1、R2分别达到了1NF、2NF、3NF;分解ρ是无损连接且保持函数依赖的。

 

你可能感兴趣的:(学习4,数据库)