推荐用于标记或标记的SQL数据库设计

推荐用于标记或标记的SQL数据库设计

我听说过几种实现标记的方法;使用TagID和ItemID之间的映射表(对我来说很有意义,但它可以扩展吗?),在ItemID中添加固定数量的可能的TagID列(似乎是个坏主意),将标记保留在逗号分隔的文本列中(听起来很疯狂,但可能有效)。我甚至听过有人推荐稀疏矩阵,但是标签名是如何优雅地增长的呢?

我是不是错过了标签的最佳实践?


繁星coding
浏览 562回答 3
3回答

小唯快跑啊

三个表(一个用于存储所有项,一个用于所有标记,一个用于两个之间的关系),经过适当的索引,并在适当的数据库上设置外键,应该可以正常工作并进行缩放。Table: Item Columns: ItemID, Title, ContentTable: Tag Columns: TagID, TitleTable: ItemTag Columns: ItemID, TagID

弑天下

如果您使用的数据库支持map-还原(如CouchDB),那么将标记存储在纯文本字段或列表字段中确实是最好的方法。例子:tagcloud: {   map: function(doc){      for(tag in doc.tags){        emit(doc.tags[tag],1)      }   }   reduce: function(keys,values){     return values.length  }}使用group=true运行此操作将按标记名称对结果进行分组,甚至返回遇到该标记的次数的计数。它非常类似于计算文本中单词的出现次数.
打开App,查看更多内容
随时随地看视频慕课网APP