N:M中的唯一键关系SQL Server& C#

时间:2016-02-11 12:34:07

标签: c# sql sql-server database constraints

我有一个名为cars的表和一个名为roads

的表
Roads:                        Cars:

Name      Road_Id             Owner     Car_Id
-------------------           ---------------------
roade45       1               Hugo        1
roade20       2               Eson        2
roade10       3               Karl        3

我需要在这些之间创建一个N:M关系(一条路可以在很多路上行驶,一条路可以有很多车)。

这是一个愚蠢的例子,但需要成为N:M关系。

我通过使用这些列

创建另一个名为cars_roads的表来实现此关系
Road_id | Car_id | uniqueValue 

现在我的问题是我不知道如何让uniqueValue采取形式,这个值将用于防止双重发生,例如。同一辆车第二次被添加到同一条路上。

我的表格是使用以下代码创建的:

CREATE TABLE [dbo].[Tbl_cars_roads] 
(
    [Road_id]   INT NOT NULL,
    [car_id] INT NOT NULL,
    CONSTRAINT [PK_Tbl_Road_id] FOREIGN KEY ([Road_id]) REFERENCES [dbo].[Tbl_Cars] ([Road_id]),
    CONSTRAINT [PK_Tbl_car_id] FOREIGN KEY ([car_id]) REFERENCES [dbo].[Tbl_Roads] ([car_id])
)

如何添加uniqueValue密钥并使其按照此代码的说明运行?

2 个答案:

答案 0 :(得分:3)

这应该是你想要的唯一群体。

CONSTRAINT [UQ_CarRoads] UNIQUE NONCLUSTERED 
(
    [Road_id] ASC,
    [car_id] ASC
)

答案 1 :(得分:1)

只需在上次约束后添加以下代码:

CONSTRAINT [UK_Road_Car] UNIQUE ([Road_id], [car_id])