gpt4 book ai didi

mysql - 每个用户喜欢的帖子的单独表格 - 实用与否?

转载 作者:搜寻专家 更新时间:2023-10-30 22:30:25 24 4
gpt4 key购买 nike

在我制作的社交网站中,我需要一些方法来存储用户“喜欢”了哪些帖子,以确保他们只能“喜欢”每个帖子一次。我有几个想法。

  • 为每个用户创建一个单独的表,以将他们喜欢的所有不同帖子的 ID 作为行存储在所述表中。
  • 以空格分隔的帖子 ID 字符串,作为表 users 中的一个字段。

  • 每个帖子都有一个单独的表,将喜欢该帖子的所有不同用户的 ID 存储为表中的行。

请注意,users 是一个包含网站所有用户及其 ID、用户名等的表格。

-

最初我喜欢为每个用户创建一个单独的表的想法,但我意识到这可能比它的值(value)更麻烦。

所以我认为 users 中每一行的空格分隔字符串可能是个好主意,因为我不必开始处理更多的表(这可能会使事情复杂化),但是我感觉使用空格分隔的字符串会比使用额外的表更能降低性能,尤其是在用户数量较多的情况下。

基本上我的问题是:在上述确保用户只能喜欢帖子一次的方法中,哪种方法最实用?

最佳答案

这些听起来都不是特别好的想法。

通常,必须动态创建表,无论是针对用户还是帖子,都是一个坏主意。它不仅会使您的 SQL 生成复杂化,还会使数据字典中包含大量对象并使维护数据库比应有的复杂得多。

逗号分隔的字符串也不是一个好主意。它打破了1NF将使您的查询复杂化(或更糟 - 让您编写正确的代码!)以维护它。

理智的方法是使用一个表来关联用户和帖子。每行将包含一个用户 ID 和他喜欢的帖子的 ID,并在两者上创建一个复合主键将确保用户不能对帖子点赞两次:

CREATE TABLE user_post_likes (
user_id INT, -- Or whatever you're using in the users tables
post_id INT, -- Or whatever you're using in the posts tables
PRIMARY KEY (user_id, post_id),
FOREIGN KEY (user_id) REFERENCES user(id),
FOREIGN KEY (post_id) REFERENCES post(id)
);

关于mysql - 每个用户喜欢的帖子的单独表格 - 实用与否?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44607587/

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