2 tandrow Tandrow 于 2016.01.26 16:32 提问

一个数据库设计的问题,群组人员的维系问题

想要实现和qq群一样的功能,数据库的表该怎么设计,之前有想过通过一个表将用户和群联系起来,这个表放用户id和群组id,但是一想一个用户多个群,一个群那么多用户,这个数据量会非常大。想了好久没想明白该怎么做,有没有大神能给点思路指导指导,谢谢了图片说明

3个回答

wanghan1977
wanghan1977   2016.01.29 10:16
已采纳

对用户群表添加用户从表,以群id+用户id作为联合主键
从表中可以添加用户在群中的个性化信息
对用户从表中群id与用户id添加索引,提高查询效率

实际场景中,用户群与用户不会发生笛卡儿乘积那样的数据组合,所以先不需要考虑大数据量
等业务发展,可以考虑用分区,分表,分库的方式一步步拓展数据结构

caozhy
caozhy   Ds   Rxr 2016.01.27 07:57

基本的设计就是你说的那样,但是为了提高性能,我们有很多改进的办法,比如说在用户表中添加冗余字段缓存它的群组关系。分表分库,并且并行查询。对外键做索引等等。

bdmh
bdmh   Ds   Rxr 2016.01.26 16:47

你的想法是对的,两者之间有一个关联表,联合主键

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
随便想到,群聊天的数据库简单设计
1,聊天消息设计突然想了想,如果一个群聊天数据库到底应该咋设计。 从最简单的思路慢慢开始。简单到大家都能明白。2,就一个表最简单的方式,先完成功能。开发比较着急嘛,一个表数据存放方便。 数据库表结构如下。 CREATE TABLE `msg` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `gid` bigint(20) DEFAULT NULL,
IM 开源项目 群组服务 数据库设计 (01)
废话不说,直接上表 列名 说明 类型 长度 是否主键 可否为空 描述 p_group_id 群组ID Bigint 20 Yes No   p_group_creater_id 创建者ID Bigint
IM 开源项目 群组服务 数据库设计-数据库访问 (03)
群组服务器,读取实现 持续扩展ing...   【函数接口定义】 /* CLASS_BEGIN ***************************************************** 类名: CImGroupDbRead 功能: IM群组服务器数据库读对象 版本: V1.0 时间: 2012-2-27 创建 实现: Snight Q
数据库 权限设计 角色 用户组
基本上在任何的 后台管理系统中都有权限管理,而我们javaee,主要就是开发后台管理系统的,所以权限是逃不掉的。通过不断的优化改进 这个权限系统 可以适应越来越大的项目一、用户权限系统的核心是用户,指登录到系统的用户。用户表 是权限系统唯一一个与业务系统关联的表大学做项目的时候,我们的权限就是一个用户表就搞定了。里面有一个状态:是不是管理员。管理员就有所有的目录,如果不是得话,就会少一点。很明显
数据库设计步骤--了解用户需求:拿出一个问题清单
从项目一开始,就应该着手考虑询问客户哪些问题以便于更好地了解项目的目标和范围。 1.功能: 主要讨论期望系统实现什么功能,还要涉及如何实现这些功能。记录客户提出的系统应该如何工作的想法仍有用的。 •系统应该实现什么功能? •构建此系统的原因是什么?你希望它究成哪些任务? •系统应该呈现什么样的外观?大致绘出用户界面? •系统的不同部分分别需要多少响应时间(通常交互式响应时间应该小于
数据库设计中应注意的问题
引言数据库设计是信息系统设计的基础,一个好的数据库设计在满足了软件需求之外,还要易维护、易扩充等等要求。当然,对专家们反复强调的数据的一致性、冗余性、访问效率等问题的解决,很大程度上取决于数据库设计者的经验和专业水平。但这不妨碍我们根据过去的经验,从实用的角度给出数据库设计所要要考虑的问题并尽可能给出相应的解决方案,从而给信息系统的数据库设计者一些有益的启示。(注:这里的数据库设计主要指数据库中表
数据库设计中遇到的问题
时间字段的选择设计数据库时,难免会考虑到时间字段的设计,在这里总结一下在mysql中,时间的类型一般有如下: java和mysql时间类型对照表如下 在开发中不使用varchar或者char来存储时间,因为无法做到排序,性能收到影响 timestamp 4kb的只能记录时间到2038年项目最后采用的是datetime类型
20个数据库设计浅谈建议
1. 使用完整的一致的数据表名称和字段名,如:School, StudentCourse, CourseID 2.数据表名称使用单数,比如使用StudentCourse 而不是StudentCourses,数据表代表实体的一个集合,因此没有必要使用复数名称。 3. 数据表名称不要使用空格,比如StudentCourse 比Student Course更好。 4.数据表名称不要使用
如何实施SQA
     SQA(软件质量保证)是CMM2级中的一个重要关键过程区域,它是贯穿于整个软件过程的第三方独立审查活动,在CMM的过程中充当重要角色。  SQA的目的是向管理者提供对软件过程进行全面监控的手段,包括评审和审计软件产品和活动,验证它们是否符合相应的规程和标准,同时给项目管理者提供这些评审和审计的结果。因此,满足SQA是达到CMM2级要求的重要步骤之一。背景  对任何制造业企业来说,质量保证
数据库设计以及优化注意的问题
总的来说,mysql优化: 1、索引和sql语句优化,查询优化 2、数据库表结构优化 3、数据库架构优化 4、算法优化 5、硬件升级 一、数据库结构的设计 遇到大数据并发访问 ——>合理的数据冗余 为了保证数据库的一致性和完整性,在逻辑设计的时候往往会设计过多的表间关联,尽可能的降低数据的冗余。(例如用户表的地区,我们可以把地区另外存放到一个地区表中)如果数据冗余低,...