用于存储社交媒体的数据库模式示例 post

Database schema sample for storing social media post

我正在构建一个小型社交网站,我对数据库架构有疑问:

我应该如何存储用户的帖子(文本)?

我将有一个单独的 POST table 并将 link 用户 table 通过 USERS_POST table。

但是每次要显示用户个人资料上的所有帖子,系统都必须在整个 USERS_POST table 中搜索 USER id,然后显示?

我还应该做什么?

同样,我应该如何存储用户工作或学习的多个地点?

我知道它很广泛,但我是数据库的新手。 :)

首先不要太担心,先让它工作,然后看看你在哪里遇到性能问题。数据库可能比您预期的要快得多。此外,当您的实际查询速度太慢时,通常更容易找出最佳解决方案。

关于您的设计,如果 post 永远不会 link 发送给超过一个用户,那么请忘记 USERS_POST table 并将用户 ID 放在 POST table。在任何一种情况下,当数据库变大时,用户 ID 上的索引都会有所帮助(因为不必读取整个 table)。

单个用户的多个位置,您将存储在额外的 table 中。例如称为 USERS_PLACES,给它一个 user_id 到 link 的列给 USERS 加上其他列,用于您希望每个地方存储的数据。

顺便说一句,在 postgresql 中,您可能希望将所有对象(tables、列、...)名称保留为小写,因为除非您始终注意引用它们,例如 "USERS" postgresql 会将它们变为小写,这可能会造成混淆。