如何在MySQL标签中存储标签,总共一个字段或每个标签一个字段?

Ste*_*ven 2 mysql tags database-design

我正在开发一个接近stackoverflow.com的产品.需要海报为他的问题或任务输入标签.如何在数据库中存储这些标记,一个字段(列)或一个字段(列)用于一个标记?

Gab*_*osa 8

我认为多对多关系会帮助你

就像是

--------             -----------------           ------------
- tags -   <-------> - products_tags - <-------> - products - 
--------             -----------------           ------------
Run Code Online (Sandbox Code Playgroud)

编辑:

"多对多"方法是更加规范化的方法,但我认为最难实现,因为在这种情况下基于联接来获取给定"产品"的所有标签.好处:

  1. 完全正常化
  2. :因为如果您需要更改标签名称,您可以这样做,您将看到所有变化
  3. 等等

另一种方法是将所有标记保存在由某个东西分隔的一个字段中(比如说逗号).在这里你有获得标签的速度.你只需要通过该分隔符拆分标签就可以了.保存标签也更容易.但我不喜欢这种方法,因为如果你需要更新模板,你需要逐篇文章,拆分,更新,然后保存..