此Post / Tag DB架构会在以后导致问题吗?

时间:2010-07-13 05:53:28

标签: c# sql asp.net-mvc linq schema

我正计划为我的ASP.NET MVC应用程序提供一项新服务,并希望使用标签。我从来没有真的太喜欢标签,但是SO提供了所以我会试一试。

这是我正在考虑的简化模式:

Post Table
------------------
PK PostId BigInt (or perhaps uniqueidentifier)
...more post related fields...
Tags nvarchar(200)

然后我在LINQ上查询类似的内容:

_db.Posts.Where(p => p.Tags.Contains("TagToFind"));

显然,这非常简单,但会做我需要的。你觉得这有什么明显的问题吗?可能性能,我想.Contains()并不是很快。

更新 我计划预先构建一系列允许的标签供用户选择。

3 个答案:

答案 0 :(得分:1)

这可能有效,但除非您在该列上有全文索引(并使用全文样式查询进行查询),否则它不会扩展。

标准化标签(具有标签表)也是一种关键,除非你这样做,否则无法处理合并或跟踪何时/谁创建了什么标签。

答案 1 :(得分:0)

  

你看到任何明显的问题吗?   此?

好吧,我们给它一个测试:

INSERT INTO PostTable (PostId, Tags) 
VALUES (0, NULL), 
       (1, NULL), 
       (2, NULL), 
       (22, ''), 
       (55, 'Hello world!'), 
       (-99, 'Hello world!');

没有关系密钥,没有数据完整性。不,绝对没有问题;)

答案 2 :(得分:0)

您的查询将无法使用索引。所以,更多帖子=>表现更差。