PostgreSQL / Express新秀-创建新表还是在现有表中创建新列?

问题描述

这可能会因为基于意见而封闭,但希望我能发表一两个评论。

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

在我进行扩展时,从广义上讲,我一直在苦苦挣扎的是,知道何时为某事物创建新表以及何时仅将数据存储在现有表的新列中。例如,“喜欢”-如果某人喜欢某个帖子,是否要在该帖子表中添加一个“喜欢”列并在其中存储user_id?或者,我是否创建专用的“喜欢”表并存储用户ID和帖子ID。

这两种方法在某些情况下都可行,但我担心我会选择一种方法,充实它,并意识到我需要采用另一种方法,或者陷入一种性能较低的方法中。

解决方法

您与用户和帖子之间存在多对多关系。用户可能喜欢多个帖子,而帖子可能会喜欢。为了表示这种关系,通常会创建一个桥表,并使用引用用户表和帖子表的外键。

所以:

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

您可能想在表格中添加更多列,例如喜欢该帖子的日期。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...