关于 QQ 好友数据库设计

关于 QQ 好友数据库设计,第1张

针对sql server数据库来说(sql server比mysql好一些,比oracle差),如果有一个万个用户就一万张表。数据库对表数量的支持也是有限制的。

并且创建表需要有相应的级别比较高的权限,如果每注册一个用户就新建一张表,用户的权限太高了。

再次,按照你的说法,一个人假设有1000个好友,每个表也就1000条数据,相对于数据库来说,这个存储量是相当小的,没有发挥到很好的性能。sql server数据库几百万万条数据是没问题的。

最后,这样查询可能会带来方面之处,但是如果用到了存储过程,复杂的联合查询等(这些都是在数据库中常用的),你这样做就很难完成了。

所以,为何不把这些数据集中到一张表里面呢?

好友关系是双向的:user1 >user2与 user2 >user1是重复的。目前业务很简单就是好友关系。预想4个字段解决:id(自增)to_user(添加用户)

form_user(被添加用户)relation(用户关系)0:好友 1:拉黑但是还是想来问问看,想多了解一下相关的思路。

3种解决方法,也谈谈这三种的弊端吧!

方法:

一.每创建一个用户.自动创建一个该用户的好友用户表.每一行的记录是一个好友记录.

二.做一个Frient的表,表中有两列,第一列UID是用户ID,第二列FID是对应该用户的好友

三,在用户信息的表中,有一个字段10000长度的varchar 里边用','号分割各个好友的ID

弊端:

一:只适合少量的用户论坛,如果有100万个注册用户,就得有100万张好友表,这样当用户一多,数据库会很大!

二:这种方法是给用户注册表创建一张好友关联表,这样或许是这三种方法中最好的方式了吧,但是注意记得要添加索引,不然查询起来,数据一多,会非常慢;

三、这样在程序方面会比较麻烦,先取出来,后添加数据,再update,感觉速度会上不来...........


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10824930.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-11
下一篇2023-05-11

发表评论

登录后才能评论

评论列表(0条)

    保存