关于 QQ 好友数据库设计

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

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

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

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

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

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

建议建2个表

个人表user

(id,qq)id

为序列,qq为存放你自己的qq号码,这样你有几个qq号就有几列

好友表friend

(id,friend_qq,userid)id同样为序列,为以后业务扩充做准备,friend_qq

为好友的qq号,userid为个人表

user

的id,

这样2表通过userid连接,

select

*

from

friend

b,user

a

where

a.id=b.userid

and

a.qq=?????

就可以查出你的某个qq号对应的所有好友

1.用户表

列:id, 姓名, 等

2.分组表

列:id, 组名, 用户id

3.好友表

列:id, 好友id, 分组id

示例:

1.用户1 创建新分组"我的好友"

INSERT INTO 分组表 (组名, 用户id) VALUES('我的好友', 1)

2.用户1 将 用户2 添加到"我的好友"

INSERT INTO 好友表 (好友id, 分组id) VALUES(2, (SELECT id FROM 分组表 WHERE 组名='我的好友' AND 用户id=1))

3.查询 用户1 "我的好友" 分组下的全部好友

SELECT id, 姓名 FROM 用户表

WHERE id IN(

SELECT id FROM 好友表 JOIN 分组表 ON 好友表.分组id=分组表.id

WHERE 分组表.组名='我的好友' AND 分组表.用户id=1

)


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

原文地址: http://outofmemory.cn/sjk/10815516.html

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

发表评论

登录后才能评论

评论列表(0条)

保存