【问题标题】:How can I add two different features as a foreign key to my SQL Column?如何将两个不同的功能作为外键添加到我的 SQL 列?
【发布时间】:2021-06-28 11:52:48
【问题描述】:

我的 Sql 数据中有一个 Car 表,每辆车都有自己的 BrandId,它将“Brands”表中的每个 Brands 声明为外键。我只是想知道如果我想在我的一个 Car>BrandId 列中添加两个不同的 BrandId 怎么办,我会怎么做?如何在一个特定列中添加两个特征作为外键?

这是我的车表代码

CREATE TABLE [dbo].[Cars] (
[CarId]      INT           IDENTITY (1, 1) NOT NULL,
[CarName]    VARCHAR (255) NULL,
[ColorId]    INT           NULL,
[BrandId]    INT           NULL,
[ModelYear]  VARCHAR (255) NULL,
[DailyPrice] DECIMAL (18)  NULL,
[Details]    VARCHAR (255) NULL,
PRIMARY KEY CLUSTERED ([CarId] ASC),
FOREIGN KEY ([ColorId]) REFERENCES [dbo].[Colors] ([ColorId]),
FOREIGN KEY ([BrandId]) REFERENCES [dbo].[Brands] ([BrandId])
);

这里是我的 Brands 表的代码;

CREATE TABLE [dbo].[Brands] (
[BrandId]   INT           IDENTITY (1, 1) NOT NULL,
[BrandName] VARCHAR (255) NULL,
PRIMARY KEY CLUSTERED ([BrandId] ASC)
);

【问题讨论】:

  • 如果您需要以多对多关系链接两个项目(例如品牌和汽车),典型的方法是使用Junction Table
  • 品牌究竟是什么意思,什么车有两个品牌?

标签: sql .net sql-server foreign-keys


【解决方案1】:

您可以按如下方式简单地创建表:

CREATE TABLE [dbo].[Cars] (
[CarId]      INT           IDENTITY (1, 1) NOT NULL,
[CarName]    VARCHAR (255) NULL,
[ColorId]    INT           NULL,
[BrandId1]    INT           NULL,
[BrandId2]    INT           NULL,
[ModelYear]  VARCHAR (255) NULL,
[DailyPrice] DECIMAL (18)  NULL,
[Details]    VARCHAR (255) NULL,
PRIMARY KEY CLUSTERED ([CarId] ASC),
FOREIGN KEY ([ColorId]) REFERENCES [dbo].[Colors] ([ColorId]),
FOREIGN KEY ([BrandId1]) REFERENCES [dbo].[Brands] ([BrandId]),
FOREIGN KEY ([BrandId2] REFERENCES [dbo].[Brands] ([BrandId])

【讨论】:

  • 如果有时我想添加单个外文怎么办,这段代码能满足我的要求吗? @塔希尔塔希尔
  • 对于您的查询,只需执行以下操作:我忘记将 [BrandId2] 添加为一列,但它应该看起来像这样 [BrandId2] INT NULL
猜你喜欢
  • 2019-11-23
  • 2018-07-21
  • 1970-01-01
  • 2020-02-20
  • 2021-02-13
  • 2020-10-25
  • 2016-01-05
  • 2018-01-18
  • 1970-01-01
相关资源
最近更新 更多