有没有更好的方法使用逗号在db中保存标签?

时间:2012-08-15 18:16:47

标签: php database tags

目前我使用逗号“,”将标签保存为文本,当我需要处理和使用某处时,我需要将字符串分解为例如“美国,加拿大,犯罪,多伦多,音乐,落”。

我在想是否有更好的方法(更少的资源和耗时的友好)来做这个标签,或者这是每个人都使用的唯一解决方案。

修改: 我有一个小项目,管理员没有标签管理。我不需要为db中的标签设置三个表。我只是在寻找一些更聪明的解决方案,如何从数据库中保存的字符串中保存和分解标记。

2 个答案:

答案 0 :(得分:2)

真的使用三表方法!真的真的!

否则,您如何查询标记为“usa”的项目,而不会将项目标记为“可用”? LIKE %usa%将同时返回。

有关在db中实现标记的三种方法的讨论,请参阅此处: http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html

编辑以回应评论:

  

逗号,逗号,逗号......

逗号不会帮助也无济于事。示例标记字段:culture,usa。你将如何LIKE这个?

你可以用格式保存标签:,culture,usa,(用逗号表示和结尾)。

Imho会带来一些特殊情况,最终会变得更加复杂,即三桌方法。

答案 1 :(得分:0)

假设标签与某些项目(用户,博客等)相关,有一种简单的方法可以做到这一点

Table_Tags 
{ 
   tag_id:index for the table entries,
   item_id, 
   tag_code: usa,
   source: app_system, comment, fb, twitter etc
   <other audit fields>
}

在处理项目/填充项目时,也可以填充标记。

希望这会有所帮助