У меня есть таблица с двумя столбцами в качестве первичного ключа. Эти две колонны также внешний ключ, который ссылается на ту же таблицу: (Эта таблица была создана некоторое время назад кто-то с тех пор покинул компанию)Задание внешних ключей Первичный ключ в той же таблице
CREATE TABLE [dbo].[tblItemLink](
[ItemListID] [int] NOT NULL,
[ItemID] [int] NOT NULL,
CONSTRAINT [PK_tblItemList] PRIMARY KEY CLUSTERED
(
[ItemListID] ASC,
[ItemID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[tblItemLink] WITH CHECK ADD CONSTRAINT [FK_tblItemLink_tblItemLink] FOREIGN KEY([ItemListID], [ItemID])
REFERENCES [dbo].[tblItemLink] ([ItemListID], [ItemID])
GO
ALTER TABLE [dbo].[tblItemLink] CHECK CONSTRAINT [FK_tblItemLink_tblItemLink]
GO
На практике ItemID относится к tblItem.ItemID, и ItemListID больше нигде не найден в базе данных, но в приложении есть соответствующее перечисление.
Есть ли причина, по которой первичный ключ должен быть внешним ключом, ссылающимся на себя (т. Е. Некоторое недокументированное повышение производительности), или это просто ошибка?
Да, это была бы иерархия, если бы был внешний ключ, ссылающийся на первичный ключ в той же таблице, но в этом случае первичный ключ является внешним ключом - поэтому каждая строка действительно ссылается на себя. –
Я уверен, почему нет !!! –