SQL表可以有多个具有主键的列吗?
发布于 2009-11-18 01:13:06
一个表可以只有一个主键约束,但它可以由几列组成,例如
create table my_table (col1 integer, col2 integer, col3 integer,
primary key (col1, col2, col3)
);
除了主键之外,表还可以有一个或多个唯一约束,例如
create table my_table2 (col1 integer, col2 integer, col3 integer,
primary key (col1, col2),
unique (col2, col3)
);
发布于 2009-11-18 01:13:00
如果您询问一个表是否可以有多个列作为主键,那么对于MS SQL Server,答案是肯定的,这称为复合(更正)键。
发布于 2009-11-18 01:57:59
通常,组合键是一种糟糕的做法。当你需要加入它的时候,它会导致事情变慢。当您需要更新27个子表中的一个或多个字段时,这也比较困难。更好的做法是在通常构成组合键的字段上使用代理键和唯一索引。这样,您就拥有了整数连接的速度,并且保持了唯一属性,并且当键值发生变化时(就像在组合键中经常发生的那样),那么您只需要更改一个表,而不是所有的子表。
有一个地方,我将使用组合键和用于创建多对多关系的关系的映射表。在这种情况下,您通常只有两列,而且这两列通常都是整数,通常不会改变。然后,我将通常使用组合键,因为这种特殊情况没有在普通表中使用组合键的缺点。
https://stackoverflow.com/questions/1750335
复制相似问题