N:M 关系 SQL 服务器和 C# 中的唯一键

Unique keys in N:M Relation SQL Server & C#

我有一个 table 叫 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 的 table 来建立这种关系
Road_id | Car_id | uniqueValue 

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

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

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 密钥并使其按照此代码中的说明工作?

这应该是您想要的唯一组。

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

只需在最后一个约束后添加以下代码:

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