为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁星coding 2019-06-18 10:10:25
推荐用于标记或标记的SQL数据库设计我听说过几种实现标记的方法;使用TagID和ItemID之间的映射表(对我来说很有意义,但它可以扩展吗?),在ItemID中添加固定数量的可能的TagID列(似乎是个坏主意),将标记保留在逗号分隔的文本列中(听起来很疯狂,但可能有效)。我甚至听过有人推荐稀疏矩阵,但是标签名是如何优雅地增长的呢?我是不是错过了标签的最佳实践?
查看完整描述

3 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

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

Table: Item
Columns: ItemID, Title, ContentTable: Tag
Columns: TagID, TitleTable: ItemTag
Columns: ItemID, TagID


查看完整回答
反对 回复 2019-06-18
?
弑天下

TA贡献1818条经验 获得超7个赞

如果您使用的数据库支持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运行此操作将按标记名称对结果进行分组,甚至返回遇到该标记的次数的计数。它非常类似于计算文本中单词的出现次数.


查看完整回答
反对 回复 2019-06-18
  • 3 回答
  • 0 关注
  • 559 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信