Ton*_*ews 33
表只能有一个主键约束,但可以包含多个列,例如
create table my_table (col1 integer, col2 integer, col3 integer,
primary key (col1, col2, col3)
);
Run Code Online (Sandbox Code Playgroud)
除了主键之外,表还可以具有一个或多个UNIQUE约束,例如
create table my_table2 (col1 integer, col2 integer, col3 integer,
primary key (col1, col2),
unique (col2, col3)
);
Run Code Online (Sandbox Code Playgroud)
Stu*_*Stu 29
如果您的意思是" SQL中的主键可以有多列 ",答案是肯定的.
"通常复合键是一种糟糕的做法."
要小心那些试图卖给你这样废话的假先知.
关键是关键是关键是关键.密钥是一组属性.没有更多,也没有更少.该集的基数可以是1,或者它可以> 1,它甚至可以是零!并且一键一对一地对应于一些唯一性约束.
关系模型没有处方,因为密钥/唯一性约束只能涉及单个属性.
此外,关系模型也没有任何前景,因为有一个以上的密钥,而且关系理论已经抛弃了(几十年来已经存在的)"主键"的概念(暗示这样的"主要的"关键在任何意义上都是"比其他关键词"更多的关键",因为完全没有必要和无关紧要.就密钥所暗示的唯一性而言,所有密钥都是平等的(并且不是一个特定密钥比其他密钥更平等的情况).