【发布时间】:2009-11-30 13:50:02
【问题描述】:
我正在开发一个接近 stackoverflow.com 的产品。海报需要为他的问题或任务输入标签。如何将这些标签存储在数据库中,总共一个字段(列)或一个标签一个字段(列)?
【问题讨论】:
标签: mysql database-design tags
我正在开发一个接近 stackoverflow.com 的产品。海报需要为他的问题或任务输入标签。如何将这些标签存储在数据库中,总共一个字段(列)或一个标签一个字段(列)?
【问题讨论】:
标签: mysql database-design tags
我认为Many to Many 关系会对你有所帮助
类似
-------- ----------------- ------------
- tags - <-------> - products_tags - <-------> - products -
-------- ----------------- ------------
多对多方法是更规范的方法,但我认为最难实现,因为在这种情况下,它基于连接来获取给定“产品”的所有标签。 优点:
另一种方法是将所有标签保存在一个字段中,并用某些东西分隔(比如说逗号)。在这里,您可以快速获取标签。您只需要按该分隔符拆分标签即可。保存标签也更容易。 但我不喜欢这种方法,因为如果您需要更新模板,您需要逐条进行,拆分,更新,然后保存..
【讨论】:
我会做这样的事情......
tblAvailableTags
- tag_id
- tag_name
tblTasks
- task_id
- task_name
- ...etc
tblTaskTags
- task_tag_id
- task_id
- tag_id
所以 tblTaskTags 将是您在两者之间的链接......所以您可以做一些事情来达到
的效果SELECT * FROM tblTaskTags WHERE task_id = 选定的任务 ID
【讨论】: