Sha*_*wal 20 sql composite-key candidate-key
我正在阅读候选键和复合键.我才知道
对于复合键,我已经引用了这个链接
如何使用SQL Server Management Studio创建复合键?
因此,当候选键和复合键都是列的组合时,它们可以作为主键.那究竟是什么区别?你能用例子解释一下吗?
Dam*_*ver 15
键是一组列,可用于唯一标识表中的每一行.
每张桌子至少有一把钥匙.假设我们已经确定了表格的每个可能的关键字.这些键中的每一个都是候选键.
当我们检查这些键中的每一个时,键可以包括没有列(!),一列或多个列,当它们一起被唯一地标识每一行时.术语复合键特指一个由多个列组成的键.
在SQL中,决定应该选择一个键,并将其视为与表的其他键"更相等".该密钥称为主密钥.其他键也可以在表上声明,这些键通常称为Unique Contsraints.
(!)在SQL中,不允许声明没有列的键 - 虽然它偶尔会有用(想想一个表应该只有一行,每列代表配置信息)
作为具有多个键的表的示例,所有这些键都是复合的.想象一下预约系统,客户和辅导员在特定时间在一个房间里见面:
CREATE TABLE Appointments (
ClientID int not null,
CounsellorID int not null,
RoomID int not null,
AppointmentTime datetime not null
)
Run Code Online (Sandbox Code Playgroud)
该表的候选键是{ClientID,AppointmentTime},{CounsellorID,AppointmentTime}和{RoomID,AppointmentTime}.列的任何组合都可用于唯一标识表中的行,并且所有列都是复合键.
我们选择将哪一个声明为主键将取决于(可能)我们对系统主要"焦点"的解释.我们主要关注房间使用,客户或辅导员吗?无论如何,我们将选择一个并将其声明为主键.我们也希望将其他键声明为唯一约束.
或者,我们可以决定使用代理,并AppointmentID使用数据库中可用的任何自动编号工具声明一个列.那可能是(非复合)主键.但是我们仍然应该声明该表的其他键.
候选键:主键字段的提名者称为候选键.
复合键:创建多个主键共同称为复合键.
更新: 候选键是可用作主键的唯一键.复合键是唯一标识该行的两个或多个属性的键.键是一组列,可用于唯一标识表中的每一行.