组合主键
我们知道主键是区别每一条记录的字段,主键是唯一的,比如常用的 ID。但有些时候,我们需要多个字段组合起来作为主键。
比如一张表有 A、B、C、D、E 五个字段。通常如果是一个主键(比如 A),那么每一条记录 A 的值都不一样。但有些时候我们希望多个字段组合起来才能唯一区分每一条记录,比如通过 A、B、C 三个字段组合。
| A | B | C | D | E |
|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 |
| 1 | 3 | 4 | 3 | 4 |
| 1 | 2 | 4 | 4 | 5 |
| 1 | 2 | 4 | 4 | 5 |
上面的记录如果单独看字段 A,三条记录 A 都是 1,明显重复;单独看 B,有两个 2;单独看 C,有两个 4。但如果把 A、B、C 组合起来:123、134、124、124,就可以区分每一条记录了。这就是组合主键。
在 PowerDesigner 或 SSMS 中,同时选中多个字段,然后右键设置为主键即可。
CREATE TABLE [dbo].[Table_1](
[A] [nchar](10) NOT NULL,
[B] [nchar](10) NOT NULL,
[C] [nchar](10) NOT NULL,
[D] [nchar](10) NULL,
[E] [nchar](10) NULL,
CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED
(
[A] ASC,
[B] ASC,
[C] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GOCode language: PHP (php)