Facebook的数据库结构来存储评论和帖子? [关闭]
Posted
技术标签:
【中文标题】Facebook的数据库结构来存储评论和帖子? [关闭]【英文标题】:Database structure of Facebook to store comments and post? [closed] 【发布时间】:2013-10-24 09:39:40 【问题描述】:我将创建简单的社交网站。 所以...我想知道 Facebook 如何为帖子存储 cmets。
是 Facebook 将 Posts 及其 cmets 存储在同一数据库表行中, 然后他们如何将一长串 cmets 存储在一个表行字段中。 还是每个帖子都有每个数据库表,以便可以在该表行中创建该帖子的 cmets。
对于像 CMS 这样的简单社交网站来说,最好的数据库结构是什么。 但它可以处理大量用户。
请在这件事上帮助我。 谢谢。
【问题讨论】:
“是 facebook 将帖子及其 cmets 存储在同一数据库表行中”它永远不会发生。他们有用于 cmets 和 post 的不同表(我认为) 【参考方案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 获取所有内容。
【讨论】:
以上是关于Facebook的数据库结构来存储评论和帖子? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Mysql - 正确排序 Facebook 帖子、评论和回复
移动应用帖子的 Facebook 洞察中的空故事点击、喜欢和评论