SQL值包含另一个表数据

时间:2011-02-14 18:16:18

标签: c# asp.net sql sql-server-2005-express

我有几张桌子,让我说我有一张汽车桌,我有另一张桌子可以容纳所有类型的汽车(只是为了避免在汽车桌上有多个条目)所以我想在我的汽车桌上限制一下有一个类型的汽车类型的“列表/集”来自TypesOFCar表,这个表包含(Make,Model等)。我该如何存档。

我想要它是模块化的,所以我可以在TypeOfCar表中添加另一种汽车,它可以在Cars表格上提供,提前购买。

2 个答案:

答案 0 :(得分:2)

实现这一点的最佳方法是通过外键约束。从本质上讲,您派生的表格如下:

CREATE TABLE dbo.CarType
(
    [Id] INT NOT NULL DEFAULT(1, 1),
    [Description] VARCHAR(255) NOT NULL

    CONSTRAINT PK_CarType PRIMARY KEY NONCLUSTERED ([Id])
)

CREATE TABLE dbo.Car
(
  [Id] INT NOT NULL DEFAULT(1, 1),
  [Registration] VARCHAR(7) NOT NULL,
  [CarType_Id] INT NOT NULL

  CONSTRAINT PK_Car PRIMARY KEY NONCLUSTERED ([Id]),
  CONSTRAINT FK_Car_CarType_Id FOREIGN KEY ([CarType_Id]) REFERENCES dbo.CarType ([Id])
)

在这些示例表中,我创建了一个外键约束,将CarType_Id表的Car列映射到Id的{​​{1}}列。此关系强制要求CarType表中指定的值必须存在CarType项。

答案 1 :(得分:1)

您想要将CarType列添加到Cars表中,并将其设置为TypeOfCar表的foreign key