Таблица не содержит первичных ключей или ключей-кандидатов, которые соответствуют списку ссылающихся столбцов во внешнем ключе. - PullRequest
0 голосов
/ 15 апреля 2020

Это моя первая таблица:

CREATE TABLE [dbo].[County] 
(
    [CountyId] INT         IDENTITY (1, 1) NOT NULL,
    [County]   VARCHAR(50) NOT NULL,
    CONSTRAINT [PK_County] PRIMARY KEY CLUSTERED ([CountyId] ASC)
);

Это моя вторая таблица:

CREATE TABLE [dbo].[Theatre] 
(
    [TheatreId]   INT         IDENTITY (1, 1) NOT NULL,
    [TheatreName] VARCHAR(50) NOT NULL,
    [CountyId]    INT         NOT NULL,

    CONSTRAINT [PK_Theatre] 
        PRIMARY KEY CLUSTERED ([TheatreId] ASC),
    CONSTRAINT [FK_Theatre_County] 
        FOREIGN KEY ([CountyId]) REFERENCES [dbo].[County] ([CountyId])
);

Это моя третья таблица:

CREATE TABLE [dbo].[Movies] 
(
    [CinemaId]    INT         NOT NULL,
    [CategoryId]  INT         NOT NULL IDENTITY(101, 1),
    [CinemaName]  VARCHAR(50) NOT NULL,
    [TheatreId]   INT         NOT NULL,
    [ShowTimings] TIME (7)    NOT NULL,

    CONSTRAINT [PK_Movies] 
        PRIMARY KEY CLUSTERED ([CinemaId], [CategoryId]),
    CONSTRAINT [FK_Movies_Theatre] 
        FOREIGN KEY ([TheatreId]) REFERENCES [dbo].[Theatre] ([TheatreId])
);

Это моя последняя таблица:

CREATE TABLE [dbo].[Reviews]
(
    [MovieId]          INT         IDENTITY (1, 1) NOT NULL,
    [Name]             VARCHAR(50) NOT NULL,
    [Genres]           VARCHAR(50) NOT NULL,
    [Image]            VARCHAR(50) NOT NULL,
    [ShortDescription] TEXT        NOT NULL,
    [Rating]           VARCHAR(50) NOT NULL,
    [Grade]            VARCHAR(50) NOT NULL,
    [CategoryId]       INT         NOT NULL,

    CONSTRAINT [PK_Reviews] 
        PRIMARY KEY CLUSTERED ([MovieId] ASC), 
    CONSTRAINT [FK_Reviews_Movies] 
        FOREIGN KEY ([CategoryId]) REFERENCES [Movies]([CategoryId]),   
);

Я создал связь между таблицами, но я получаю сообщение об ошибке при обновлении последней таблицы:

SQL71516 :: Ссылочная таблица «[dbo]. [Movies]» не содержит первичных ключей или ключей-кандидатов, соответствующих списку ссылочных столбцов во внешнем ключе. Если указанный столбец является вычисляемым столбцом, его следует сохранить.

Может, кто-нибудь еще скажет, в чем заключается моя ошибка?

1 Ответ

1 голос
/ 15 апреля 2020

Как и в сообщении об ошибке, Movies.CategoryId не является ключом, поэтому вы не можете ссылаться на него во внешнем ключе. Вам нужна таблица Категории, у которой в качестве первичного ключа указан CategoryId. Тогда и Обзоры, и Фильмы могут иметь внешний ключ, ссылающийся на Категории.

...