即时通讯数据库好友关系(一对多)应该怎样设计?
2016-05-24 20:35
507 查看
即时通讯数据库好友关系(一对多)应该怎样设计?
问1:比如一个帐户的号码,年龄,性别,说明等用一张表完全可以容纳下了,但每个帐户有很多的好友,好友放这张表里不太好办吧?
是不是要为每一个帐户新建一张表来存储好友?
问2:如果是这个不是好友而是礼物数呢?意思就是我是楼主,楼主的好友,我要送礼物给楼主的好友?(待解)
问1解决:
要建立好友关系表。
说明谁是谁的好友,反过来不成立的。
按照QQ的行为,假设我是LZ(楼主)的好友,那么就有关系:我->LZ(楼主)
LZ是我的好友,就有:LZ->我
假设我们互为好友,就有:LZ->我 和 我->LZ
如果大了,好友关系表要分表。例如:1-1000的好友关系存放在A表,1001-2000的好友关系存放在B表。
至于要不要分表,看你的IM的系统容量和你用的数据库的性能。
每个帐户都得有一个系统内部识别的ID(一般用整形(2、4、8字节))
好友关系表就是这些ID的一种组合,通常2-3个整形字段就可以了,按发起ID做一个簇索引
这样的表,记录虽然很多,绝对容量并不大
1(用户基本信息表,内含 ID)对多(好友关系表,ID&ID...)
待解。
相关文章推荐
- ubuntu上安装MySQL非常简单只需要几条命令就可以完成。
- django数据库设置
- 数据库中的分组函数+练习题
- 工具类系列-StringSimpleRedisUtil
- web聊天类数据库功能表结构如何设计?
- mysql_基础1
- SQL SERVER T-SQL Programming
- mysql auto_increment 的坑
- O1--Oracle11g (OCP考试) 知识结构图-P160524
- TCMalloc优化MySQL、Nginx、Redis内存管理
- 【问题】sql数据库安装重启失败
- MySQL数据库中的多表数据记录查询
- Ubuntu中安装MySQL
- SQL优化----百万数据查询优化
- Redis系列学习笔记21 集群
- Mysql插入中文乱码
- MySQL的几个重要目录
- mysql中 导出一个库中的表 中的某个字段值
- Mysql新建用户与权限
- 市长信箱邮件查询服务: 使用Elasticsearch 替代 Mysql