规范封面对于任何关系都是独一无二的吗?

时间:2015-12-17 10:53:26

标签: database database-normalization functional-dependencies bcnf

假设我有以下关系

C -> B
CB -> AC
CAE -> FB
D -> E
CA -> B

我书中给出的标准封面是C -> AB, CE -> F, D -> E

但是Canonical封面也可以是C - AB, D - EF?我们可以为一种关系设置两种不同的规范封面吗?

2 个答案:

答案 0 :(得分:3)

  

但是,Canonical封面也可以是C - ABD - EF

,它不能成为您的功能依赖项(FD)的规范封面。 F的规范封面是一套“最小”功能 依赖等效于F ,没有冗余依赖或依赖的冗余部分。

您建议的规范封面不等同于F。例如,函数依赖CAE->FB未完全涵盖在您建议的规范封面中,因此它不是规范封面。

另一方面,你的书C -> AB, CE -> F, D -> E中给出的是一个规范的封面,并且唯一的规范封面可能适用于这组FD。

  

我们可以为一种关系设置两种不同的规范封面吗?

我们可以。要找到规范封面,我们会这样做 -

  • 首先确保单身右手边(RHS)
  • 第二次删除任何无关的左侧(LHS)属性
  • 第三次删除任何冗余的功能依赖

由于上面的第三步,我们可以为一种关系设置不同的规范封面。我将用一个例子来解释这个。

鉴于FD为:

X→YZ
Y→XZ
Z→XY

首先确保单身RHS。所以我们有:

  1. X→Y
  2. X→Z
  3. ý→X
  4. ý→Z
  5. ž→X
  6. ž→ý
  7. 第二没有多余的LHS。已经满意了。

    第三次删除所有冗余FD。现在我们可以删除(2),(3)和(6)作为冗余依赖项,并将最小覆盖集设置为:

    <强> 1

    X→Y,
    Y→Z,
    Z→X
    

    或者我们可以删除(1),(4)和(5)作为冗余依赖项,并将最小覆盖设置为:

    <强> 2

    Z→Y,
    Y→X,
    X→Z
    

    因此,在这种情况下,我们有两个相同关系的规范封面。

答案 1 :(得分:1)

是的,一组功能依赖(不是一种关系)可以有多个规范的封面。日期在数据库系统简介,第7版,第346页中的练习10.12的答案中给出了逐步推导。

日期不使用术语规范封面。他或多或少地使用不可减少的封面