sql - PostgreSQL / express rookie - 创建新表还是在现有表中创建一个新列?
问题描述
这可能会因为基于意见而关闭,但希望我能得到一两条评论。
我正在构建一个社交媒体应用程序(Express/Postgres/React),其中包含发布、交友等功能。我发现了一些启动 Postgres 代码,可以为用户、帖子和关注者创建具有相关约束的表,并且效果很好。
当我扩展它时,从广义上讲,我正在努力解决的问题是知道何时为某事创建一个新表,以及何时将该数据存储在现有表中的新列中。例如,“喜欢”——如果一个人喜欢一个帖子,我是否要在帖子表中添加一个“喜欢”列并将 user_ids 存储在那里?或者,我是否创建一个专用的“喜欢”表并存储用户 ID 和帖子 ID。
在某些情况下,这两种方式都有效,但我担心我会选择一个,充实它并意识到我需要另辟蹊径,或者被一种性能较差的方法所困。
解决方案
用户和帖子之间存在多对多的关系。一个用户可能喜欢多个帖子,并且帖子可能会收到可能的喜欢。为了表示这种关系,您通常会创建一个桥表,其中包含引用 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)
);
您可能希望在表格中添加更多列,例如帖子被点赞的日期。
推荐阅读
- json - 为字节类型创建示例 Avro 数据
- java - Oracle Text optimize query for a Google like search bar
- jenkins - testcafe 的 CI CD 管道 - testcafe 的 Jenkinsfile
- sas - Extract the second occurrence of the string in SAS
- python - Keyboard module doesn't work in a tkinter Gui
- c# - 使用 NServiceBus 进行持久性的正确用法是什么?
- excel - CSV 保存文件中的字符
- cplex - Getting the number of branch and bound nodes explored CPLEX
- javascript - Verdaccio crash with Error [ERR_STREAM_DESTROYED]: Cannot call write after a stream was destroyed
- sql-server - 存储过程中的自动递增变量