【问题标题】:Unique keys in N:M Relation SQL Server & C#N:M 关系 SQL Server 和 C# 中的唯一键
【发布时间】:2016-02-11 12:34:06
【问题描述】:

我有一张名为 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 键并使其按照此代码的说明工作?

【问题讨论】:

    标签: c# sql sql-server database constraints


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-15
        • 1970-01-01
        • 1970-01-01
        • 2014-11-28
        • 1970-01-01
        • 2017-04-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多