我将为社交网络样式的网站构建一个MySQL数据库,其中用户关注其他用户,然后从其用户获得更新。构建追随者/关注MySQL数据库的最佳实践
我的DB是由一个表与用户的基本信息构成:
| ID | username | password | email | ... other few columns |
的“ID”是主要的,“用户名”和“电子邮件”是独特的和索引。
然后我有用户饲料的表应该如果另一个用户按照它只能显示,“ID”始终是主要的:
| ID | feed_to_show_in_home |
然后与跟随者统计数据的表格,以加快用户的个人资料页:
| ID | followers_count | following_count |
而且至少真正的追随者网表存储在那里谁跟着谁:
| ID | following |
在此表中,“ID”和“跟随”都是主要的,因为用户只能跟随其他用户一次。
现在我想问一下,从性能的角度来看,我的结构是否良好。我特别担心如何检查用户是否关注其他用户,停止关注用户,以及如何仅在我关注特定用户时才显示供稿。
在这种情况下,我想到的解决方案总是扫描整个表的长度,但我认为这不是一个好的选择,因为这个DB计划存储超过10,000个用户。
感谢您提供'EXPLAIN'提示。你认为作为一个开始的项目足够使用MySQL而不是图形数据库吗? – Philip
当然。这并不是真的依赖于特定的DBMS。即使在生产环境中,我也喜欢MySQL,但它忽略了例如'CHECK'约束,您必须手动强制执行此操作。所以我不断放弃它的使用。这对草图来说绝对可以。对于图形数据库,您必须习惯其他查询语言,例如neo4j中的Cypher。所以当你从关系图移植到图时,你将面临更多的努力。 –