我有一项任务 - 我需要以内容类型的形式将动态内容存储在数据库中。
ContentTypes
基本上是一个键值集合。我需要将这些数据存储在数据库中,并确保内容类型是可查询的并且可以编制索引。我不能为每种内容类型创建一个表,因为它们可以在运行时更改,这意味着丢弃表并丢失数据。
有谁知道这方面的任何好方法?我需要提一下,DB最终将包含约100万种内容类型。最后,.NET应用程序将访问此数据。
答案 0 :(得分:0)
如果值应该是可查询的,那么您可以像以下示例一样工作
CREATE TABLE [dbo].[ContentTypeDetail]
(
[ContentTypeDetailId] uniqueidentifier NOT NULL,
[ContentTypeId] uniqueidentifier NOT NULL,
[ColumnType] smallint NOT NULL,
[ColumnValueString] nvarchar(1000) NULL,
[ColumnValueInt] int NULL
)
GO
ALTER TABLE [dbo].[ContentTypeDetail] ADD CONSTRAINT [ContentTypeDetail_PK] PRIMARY KEY CLUSTERED
(
[ContentTypeDetailId]
)
GO
CREATE TABLE [dbo].[ContentType]
(
[ContentTypeId] uniqueidentifier NOT NULL,
[Name] nvarchar(100) NOT NULL
)
GO
ALTER TABLE [dbo].[ContentType] ADD CONSTRAINT [ContentType_PK] PRIMARY KEY CLUSTERED
(
[ContentTypeId]
)
GO
ALTER TABLE [dbo].[ContentTypeDetail] WITH CHECK ADD CONSTRAINT [ContentType_ContentTypeDetail_FK1] FOREIGN KEY
(
[ContentTypeId]
)
REFERENCES [dbo].[ContentType]
(
[ContentTypeId]
)
GO
当然你必须添加适当的索引