从逻辑上思考数据库结构:向用户发布的内容添加"标签" - 单独的表格或......?

Jac*_*ack 3 php mysql database database-design codeigniter

我仍然开始关注整个关系数据库 - thingymawhatsit.无论如何,我是一个PHP程序员,所以我可以做所有那些shabang.我只需要考虑这个场景的最佳方法是什么......

我正在开发一个网站(如果有任何帮助,可以使用CodeIgniter) - 一个用户可以发布内容的网站(想想一个博客风格的东西).每个帖子都必须有标签,任意数量的标签,我不能仅限于3或5.这必须是无限的.

那我该怎么办?

  1. 将标签放在同一个数据库表中的帖子旁边,即'条目'包含'post','title'和'tags'(显然是'id')
  2. 将标记放在自己的表中,并将每个标记行链接到条目('s)'id'...?
  3. ......还有别的吗?

只需要知道最好的,最逻辑的结构方式.考虑桌子彼此沟通是令人困惑的......!

哦,以及任何有任何CodeIgniter片段的人的奖励积分可能会让我继续前进;)

谢谢!

插口

Pas*_*TIN 6

基本上,您需要标签和帖子之间的nm关系:

  • 每个帖子都可以有几个标签
  • 每个标签可以对应几个帖子.


使用关系数据库,这是通过三个表完成的:

  • 一个"帖子"表,每个帖子包含一行
  • 一个"标记"表,每个标记包含一行
  • 和一个"post_tag"表,它包含一个标签和一个帖子之间相应的一行 - 这意味着每个标签有几行; 每个帖子有几行


在您的数据库中,您将拥有这三个表:

  • 岗位
    • ID
    • 标题
    • 内容
    • ...
  • post_tag
    • id_post =>帖子的外键

    • id_tag =>标记的外键

  • 标签
    • ID
    • 名称