Значение SQL противоречит другим данным таблицы - PullRequest
3 голосов
/ 14 февраля 2011

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

Я хочу, чтобы она была модульной, поэтому я могу просто добавить другой видавтомобиля на стол TypeOfCar, и он становится доступным на столе автомобилей, спасибо заранее.

Ответы [ 2 ]

2 голосов
/ 14 февраля 2011

Лучший способ реализовать это - использовать ограничение внешнего ключа.По сути, вы получаете свои таблицы, например:

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 вCarType.Это соотношение обеспечивает существование элемента CarType для значения, указанного в таблице Car.

1 голос
/ 14 февраля 2011

Вы хотите добавить столбец CarType в таблицу Cars и сделать его внешним ключом для таблицы TypeOfCar.

...