小弟我们讨论一下 每个QQ有很多不同好友,数据库怎么设计会更方便

WBOY
Libérer: 2016-06-13 12:01:41
original
1062 Les gens l'ont consulté

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

应该超出我的能力了,想看看大家有什么 idea...
------解决方案--------------------
一个两字段的表
一万个QQ全部互为好友,则记录数也就一亿
而事实上连十分之一都不会到
------解决方案--------------------
id  myid  friendid

搞定。

这是最好的设置办法,对服务器要求最低。


------解决方案--------------------
两个表  用个qq表 一个关系表
------解决方案--------------------
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.


------解决方案--------------------
一个表。
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万个号一个库,若干库一个服务器)

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!