首页 > 解决方案 > PostgreSQL / express rookie - 创建新表还是在现有表中创建一个新列?

问题描述

这可能会因为基于意见而关闭,但希望我能得到一两条评论。

我正在构建一个社交媒体应用程序(Express/Postgres/React),其中包含发布、交友等功能。我发现了一些启动 Postgres 代码,可以为用户、帖子和关注者创建具有相关约束的表,并且效果很好。

当我扩展它时,从广义上讲,我正在努力解决的问题是知道何时为某事创建一个新表,以及何时将该数据存储在现有表中的新列中。例如,“喜欢”——如果一个人喜欢一个帖子,我是否要在帖子表中添加一个“喜欢”列并将 user_ids 存储在那里?或者,我是否创建一个专用的“喜欢”表并存储用户 ID 和帖子 ID。

在某些情况下,这两种方式都有效,但我担心我会选择一个,充实它并意识到我需要另辟蹊径,或者被一种性能较差的方法所困。

标签: sqlpostgresqldatabase-designforeign-keysmany-to-many

解决方案


用户和帖子之间存在多对多的关系。一个用户可能喜欢多个帖子,并且帖子可能会收到可能的喜欢。为了表示这种关系,您通常会创建一个桥表,其中包含引用 users 和 posts 表的外键。

所以:

create table likes (
    user_id int references users(user_id),
    post_id int references posts(post_id),
    primary key (user_id, post_id)
);

您可能希望在表格中添加更多列,例如帖子被点赞的日期。


推荐阅读