关系数据库设计 函数依赖 逻辑蕴含

函数依赖:

属性集 α 决定属性集 β ,则称有函数依赖 αβ α → β

逻辑蕴含:

F能推出 原不直观存在于 函数依赖集F 中的函数依赖 α β,则成α β被函数依赖集F逻辑蕴含

函数依赖的闭包 F+ F + :

​ 由关系模式R直观得到的函数依赖F所推出的所有隐含的或未隐含的(直观的)函数依赖的集合
举例:

F中有α–>β,β–>ω
则函数闭包 F+ F + 中存在α–>ω

Armstrong公理(以下的αβ形式表示α和β的并集):

1.  自反律(叫大推小更确切):
    ​集合A能推出其集合子集b

2.  增补律(加了也不影响)
    若α-->β,则αω-->βω

3.  传递律(一传十十传百)
    α-->β,β-->ω,则α-->ω

Armstrong公理推论(以下的αβ形式表示α和β的并集):

1. 合并律(合并右边)
        α-->β,α-->ω,则α-->βω

2. 分解律(分解右边)
        α-->βω,则α-->ω,α-->β

3. 伪传递律(左边加一点)
        α-->β,βπ-->ω则απ-->ω

属性的闭包

​在关系模式R所对应的F^+^中,有 αβ α → β ,则所有β组成的集合 α+ α + 叫做α的属性闭包

属性闭包算法:

result=A //此处A是一个属性集,result就是要计算的属性闭包
for each α-->β in F:
    if α in result:   //α已经在属性闭包里了,即A-->α是成立的
    result=result //增加属性闭包

正则覆盖 F+ F +

​ 将原函数依赖集F中的函数依赖α–>β中的部分(α或β属性中)冗余属性删除。 F+ F + 和 F 的函数依赖的闭包是相同的

属性是否冗余判断条件,对于α–>β函数依赖(哪边冗余F在哪边)

  1. α属性集中有属性A是冗余的, (αA)β ( α − A ) → β 成立:

    F 逻辑蕴含 (F(αβ))((αA)β) ( F − ( α → β ) ) ∪ ( ( α − A ) → β )

  2. β属性集中有属性b是冗余的, α(βb) α → ( β − b ) 成立

    (F(αβ))(α(βb)) ( F − ( α → β ) ) ∪ ( α → ( β − b ) ) 逻辑蕴含 F

无损分解

将关系模式R分解成 关系模式 R1R2 R 1 和 R 2 ,则:

R1R2R1R2 R 1 ∩ R 2 → R 1 或 R 2 ;即 R1R2R1R2 R 1 和 R 2 的 交 集 是 R 1 或 R 2 的super key

你可能感兴趣的:(数据库)