Php 指数数据库关系

Php 指数数据库关系,php,database,symfony,doctrine-orm,social-networking,Php,Database,Symfony,Doctrine Orm,Social Networking,我是在Symfony和Doctrine 2下开发的,希望您能就如何构建我的数据库(mysql)来作为一种共享信息(文章)的社交网络平台提供建议。考虑到文章数量庞大且不断增加,与之相反的是: -作者可以从其成员列表中共享任意多个特定用户的文章 -任何接收者也可以决定从自己的成员列表中将文章转发给特定用户 -对于每一篇文章,作者或接收者的成员选择可能会有所不同(目标取决于其对文章的可能兴趣) 与多对多关系链接的A/Article和User表 我首先考虑的是这种架构,但行的数量可能相当大。考虑到一个用

我是在Symfony和Doctrine 2下开发的,希望您能就如何构建我的数据库(mysql)来作为一种共享信息(文章)的社交网络平台提供建议。考虑到文章数量庞大且不断增加,与之相反的是: -作者可以从其成员列表中共享任意多个特定用户的文章
-任何接收者也可以决定从自己的成员列表中将文章转发给特定用户 -对于每一篇文章,作者或接收者的成员选择可能会有所不同(目标取决于其对文章的可能兴趣)

与多对多关系链接的A/Article和User表 我首先考虑的是这种架构,但行的数量可能相当大。考虑到一个用户可能有1000个连接(成员),如果他的一些成员决定将文章转发给其他人,则仅一篇文章的行数可能达到一百万行

B/以长文本列作为关系的文章表 然后我考虑用一个文本列填充文章数据库,我将用接收者的用户ID填充该列…但是这个列同样可以获得一百万个ID…。当用户连接时,我必须在长文本列中请求Select*Where UserIn


解决方案B是否合适?您将如何处理这种情况?

如果我理解正确,您有一个articles表和user表。您想将文章链接到用户。

简单的方法是使用链接表链接它们:

TABLE `Link` (
  `Article` ,
  `User` 
 )

这就是你的建议。没有比这更有效的方法了。

Hi。谢谢你的回答。这是我的第一个想法;但是由于可以转发给其他人的用户的数量,它可能会以指数形式达到大量的行。。。。假设一个用户有200个朋友,他们每个人都转发给他们的200个朋友。我将有:选项A:文章id |用户id A | 1 A |。。。a | 200 b | x c | y a | 210 a |。。。a | 40000(200x200)选项B:article id | user|u id(在长文本列中)a | 1,2,3,4…4000b | x,x'c |最终,您仍然必须将信息存储在某个位置。没有指数。不管谁引用了这篇文章,只有一篇文章和一个用户可以链接。没有重复的。如果你想保持与“继电器”的关系,那就需要更多。如果需要的话,可以添加一个推荐人栏。