Elf*_*lfy 8 sqlite many-to-many
我有一个"帖子"表.每个帖子记录可以有一个或多个标签.如果我将标记存储到单个列中,作为逗号分隔的字符串,我可以轻松找到标记为"Abc"并标记为"Def"的帖子,甚至可以进行部分匹配.
我正在使用sqlite和这个方法的"FTS"表,它工作正常,但有人告诉我这是一个不好的做法,我应该将标签存储在另一个表中并使用JOIN.如果我将标记存储在不同的表中并在这两个表之间创建关系,如何在单个查询中找到标记为"Abc"和标记为"Def"的帖子?可能吗?
小智 0
如果您想标准化您的数据库,我肯定会将此信息拆分为多个表。我编写了一个架构和一些示例查询,展示了如何提取数据。您可以在这里查看:http://sqlfiddle.com/#!9/48ebb /15
基本上你会有 3 个表:
这样,您就不会重复存储相同的标签信息。
最后,这是来自上面发布的 sqlfiddle 的示例查询:
-- find all posts with the tags associated with them
SELECT DISTINCT POST.*, GROUP_CONCAT(tagName SEPARATOR ', ') AS associatedTags
FROM POST
INNER JOIN POSTTAGS ON POST.postId = POSTTAGS.postId
INNER JOIN TAG ON TAG.tagId = POSTTAGS.tagId
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
124 次 |
最近记录: |