[MYSQL里面有如下的表 user:id username photo:id name photo_favour(图片收藏关系表):photo_id user_id假设这几个表都相当大,需要进行分表。我的分表规则是:user表按
即时通讯数据库好友关系(一对多)应该怎样设计?
问1:
比如一个帐户的号码,年龄,性别,说明等用一张表完全可以容纳下了,但每个帐户有很多的好友,好友放这张表里不太好办吧?
是不是要为每一个帐户新建一张表来存储好友?
问2:如果是这个不是好友而是礼物数呢?意思就是我是楼主,楼主的好友,我要送礼物给楼主的好友?(待解)[关系型数据库[如Mysql],一对多关系,如用户id=1,该用户可以同时属于不同的分组[group_id=1,group_id=2],这时的数据库表该如何设计合理呢,我目前是这样的,user关系表,每一个
问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...)
待解。
[全部折叠同时提供下列产品的其他版本: SQL Server 2005SQL Server 2008 联机丛书(2009 年 1 月)设计数据库关系图 (Visual Database Tools)数据库设计器是一种可视化工