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 在Mysql中实现关键字或标记的最佳方法_Php_Mysql_Tags - Fatal编程技术网

Php 在Mysql中实现关键字或标记的最佳方法

Php 在Mysql中实现关键字或标记的最佳方法,php,mysql,tags,Php,Mysql,Tags,所以我有一个食谱数据库,我想把关键词或标签和每顿饭联系起来,比如 如“中文”、“意大利语”、“低卡”等。 用户从不提交关键字,所以我有完全的控制权。 你认为下列哪项是最好的方法 A) 我可以在用餐表中的一列中填入关键字,后跟逗号。 意大利语、Health等。然后我可以从一行一列中获取结果,然后使用PHP解析结果并执行繁重的操作 B) 我可以有一个关键字表,每行包含一个关键字,然后是一个关键字。然后,我可以查询具有该id的所有关键字 或者有没有更好的方法来实现关键字,比如全文???当然要使用B。这

所以我有一个食谱数据库,我想把关键词或标签和每顿饭联系起来,比如 如“中文”、“意大利语”、“低卡”等。 用户从不提交关键字,所以我有完全的控制权。 你认为下列哪项是最好的方法

A) 我可以在用餐表中的一列中填入关键字,后跟逗号。 意大利语、Health等。然后我可以从一行一列中获取结果,然后使用PHP解析结果并执行繁重的操作

B) 我可以有一个关键字表,每行包含一个关键字,然后是一个关键字。然后,我可以查询具有该id的所有关键字


或者有没有更好的方法来实现关键字,比如全文???

当然要使用B。这是更规范化的选项,也是最容易使用的。否则,您的代码将不得不解析查询结果。

一定要使用B。这是更规范化的选项,也是最容易使用的选项。否则,您的代码将不得不解析查询结果。

我肯定会使用一个单独的关键字表来确保您的数据库规范化。

我肯定会使用一个单独的关键字表来确保您的数据库规范化。

如果您使用关键字表示类似标签的内容,这在许多网站上都会使用,这里是StackOverflow的例子。那你就有三张桌子了。一张桌子上有餐食,一张桌子上有关键字,还有一张桌子把它们链接在一起。通过这种方式,您可以通过简单的SQL查询有效地列出与某个关键字相关联的所有膳食。

如果您使用的关键字指的是标签之类的东西,在许多网站上都会使用,例如在StackOverflow上。那你就有三张桌子了。一张桌子上有餐食,一张桌子上有关键字,还有一张桌子把它们链接在一起。这样,您就可以通过简单的SQL查询高效地列出与某个关键字相关联的所有膳食。

B更适合于按标记搜索的时间,因为这将是一项微不足道的任务。有了A,你必须更加努力地工作。此外,使用B,您始终可以通过使用GROUP_CONCAT(标记)获得通信分隔的标记。

B更适合于按标记搜索的时间,因为这将是一项微不足道的任务。有了A,你必须更加努力地工作。此外,使用B,您始终可以使用GROUP_CONCAT(tag)

获得通信分隔标签。您是否需要搜索具有该关键字的所有膳食?是的,它必须匹配具有该关键字的任何膳食,然后我将向用户显示与之关联的膳食。您是否需要搜索具有该关键字的所有膳食?是,它必须将任何膳食与该关键字匹配,然后我将向用户显示与它们相关联的膳食。是的。实际上这是你最好的选择。这创造了一种多对多的关系,减少了冗余。有这么多好的答案,但我喜欢克里斯托弗的解释。我一直在考虑这条路线,但咨询专家总是很好的!对实际上这是你最好的选择。这创造了一种多对多的关系,减少了冗余。有这么多好的答案,但我喜欢克里斯托弗的解释。我一直在考虑这条路线,但咨询专家总是很好的!假设选项B的关键字表示另一个关键字表的ID。我不认为这是他的意思,但我同意。最好的答案是在
fine
keyword
之间建立一个关联表,比如
fine\u关键字
,其中包含
fine
keyword
的ID。前提是对于选项B,关键字意味着另一个关键字表的ID。我不认为这是他的意思,但我同意。最好的答案是在
fine
keyword
之间建立一个关联表,比如
fine\u关键字
,其中包含
fine
关键字的ID。