我正在使用关系数据库的一组属性和一组函数依赖项,并且有一个特定的问题,即哪些键将被视为此模式的候选键。
我正在使用的属性集是:
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本身没有确定任何东西,那么这个集合中是否还有候选键?
任何见解都表示赞赏。谢谢!
答案 0 :(得分:1)
召回(Wikipedia)
在数据库的关系模型中,关系的候选键是 这种关系的最小超级钥匙;也就是说,一组属性 使得该关系不具有两个不同的元组(即行或 记录在通用数据库语言中)具有相同的值 属性(这意味着属性集是一个超级键) (1)成立的这些属性没有适当的子集 (这意味着该集合很小)。
因此,
所以这就是我想弄清楚的:这组属性是否有任何候选键,因为在功能依赖集中根本没有确定/提到H?
这只是意味着H将包含在每个候选键R中。例如,ACFH是候选密钥。由于AC-> B,D可以推断B,因为AD-> E,因为C-> D,E,并且因为E-> G,所以可以推断G.另一方面,您不能从ACH推断F,从ACF推断H,从AFH推断C,从CFH推断A.