3

我目前正在尝试创建一个chat program针对1000-1500个用户的目标。我想知道我是否应该为每个用户创建一个单独的表,例如在每个user用户朋友、消息的表中,或者应该只创建一个包含所有表并将所有内容存储在那里,因为哪个解决方案会更多efficient?我相信multiple为每个用户的个人详细信息设置表格可以more efficient使我运行的大多数查询都在具有少量数据的表格上运行。

如果我错了,谁能告诉我?

4

2 回答 2

1

你大错特错。理想的方式应该是为用户提供一个表。即使对于像 ebay 这样拥有数百万用户的公司也是如此;这些用户的分布方式就像在单个表中以 A 开头的所有用户一样......正如@Matt 提到的,我们无法创建 x 不是有界数字的表。

除了该表,您还可以有一个表 Messages ,该表将有一个 UserName 列,该列将是指向您的用户表的外键。

最干净的解决方案对于维护朋友列表可能有点棘手。一种解决方法可以是在 User 表中有一个列,该列将具有以逗号分隔的 Friends id(它们又是同一张表中的用户)。如果您不希望对好友列表进行任何限制:您可以创建另一个表 Friends,其中包含两列 userid、friendId。这两列都将是 User 表上的外键。现在,查询将很简单select * form Friends where userid=<user>。这张桌子可能很大;但这就是索引出现的地方。您可以在 userid 列上创建索引,即使有很多记录,查询结果也会非常快。

于 2013-01-28T05:09:41.630 回答
1

为每个用户设置一个表是一种不好的方法,您可以为每个用户准确保存一个文本文件,您不需要为此使用数据库,使用 ddatabase 的想法是建立实体之间的关系,因此您拥有主要的/外键,通常每个实体都需要一个表,有时2个实体需要3个表,具体取决于基数。在您的情况下,例如用户表、消息表、messageUser 表和好友或联系人表等是正常的,其中好友将存储作为好友连接的 UserIds,而消息一个是 messageId<->UserId 元组,其中将消息匹配到用户等等。

于 2013-01-28T05:11:59.497 回答