3

主キーとして 2 つの列を持つテーブルがあります。これらの 2 つの列は、同じテーブルを参照する外部キーでもあります (このテーブルは、会社を退職した人物によって少し前に作成されました)。

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 は DB のどこにも見つかりませんが、アプリケーションには対応する列挙型があります。

主キーがそれ自体を参照する外部キーでもある理由はありますか (つまり、文書化されていないパフォーマンスの向上)、それとも単なる間違いですか?

4

2 に答える 2