Php 如何为博客制作n:1多标签系统&;哪个数据库模式更好?

Php 如何为博客制作n:1多标签系统&;哪个数据库模式更好?,php,mysql,database-schema,Php,Mysql,Database Schema,我想为博客及其文章创建一个标签系统;作为stackoverflow的问题标签系统 数据库结构 如果用户在输入中输入标签;假设他们输入以下标签: php mysql 数据库结构 我想了解如何将以下标记转换为数组,然后将每个标记插入新的值行,如下所示 article_Tags tag_id | article_id | tag_name 1 1 php 2 1 mysql 3

我想为博客及其文章创建一个标签系统;作为stackoverflow的问题标签系统

数据库结构 如果用户在输入中输入标签;假设他们输入以下标签:

  • php
  • mysql
  • 数据库结构
  • 我想了解如何将以下标记转换为数组,然后将每个标记插入新的值行,如下所示

    article_Tags
    
        tag_id | article_id | tag_name
           1          1          php
           2          1          mysql
           3          1          database structure
    
    我想让PHP用逗号分解每个标记,并将其分别插入一个新行值中

    我如何做到这一点?我是否需要foreach和explode()来分解每个标记


    下表结构是否比上表更好?

    Table - article
    Fields - article_id, article_title, article_content
    
    Table - article_tags
    Fields - article_id, tag_id
    
    Table - tags
    Fields - tag_id, tag_name
    

    如果是这样,如何将每个标记输入数据库,是否需要explode()以及第一个表结构?

    您的第二个结构更好。这样可以存储更少的数据

    最简单的方法是为标记表创建一个CRUD,在create post表单上显示这些标记,并在提交时相应地将所有内容插入到文章和文章标记表中

    但是,您也可以让用户使用一点JavaScript直接从post表单创建标记,然后在插入article&article_标记之前将这些标记插入db


    别忘了,无论哪种方式,你都需要检查重复的。每个示例使用10个不同的
    php
    标记没有任何意义。

    这称为多对多关系,最好创建一个中间表

    你可能会问为什么?好吧,让我们试一个例子,看看哪个更好。假设你有100篇文章,每个都有3个标签,还有30个独特的标签

    第一版:
    article_标签
    总共包含300个条目,这意味着每个标签名称平均重复10次

    第二版:
    article\u标签
    将包含相同的300个条目,但标签名称不会出现300次,而是只会在
    标签
    表中出现30次


    因此,第二个版本的重复内容较少,因此您应该继续使用。

    谢谢,我仍然在思考如何根据PHP代码采取相应的步骤。你有skype吗?对不起,现在没有时间。但是如果你以后还需要帮助,请添加我@titiomm
    Table - article
    Fields - article_id, article_title, article_content
    
    Table - article_tags
    Fields - article_id, tag_id
    
    Table - tags
    Fields - tag_id, tag_name