我正计划为我的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()并不是很快。
更新 我计划预先构建一系列允许的标签供用户选择。
答案 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)
您的查询将无法使用索引。所以,更多帖子=>表现更差。