我们讨论一下 每个QQ有很多不同好友,数据库如何设计会更方便?

bear63 2014-07-09 11:41:30
我们讨论一下 每个QQ有很多不同好友,数据库如何设计会更方便?

应该超出我的能力了,想看看大家有什么 idea...
...全文
195 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bear63 2014-07-10
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
一个两字段的表 一万个QQ全部互为好友,则记录数也就一亿 而事实上连十分之一都不会到
原来老大都这么做,看来是我想太多了。。
mumubangditu 2014-07-10
  • 打赏
  • 举报
回复
一个表。 CREATE TABLE `qq_friends` ( `my_id` bigint(13) NOT NULL, `friend_id` bigint(13) NOT NULL, `is_black_id` tinyint(1) NOT NULL DEFAULT '0', `add_date` TIMESTAMP(10) NOT NULL, PRIMARY KEY (`my_id`,`friend_id`), KEY `my_id` (`my_id`), KEY `add_date` (`add_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 建议用InnoDB,行锁而不是表锁 放弃自增ID(你用它干什么?排列大小?) PRIMARY KEY 设置本Q ID和朋友ID的组合 本Q ID和加入时间分别加上索引 is_black_id(是否黑名单,0,1来储存) 如1楼所说,由于是交叉记录,一万个QQ全部互为好友,则记录数也就一亿(实际肯定小于),但是数据库也会很惊人。所以要考虑分库或者数据库集群(每100万个号一个库,若干库一个服务器)
傲雪星枫 2014-07-09
  • 打赏
  • 举报
回复
1.QQ會員表 每個用戶一條記錄 id,nickanme, 等。 2.QQ好友關係表 id, myid, friendid 3.QQ黑名單表 id myid blackid 4.信息表,這裡建議使用分表 按用戶id來分表,每2000個用戶一個信息表,例如 id=5000的用戶 分表應該是 5000/2000 再取整,即2,所以表應該是message_0002 id fromid, toid,message, addtime.
断点Bingo 2014-07-09
  • 打赏
  • 举报
回复
两个表 用个qq表 一个关系表
巴山虎 2014-07-09
  • 打赏
  • 举报
回复
id myid friendid 搞定。 这是最好的设置办法,对服务器要求最低。
xuzuning 2014-07-09
  • 打赏
  • 举报
回复
一个两字段的表 一万个QQ全部互为好友,则记录数也就一亿 而事实上连十分之一都不会到

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧