gpt4 book ai didi

mysql - 处理表格的困境?

转载 作者:行者123 更新时间:2023-11-29 04:57:54 28 4
gpt4 key购买 nike

我有这个逻辑问题,在创建 mysql 表方面,让我解释一下场景:

我有一个帖子表:

Posts{id, user_id,image,tag,date}

每篇文章只能有一个标签!只有

我需要另外一个表来存储标签吗!我可以理解,如果每个帖子都有多个标签,您必须为其创建另一个表来存储标签!但仅此而已!

如果我想获取带有“DOG”标签的所有帖子,我会使用:

select all posts where tag=DOG

你认为这是错误的还是不好的?我很困惑!

最佳答案

如果您系统中的帖子真的只需要一个标签,那么技术上您只需将标签保存在帖子记录中即可。不过,您不应该这样做:例如,当您有 250000 条关于狗的帖子并决定将“狗”标签重命名为“犬”时会发生什么?

更好的想法是创建一个 Tag 表并在 Post 表上放置一个指向它的外键。例如:

Post{post_id, user_id, image, tag_id, date}
Tag{tag_id, description}

但以防万一有一天您真的遇到一个帖子可以有多个标签的场景...

然后你描述了一个模型,其中 PostsTags 存在于所谓的 Many-to-Many relationship 中。 : 给定的标签可以与任意数量的帖子相关联,并且给定的帖子可以与任意数量的标签相关联。

现在您不仅需要一个单独的标签表,还需要一个将帖子与标签相关联的关系表。例如:

Post{post_id, user_id, image, date}
Tag{tag_id, description}

Post_Tag{post_id, tag_id}

然后您将选择所有带有“狗”标签的帖子,如下所示:

SELECT p.*
FROM Post p
JOIN Post_Tag pt ON pt.post_id = p.post_id
JOIN Tag t ON pt.tag_id = t.tag_id
WHERE t.description = 'Dog'

关于mysql - 处理表格的困境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4788591/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com