【问题标题】:Database schema sample for storing social media post用于存储社交媒体帖子的数据库模式示例
【发布时间】:2016-10-08 05:43:56
【问题描述】:
我正在建立一个小型社交网站,我对数据库架构有疑问:
我应该如何存储用户的帖子(文本)?
我将有一个单独的 POST 表,并将通过 USERS_POST 表将 USERS 表与其链接。
但是每次显示用户个人资料上的所有帖子时,系统都必须在整个 USERS_POST 表中搜索 USER id 然后显示?
我还应该做什么?
同样,我应该如何存储用户工作或学习的多个地方?
我知道它很广泛,但我是数据库新手。 :)
【问题讨论】:
标签:
sql
database
postgresql
psql
【解决方案1】:
首先不要太担心,先让它工作,看看哪里会出现性能问题。数据库可能比您预期的要快得多。此外,当您的实际查询速度太慢时,通常更容易看出最佳解决方案是什么。
关于您的设计,如果一个帖子从未链接到多个用户,则忘记 USERS_POST 表并将用户 ID 放入 POST 表中。无论哪种情况,当数据库变大时,用户 ID 上的索引都会有所帮助(因为不必读取整个表)。
单个用户的多个位置,您将存储在附加表中。例如称为 USERS_PLACES,给它一个列 user_id 以将其链接到 USERS 以及您希望在每个位置存储的数据的其他列。
顺便说一句,在 postgresql 中,您可能希望将所有对象(表、列、...)名称保持小写,因为除非您注意始终像“USERS”一样引用它们,否则 postgresql 会使它们变成小写,这可能会造成混淆。