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])
我有一个 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])