【问题标题】:Database structure of Facebook to store comments and post? [closed]Facebook的数据库结构来存储评论和帖子? [关闭]
【发布时间】:2013-10-24 09:39:40
【问题描述】:

我将创建简单的社交网站。 所以...我想知道 Facebook 如何为帖子存储 cmets。

是 Facebook 将 Posts 及其 cmets 存储在同一数据库表行中, 然后他们如何将一长串 cmets 存储在一个表行字段中。 还是每个帖子都有每个数据库表,以便可以在该表行中创建该帖子的 cmets。

对于像 CMS 这样的简单社交网站来说,最好的数据库结构是什么。 但它可以处理大量用户。

请在这件事上帮助我。 谢谢。

【问题讨论】:

  • “是 facebook 将帖子及其 cmets 存储在同一数据库表行中”它永远不会发生。他们有用于 cmets 和 post 的不同表(我认为)

标签: javascript php mysql facebook social-networking


【解决方案1】:

你可以做什么的小例子:

用户

users
--------
id
name

cmets

comments
--------
id
comment_text
posted_by
posted_to
date_posted

当 ID 为 342 的用户向用户 783 的个人资料发表评论时,您可以像这样存储评论:

INSERT INTO comments(comment_text, posted_by, posted_to, date_posted) 
VALUES ('Hi!', 342, 783, '2013-10-16 11:17:00');

然后,当您选择 cmets 以显示在用户的个人资料中时,只需将 posted_by 和 posted_to 列与 users 表中的相关 id 连接起来。

【讨论】:

  • 您不应该将post_id 存储在posted_to 列中吗?
  • @Peter 我确实忘记将 date_posted 列添加到我的插入语句中。 posted_to 应该是发布评论的用户个人资料的唯一 ID。
【解决方案2】:

我猜他们有一张包含所有帖子和 post_id 的表格。然后他们有另一张桌子,里面有所有的 cmets。在 cmets_table 中有一行带有 post_id 以便他们可以分配它。

所以,

每个帖子都有一个带有状态文本的 post_id,写它的用户的 id 等。 并且每条评论都有一个comment_id和一个post_id来分配给帖子。

这就是我的猜测。不过我不能肯定地告诉你。

简单的例子 更新

帖子表

post_id | user_id | status_text | datetime

cmets 表

comments_id | user_id | post_id | comments_text | datetime

【讨论】:

    【解决方案3】:

    我想你试试这张桌子发表评论 用于视频歌曲的 it 表,它收集具有轨道 ID 名称的列

                  CREATE TABLE `tbl_video_comments` (                       
                      `comment_id` int(11) NOT NULL AUTO_INCREMENT,           
                      `user_name` varchar(20) DEFAULT NULL,                   
                      `track_id` int(11) NOT NULL,                            
                      `datetime` datetime NOT NULL,                           
                      `comment` varchar(100) NOT NULL,                        
                      PRIMARY KEY (`comment_id`)                              
                    ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1  
    

    【讨论】:

      【解决方案4】:

      您现在只需要关系和三个表。只需将用户 ID 作为主键保留在用户表中,并在您创建的每个表中将其设为外键。这将帮助您根据用户 ID 获取所有内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-12
        • 2018-01-06
        • 2012-08-22
        • 2019-07-31
        • 2012-02-07
        • 2020-03-08
        • 2018-08-17
        相关资源
        最近更新 更多