我正在阅读有关候选键和复合键的信息。我才知道
- 候选键可以作为主键,它可以是单个列或列组合
- 复合键也是列的组合。
对于复合键,我参考了这个链接
如何使用 SQL Server Management Studio 创建复合键?
因此,当候选键和组合键都是列的组合时,它们可以作为主键。那么确切的区别是什么?你能用例子解释一下吗?
我正在阅读有关候选键和复合键的信息。我才知道
对于复合键,我参考了这个链接
如何使用 SQL Server Management Studio 创建复合键?
因此,当候选键和组合键都是列的组合时,它们可以作为主键。那么确切的区别是什么?你能用例子解释一下吗?
据我所知,候选键是可以用作主键的唯一键。但不一定用作一个。
复合键是唯一标识行的两个或多个属性的键。
键是一组列,可用于唯一标识表中的每一行。
每个表至少有一个键。假设我们已经确定了表的每个可能键。这些键中的每一个都是候选键。
当我们检查这些键中的每一个时,键可能不包含列 (!)、一列或多于一列,当它们一起考虑时,它们可以唯一地标识每一行。术语复合键特指由多于一列组成的键。
在 SQL 中,决定应该选择一个键并将其视为比表的其他键“更平等”。这个键称为主键。也可以在表上声明其他键,这些通常称为唯一约束。
(!)在 SQL 中,不允许声明没有列的键 - 尽管它有时会很有用(想想应该只有一行的表,其中每列代表配置信息)
作为具有多个键的表的示例,所有键都是复合的。想象一个预约系统,客户和顾问在特定时间在一个房间会面:
CREATE TABLE Appointments (
ClientID int not null,
CounsellorID int not null,
RoomID int not null,
AppointmentTime datetime not null
)
此表的候选键是 {ClientID,AppointmentTime}、{CounsellorID,AppointmentTime} 和 {RoomID,AppointmentTime}。任何这些列组合都可以用来唯一标识表中的一行,并且它们都是复合键。
我们选择将哪个声明为主键将(可能)取决于我们自己对系统主要“焦点”的解释。我们主要关心房间的使用,还是客户,还是顾问?在任何情况下,我们都会选择一个并将其声明为主键。我们还希望将其他键声明为唯一约束。
或者,我们可以决定使用代理,并声明一个AppointmentID
列,使用数据库中可用的任何自动编号工具。那可能是(非复合)主键。但是我们仍然应该为表声明其他键。
候选键:主键字段的提名者称为候选键。
复合键:创建多个主键统称为复合键。
更新: 候选键是可以用作主键的唯一键。复合键是唯一标识行的两个或多个属性的键。键是一组列,可用于唯一标识表中的每一行。
候选键:- 候选键是唯一键,是作为主键的“候选键”。 COMPOSITE KEY:- 两列或多列的“组合”作为主键,被视为复合键。
候选键就是:可用作主键的列或列组合,即候选或潜在主键。根据定义,组合键是可用于标识行的两个或多个列。在谈论复合键时,最常见的问题是是否将其作为主键来代替代理键。有时你可能会听到人们提到一个不是主键的复合键(即不是所有行都是唯一的),在这种情况下(希望)它只是一种在非主键上引用多列连接的方法字段(而不是在 where 子句中进行交叉连接和过滤行)。
CANDIDATE KEY:候选键是单列/多列(组合),它可以帮助我们唯一地标识表中的行。
<----- 现在在所有这些候选键中,其中一个成为主键(这取决于开发人员哪个适合他们)------>
COMPOSITE KEY:复合键由 2 列或更多列组成(不能是单列),这有助于我们识别表中的行。
-希望这可以帮助