2016-01-28 8 views
0

Я хочу создать базу данных с отношением много ко многим. Но у меня есть ошибкиотношение много ко многим

SQL71516 :: ссылочной таблица '[DBO]. [BookAuthors] не содержит первичных или возможные ключей, которые соответствуют списку реферирования столбца в внешнем ключе. Если ссылочный столбец является вычисленным столбцом, он должен быть сохранен в . SQL71516 :: ссылочная таблица '[dbo]. [BookAuthors]' не содержит первичных или потенциальных ключей, которые соответствуют ссылочному списку столбцов во внешнем ключе. Если ссылочный столбец является вычисленным столбцом, он должен быть сохранен.

Как это исправить?

CREATE TABLE [dbo].[BookAuthors] (
    [Book] INT NOT NULL, 
    [Author] INT NOT NULL, 
    PRIMARY KEY CLUSTERED ([Book] ASC,[Author] ASC) 
); 

CREATE TABLE [dbo].[Books] (
    [Id]  INT   NOT NULL, 
    [Title] NVARCHAR (MAX) NULL, 
    [Price] MONEY   NULL, 
    [Category] INT   NULL, 
    PRIMARY KEY CLUSTERED ([Id] ASC), 
    FOREIGN KEY ([Id]) REFERENCES [dbo].[BookAuthors] ([Book]) 
); 

CREATE TABLE [dbo].[Authors] (
    [Id] INT  NOT NULL, 
    [Name] NCHAR (10) NOT NULL, 
    PRIMARY KEY CLUSTERED ([Id]), 
    FOREIGN KEY ([Id]) REFERENCES [dbo].[BookAuthors] ([Author]) 
); 

ответ

2

Вы собрали в себя составной первичный ключ BookAuthors, который состоит из двух столбцов: книги и автора. При ссылке на него вам нужно ссылаться на оба столбца. Другое решение состоит в том, чтобы сделать в третьей колонке BookAuthors (возможно, идентичность), которая будет первичным ключом и ссылаться на нее.

0

Следующий рисунок показывает структуру таблицы.

Table Structure

Смежные вопросы