Как я могу добавить две разные функции в качестве внешнего ключа в свой столбец SQL?

#sql #.net #sql-server #foreign-keys

Вопрос:

Моя таблица автомобилей, и я хочу добавить 2 внешних ключа, как вы видите

У меня есть таблица автомобилей в моих данных Sql, и у каждого автомобиля есть собственный идентификатор бренда, который объявляет все бренды в таблице «Бренды» в качестве внешнего ключа. Мне просто интересно, что, если я захочу добавить два разных брендида вместе в колонку «Один автомобиль>БрендИд», что бы я сделал? Как можно добавить две функции в качестве внешнего ключа в один специальный столбец?

Вот код моей машины

 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])
);
 

А вот код моей таблицы брендов;

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

Комментарии:

1. Если вам нужно связать два элемента (например, марку и автомобиль) во взаимосвязи «многие ко многим», типичным подходом будет использование таблицы соединений

2. Что, собственно, означает марка и у какого автомобиля две марки?

Ответ №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])
 

Комментарии:

1. Что делать, если иногда я захочу добавить один иностранный, будет ли этот код соответствовать моим требованиям? @Ташил Ташил

2. Для вашего запроса просто сделайте следующее : я забыл добавить [BrandId2] в качестве столбца вверх, но он должен выглядеть так [BrandId2] INT NULL