我想创建一个只有两个整数列的表作为两个不同数据集之间的映射表,我希望对它设置正确的约束。
我最初将这两列设置为复合主键,但后来意识到它代表了多对多,只保留了多次到多次映射的重复。
如何指定我希望所有行中的两列都是唯一的整数?我正在使用MS SQL,但我想这是一个通用的数据库设计问题。
答案 0 :(得分:2)
创建另一个表来创建多对多的关系,所以你可能不应该创建它(除非我遗漏了一些东西)。
一对一强制与将两个表作为单个表相同。唯一可接受的一对一是可选的,你只需要关联两个表,不需要第三个表。
答案 1 :(得分:1)
在一列上创建主键,在另一列上创建另一个单独的唯一约束或唯一索引。
CREATE TABLE [dbo].[test](
[x] [int] NOT NULL,
[y] [int] NOT NULL,
CONSTRAINT [PK_test] PRIMARY KEY CLUSTERED
( [x] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY])
ON [PRIMARY]
CREATE UNIQUE NONCLUSTERED INDEX [IX_test] ON [dbo].[test]
([y] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF,
DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
答案 2 :(得分:0)
对每列使用UNIQUE列约束。