可以将平凡的超键视为候选键吗?

Moh*_*ain 2 database database-design key candidate-key

假设关系 R(A,B,C,D) 存在且没有函数依赖。那么什么应该被视为它的候选键呢?显然,任何单个属性或所有属性的适当子集都不能成为候选键,因为它们绝不可以识别非主要属性。那么 ABCD 可以被认为是候选键吗?或者这个关系不会有任何候选键?

Bra*_*vic 5

假设关系 R(A,B,C,D) 存在且没有函数依赖。那么 ABCD 可以被认为是候选键吗?

是的,key 1是由所有属性组成的。

不过,这在实践中非常罕见。它主要发生在实现多对多(或多对多对多等)关系的连接/链接表中。

或者这个关系不会有任何候选键?

一个关系必须至少有一个键,否则它不是关系2

关系是一个集合,任何给定的对象要么属于一个集合,要么不属于一个集合 - 它不能多次属于(与多重集不同)。如果没有至少一个键,同一个元组将能够多次属于。


1仅仅说“key”就是“candidate key”的同义词。

2至少,所有属性加在一起,可以被视为一个键(如您的情况)。