正如我们所知,候选键是唯一标识关系中的行的列或列组合。
假设我有一个关系,其中候选键是列的组合。我想问一下,
候选键的子集是否也可以唯一标识该行?
或者
候选键是没有唯一标识行的子集的键吗?
正如我们所知,候选键是唯一标识关系中的行的列或列组合。
假设我有一个关系,其中候选键是列的组合。我想问一下,
候选键的子集是否也可以唯一标识该行?
或者
候选键是没有唯一标识行的子集的键吗?
候选键是一列或列的组合。或者更准确地说是一组一个或多个列。或者更准确地说是一组列。
候选键是唯一标识行的一组列,并且不包含唯一标识行的列的较小(“适当”)子集。
超级键是一组唯一标识行的列。所以候选键是一个不包含更小的超键的超键。
在 SQL 中,您不能声明一个空的候选键。此外,UNIQUE NOT NULL 和 PRIMARY KEY(就约束而言仅表示 UNIQUE NOT NULL)声明超级键,而不是键本身。如果此类声明的列集不包含声明为超键的较小列集,则它声明的超键是候选键。
您的问题最初是说您有一个关系,其中候选键是“键的组合”。也许您的意思是,超级键(列)的一些较小子集是超级键或候选键。
所以不,候选键不能包含较小的候选键。另一方面,在 SQL 中,您可以在另一个 UNIQUE/PK 声明的列的较小子集上使用 UNIQUE/PK 声明。但是后者不会成为候选键。
根据定义,没有一个候选键的真子集可以识别一行。