ContentType - 动态数据结构存储C#+ SQL Server

时间:2017-08-30 15:12:01

标签: c# sql sql-server

我有一项任务 - 我需要以内容类型的形式将动态内容存储在数据库中。

ContentTypes基本上是一个键值集合。我需要将这些数据存储在数据库中,并确保内容类型是可查询的并且可以编制索引。我不能为每种内容类型创建一个表,因为它们可以在运行时更改,这意味着丢弃表并丢失数据。

有谁知道这方面的任何好方法?我需要提一下,DB最终将包含约100万种内容类型。最后,.NET应用程序将访问此数据。

1 个答案:

答案 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

当然你必须添加适当的索引