8

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

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

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

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

4

4 回答 4

9

你可以做什么的小例子:

用户

users
--------
id
name

评论

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');

然后,当您选择要在用户个人资料上显示的评论时,只需将posted_by 和posted_to 列与用户表中的相关ID 连接起来。

于 2013-10-16T10:17:18.273 回答
0

我猜他们有一张包含所有帖子和 post_id 的表格。然后他们有另一个包含所有评论的表格。在comments_table 中,他们有一行带有post_id,因此他们可以分配它。

所以,

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

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

简单示例 更新

帖子表

post_id | user_id | status_text | datetime

评论表

comments_id | user_id | post_id | comments_text | datetime
于 2013-10-16T10:12:08.097 回答
0

我想发表评论,你试试这个表,它是视频歌曲的表,它收集了一个带有轨道 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  
于 2013-10-16T10:42:48.720 回答
0

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

于 2013-10-16T13:09:02.277 回答