Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从逻辑上考虑数据库结构:添加';标签';用户发布的东西-单独的表格还是。。。?_Php_Mysql_Database_Database Design_Codeigniter - Fatal编程技术网

Php 从逻辑上考虑数据库结构:添加';标签';用户发布的东西-单独的表格还是。。。?

Php 从逻辑上考虑数据库结构:添加';标签';用户发布的东西-单独的表格还是。。。?,php,mysql,database,database-design,codeigniter,Php,Mysql,Database,Database Design,Codeigniter,我仍然在想整个关系数据库的事情。无论如何,我是一个PHP程序员,所以我可以做所有的沙邦。我只需要想一想,对于这种情况,什么是最好的方法 我正在开发一个网站(如果有帮助的话,可以使用CodeIgniter)——一个用户可以发布内容的网站(想想博客风格的东西)。每个帖子都必须有标签,任何数量的标签,我不能只局限于3或5个。这必须是无限的 那么我该做哪一个呢 将标签放在同一数据库表中的帖子旁边,即“条目”包含“帖子”、“标题”和“标签”(显然还有“id”) 将标记放在它们自己的表中,并将每个标记行链接

我仍然在想整个关系数据库的事情。无论如何,我是一个PHP程序员,所以我可以做所有的沙邦。我只需要想一想,对于这种情况,什么是最好的方法

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

那么我该做哪一个呢

  • 将标签放在同一数据库表中的帖子旁边,即“条目”包含“帖子”、“标题”和“标签”(显然还有“id”)
  • 将标记放在它们自己的表中,并将每个标记行链接到一个条目('s'id')
  • …完全是别的吗
  • 只需要知道做这件事的最佳、最合理的方法。考虑到桌子之间的相互交流已经够让人困惑的了

    哦,任何人只要有任何CodeIgniter代码片段,都可以获得额外的积分,这可能会让我在路上一帆风顺;)

    谢谢


    杰克

    你想要多对多的关系。这在数据库中由三个表建模:

    • 职位
    • 标签
    • 标签

    PostTag包含Post表和Tag表的外键。每个帖子上的每个标签都有一行。

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

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

    使用关系数据库,可通过三个表完成此操作:

    • 一个“post”表,每个post包含一行
    • “标记”表,每个标记包含一行
    • 还有一个“post_tag”表,它在一个标记和一个post之间的对应关系中包含一行,这意味着每个标记有几行;每个帖子有几行

    在数据库中,您将拥有以下三个表:

    • 职位
      • 身份证
      • 头衔
      • 内容
    • 邮政标签
      • id_post=>post的外键
      • id_tag=>标记的外键
    • 标签
      • 身份证
      • 名字

    @马克:当然可以;我编辑了我的答案来纠正这个问题;谢谢你的评论:-)谢谢帕斯卡·马丁!非常有帮助,非常感谢:)谢谢大家的建议,你们都是明星!不过,我想我需要使用InnoDB来让整个外键工作起来?相关的,还有-谢谢戈登!非常有用:)