此 table 的非平凡函数依赖性

Non-trivial Functional Dependency of this table

下列 table 中哪些非平凡的函数依赖关系成立? 谁能一步一步解释一下规则?

A   B   C
------------
a1  b2  c1    
a2  b1  c6    
a3  b2  c4    
a1  b2  c5    
a2  b1  c3    
a1  b2  c7    

首先声明我对函数依赖的了解仅限于 Wikipedia article 中解释的内容,并且我目前没有必要也没有意愿去研究进一步。

但是,由于 OP 要求澄清,我将尝试澄清我是如何获得我在评论中发布的看似正确的答案的。

首先,这是维基百科的定义:

Given a relation R, a set of attributes X in R is said to functionally determine another set of attributes Y, also in R, (written X → Y) if, and only if, each X value is associated with precisely one Y value; R is then said to satisfy the functional dependency X → Y.

此外,维基百科指出:

A functional dependency FD: X → Y is called trivial if Y is a subset of X.

根据这些定义,我得到了给定关系的以下两个非平凡的函数依赖关系:

  • A→B
  • C → {A, B}

识别这些是一个完全归纳的过程。我没有应用一系列规则、公式和计算,而是查看了提供的数据并搜索了满足上述定义的约束条件。

在这种情况下:

  • A→B
    A 有三个可能的值:a1a2a3。查看 B 的对应值,您会发现以下组合:a1 → b2a2 → b1,以及 a3 → b2。或者,A 的每个值都与一个 B 值关联,符合定义。
  • C → {A, B}
    同样的推理也适用于这种依赖。在这种情况下,识别它会稍微容易一些,因为 C 的值在此关系中是唯一的。从这个意义上说,C可以被认为是一个key。在数据库术语中,candidate key 就是:唯一标识每个元组的最小属性集。

毫无疑问,有一种方法可以从数据中数学推导出函数依赖关系,但对于像这样的简单情况,归纳过程似乎工作得很好。

所以,上述 table 中的非平凡函数依赖是:

 1. A->B
 2. A,C->B
 3. B,C->A
 4. C->A,B