【问题标题】:Database candidate keys from functional dependencies - specific technicality来自功能依赖项的数据库候选键 - 特定技术性
【发布时间】:2013-10-12 20:24:12
【问题描述】:

我正在使用关系数据库的一组属性和一组功能依赖项,并且对哪些键将被视为此架构的候选键有一个特定的问题。

我正在使用的属性集是:

R = (A, B, C, D, E, F, G, H)

而函数依赖的集合是:

F = { AC -> B, AB -> C, AD -> E, C -> D, BC -> A, E -> G, ABE -> D, FG -> E}

所以这就是我想要弄清楚的:这组属性是否有任何个候选键,因为在函数依赖集中根本没有确定/提到 H?

根据定义,候选键决定其他一切,对吗?如果 H 不是由它自己决定的,那么这个集合中还会有候选键吗?

感谢任何见解。谢谢!

【问题讨论】:

  • R 是关系模式还是只是一组属性?如果 R 是一个关系,那么 {A,B,C,D,E,F,G,H} 必须是一个超键,因此 R 至少有一个候选键。

标签: database functional-dependencies candidate-key


【解决方案1】:

回想一下 (Wikipedia)

在数据库的关系模型中,关系的候选键是 该关系的最小超键;也就是一组属性 这样关系没有两个不同的元组(即行或 通用数据库语言中的记录)具有相同的值 属性(这意味着属性集是一个超键) (1) 不存在这些属性的真子集 (这意味着集合是最小的)。

因此,

所以这就是我想要弄清楚的:这组属性是否有任何候选键,因为在函数依赖集中根本没有确定/提到 H?

这仅仅意味着 H 将包含在 R 可能拥有的每个候选键中。例如,ACFH 是候选键。你可以推断 B 因为 AC->B,D 因为 C->D,E 因为 AD->E,G 因为 E->G。另一方面,您不能从 ACH 推断 F,从 ACF 推断 H,从 AFH 推断 C,从 CFH 推断 A。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多