因此,我正在尝试建立一个需要使用标记的网站(您知道,输入描述此页面的关键字)。
标签最终将存储在MySQL的一行中(php将存储它们,只是一条额外的无用信息),我们-我的团队-正在尝试找出哪种方法是最快的方法存储标签:
在相关的SQL表中有4个单独的列(考虑到我们将标签限制在4个,这是一个完全可行的解决方案)
有1列是标记的逗号分隔列表(然后我们可以选择更改限制)
本质上,考虑到我们将需要对标签执行以下操作,我们想知道哪种方法更快:
搜索单个标签或多个标签
在搜索中仅匹配完全匹配(即,标签“ truck”与标签“ firetruck”不匹配)
块标签(即用户可以搜索“景观-瀑布”)
感谢您的任何建议。
P.s.我知道this post,不,完全没有帮助
最佳答案
假设您有一个Foo表,其中包含要标记的主要内容,建议您添加一个Tag表。标签具有ID,标签字符串以及可能是描述字段,您可以在其中描述标签的实际含义。
然后创建一个名为FooTag的联接表,该表具有一个主键ID列,您要标记的Foo记录的ID,以及您用来对其进行标记的标签的ID。与Foo和Tag的外键关系,以确保完整性。
现在,您可以一次找到1到N个标签的所有记录,还可以找到Foo标记有的所有标签,依此类推。而且您不限于每个Foo四个标签。而且,您不必在任何查询中指定四个不同的列即可确定正在使用哪些标签。