Database 支持多个主键的数据库引擎?

Database 支持多个主键的数据库引擎?,database,relational-database,primary-key,Database,Relational Database,Primary Key,有没有支持多个主键的数据库引擎 不,我不是在一个主键中询问多个字段 我知道引擎必须复制每个附加主键的数据。我没意见 是否有人实现了该功能?一组唯一的列是一个超级键。不包含较小/适当的超键的超键是CK(候选键)。一个CK可以称为“主键” 谈论多个PK是没有意义的。也许当你说PK时,你指的是CK或superkey(甚至可能是某种SQL索引),但你没有阐明你的意思 SQL只允许每个表有一个主键声明。但它的意思是唯一不为空。因此,在关系术语中,主键声明了一个超键,但不一定是CK或PK。(尽管DBMS可能

有没有支持多个主键的数据库引擎

不,我不是在一个主键中询问多个字段

我知道引擎必须复制每个附加主键的数据。我没意见


是否有人实现了该功能?

一组唯一的列是一个超级键。不包含较小/适当的超键的超键是CK(候选键)。一个CK可以称为“主键”

谈论多个PK是没有意义的。也许当你说PK时,你指的是CK或superkey(甚至可能是某种SQL索引),但你没有阐明你的意思

SQL只允许每个表有一个
主键
声明。但它的意思是
唯一不为空
。因此,在关系术语中,
主键
声明了一个超键,但不一定是CK或PK。(尽管DBMS可能会以其他方式对PKs进行不同的处理。)SQL
外键
必须引用
唯一且不为null的列(可能通过
主键
),但相关术语使其成为外键超键,而不是FK(外键)

(当SQL中涉及空值时,其他关系术语也不适用,因为关系理论中没有空值。)

我不知道“复制数据”是什么意思。但是,如果一个表上有多个唯一索引,则会消耗额外的磁盘存储来支持这些索引。只能有一个。因此,谈论多个是没有意义的。解释在这个问题中,一组列有什么属性可以(错误地)称之为PK。(也许你的意思是CK。)“为每个附加主键复制数据”也不清楚。请编辑您的问题以使其清晰。