【问题标题】:PostgreSQL / express rookie - create new table or just a new column in existing table? [closed]PostgreSQL / express rookie - 创建新表还是在现有表中创建一个新列? [关闭]
【发布时间】:2021-02-11 07:55:24
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: sql postgresql database-design foreign-keys many-to-many


    【解决方案1】:

    用户和帖子之间存在多对多关系。一个用户可能喜欢多个帖子,并且帖子可能会收到可能的喜欢。为了表示这种关系,您通常会创建一个桥接表,其中包含引用 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)
    );
    

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

    【讨论】:

    • 非常感谢,这有帮助。
    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 2012-11-08
    • 2021-12-12
    相关资源
    最近更新 更多