我正在为社交媒体设计一个类似于facebook结构的数据库。我正在使用MySQL。我们数据库的主要目标是性能,它必须处理大量请求。
我有一个用户,朋友,墙上的帖子,评论和喜欢的列表。
Q1-对于用户来说,我有几种类型的用户,我有普通用户,主管和管理员。对于该表,我正在考虑定义一个父用户表,然后继承该信息,但同时字段是相同的。 例如:
user
=============
id
username
password
email
isAtcive
country
noraml_user
===============
name
..
..
user_id
supervisor
==============
name
..
..
user_id
admin
=======
name
..
..
user_id
我因为性能而考虑了这种方法,因此我不是搜索使用用户类型的单个用户(以一百万用户为例),而是搜索(表管理员中的300K用户)。我是对的吗?
Q2-我喜欢帖子和评论。这是我的设计
posts
==========
id
content
comments
==========
id
content
post_id
posts_likes
==========
id
post_id
user_id
comment_likes
==========
id
comment_id
user_id
你认为这是正确的,或者我只是为以下的喜欢制作一个表
likes
=========
id
post_id(nullable)
comment_id(nullable)
user_id
什么是最好的方法?
问题3 - 您能否为我提供一些设计社交网络数据库的技巧?
谢谢:)
答案 0 :(得分:1)
Q1:您不应为不同的用户类型创建单独的表。实际上,您应该在公共用户表中具有用户角色列。然后,此角色将定义用户可以执行的操作。索引的重点是有效地查找表的子集。
Q2:再次,你可能会发现你有内容和喜欢(甚至可能是“反应”)。除非有特定的理由让帖子保持特殊,否则它们实际上只是没有父母的内容。
问题3:是的,这样就可以为这样的网站提出广泛的问题。