假设我有一个如下所示的简单表:
CREATE TABLE [dbo].[Product]
(
ProductID INT -- PK
,ProductName NVARCHAR(100)
,ProductDescription NVARCHAR(MAX)
,ProductOwner NVARCHAR(50)
-- Extra fields <snip>
)
我希望能够为每一列定义标志[dbo].[Product]
并将它们存储在另一个表中。
我可以引入一个FlagType
表来定义可能的标志集:
CREATE TABLE [dbo].[FlagType]
(
FlagTypeID INT -- PK
,FlagTypeName NVARCHAR(50)
)
然后是一个Flag
提供列、标志类型和值之间映射的表:
CREATE TABLE [dbo].[Flag]
(
FlagID INT -- PK
,FlagTypeID INT -- FK => [dbo].[FlagType] (FlagTypeID)
,FlagColumn ??? -- FK
,FlagValue BIT
)
我的问题是,如何定义上面列的FK
关系FlagColumn
,使其必须始终引用数据库中的有效列?
我最初的想法是让它成为一个外键,INFORMATION_SCHEMA.COLUMNS
但这个表似乎没有我可以引用的主键。