Php Facebook时间线系统在数据库上应该是什么样子的?

Php Facebook时间线系统在数据库上应该是什么样子的?,php,mysql,database-design,Php,Mysql,Database Design,我如何存储用户的“帖子”?这样我就可以有效地从数据库中获取它们,然后在请求特定用户页面时按时间顺序处理它们以显示它们 我是否将所有用户的所有帖子存储在一个表中,如下所示: Post ID | Poster ID | Post Content | Posted to this Users Wall | Post Timestamp 然后,当用户打开UserFoo的页面时,我只会得到发布到此Users Wall=UserFoo的所有行 上面的示例不会让一张表变得笨重吗?用户 id | name |

我如何存储用户的“帖子”?这样我就可以有效地从数据库中获取它们,然后在请求特定用户页面时按时间顺序处理它们以显示它们

我是否将所有用户的所有帖子存储在一个表中,如下所示:

Post ID | Poster ID | Post Content | Posted to this Users Wall | Post Timestamp
然后,当用户打开UserFoo的页面时,我只会得到发布到此Users Wall=UserFoo的所有行

上面的示例不会让一张表变得笨重吗?

用户

id | name |
posts

|  id   |   u_id    |   content    |
wall

| id   |   u_id    |  post_id    |
posts
中的u_id是users.id,它是作者所在的位置

来自
wall
的u_id是目标所在的users.id(墙上张贴的内容)

您可以更清楚地命名它,即海报id、目标id


另一种方法是

post

| id | poster_id |
wall

| id | post_id  | target_id |
内容

|  post_id | content |
您还可以在另一个表或
post
表中的列中添加其他特定内容,例如,如果帖子是注释或其他内容


用户

id | name |
posts

|  id   |   u_id    |   content    |
wall

| id   |   u_id    |  post_id    |
posts
中的u_id是users.id,它是作者所在的位置

来自
wall
的u_id是目标所在的users.id(墙上张贴的内容)

您可以更清楚地命名它,即海报id、目标id


另一种方法是

post

| id | poster_id |
wall

| id | post_id  | target_id |
内容

|  post_id | content |
您还可以在另一个表或
post
表中的列中添加其他特定内容,例如,如果帖子是注释或其他内容



你建议的布局看起来很合理。 5列(四列
INT
,一列
TEXT
)完全不是一个“庞大”的表格

如果您有适当的索引,那么查询
WHERE“Posted to this Users Wall”=“UserFoo”
实际上是即时的


对于您的目标查询(按时间顺序显示发送到当前用户墙上的帖子),最好的索引可能位于
(发布到此用户墙上,贴子时间戳)
(两列索引)。

您建议的布局看起来合理。 5列(四列
INT
,一列
TEXT
)完全不是一个“庞大”的表格

如果您有适当的索引,那么查询
WHERE“Posted to this Users Wall”=“UserFoo”
实际上是即时的


对于您的目标查询(按时间顺序显示发送到当前用户墙的帖子),最好的索引可能位于
(发布到此用户墙,Post Timestamp)
(两列索引)。

为帖子内容创建单独的表,然后为帖子关系创建另一个表。一个也适用于用户(假设您有一个)。Post关系应该像PostID、PosterID、POSTERSONSWALLID一样。@raeq实际上实际的表应该有一个关系数据库结构,我想指出的是“facebook有十亿用户。所有这些帖子都存储在一个表中?”但当然,部分内容存储在不同的表中,比如帖子的详细信息是一个表,目的地是另一个表,等等。但同样,“facebook有10亿用户。所有这些帖子都存储在一个表中?”嗨,你所说的“发布到此用户墙”属性是什么意思?它只存储一个“这个用户”?感谢为帖子内容创建一个单独的表,然后为帖子关系创建另一个表。一个也适用于用户(假设您有一个)。Post关系应该像PostID、PosterID、POSTERSONSWALLID一样。@raeq实际上实际的表应该有一个关系数据库结构,我想指出的是“facebook有十亿用户。所有这些帖子都存储在一个表中?”但当然,部分内容存储在不同的表中,比如帖子的详细信息是一个表,目的地是另一个表,等等。但同样,“facebook有10亿用户。所有这些帖子都存储在一个表中?”嗨,你所说的“发布到此用户墙”属性是什么意思?它只存储一个“这个用户”?在提取一个单独的<代码>帖子实体时,感谢+ 1提供了更多的灵活性,我想在一个单独的表中移动POST内容是一个多余的。+ 1在提取一个单独的<代码> POST 实体时,提供了更多的灵活性,我认为在一个单独的表中移动POST内容是一个过激的行为。