在以下关系中找到 3 个最小键

Find 3 minimal keys in the following relation

我正在尝试了解如何找到最少的密钥。 该作业为我提供了以下任务:

找到3个最小的关系键(每个键是一组属性)。

R (a, b, c, d, e)

a  -> b
bc -> d
de -> a

答案是:

(a, c, e)
(b, c, e)
(d, c, e)

我不明白如何得到答案。我将不胜感激任何指导。

首先,格里菲斯大学的这个website帮助很大(他们还展示了一步一步的BNCF归一化)。

显然,在这个任务中,最小键是一个候选键。

第一步是找到关系 R 中存在但 RightHandSide 中不存在的属性。

(a b c d e) - (b d a) = c e  (Relation R - RHS)

第二步是找到当前候选键的闭包。 {c e} 的闭包是 {c e}。 这没有帮助,因此我们需要包含一个额外的属性。 我们从(字母顺序)开始:

Closure of {c e a} = { c e a b d } Found one candidate key! 
Closure of {c e b} = { c e b d a } Found another candidate key!
We skip the c as it is already in the candidate key. 
Closure of {c e d} = { c e d a b } Found the last candidate key! (the task was to find 3)