openfire中通过ofgroup/ofgroupprop/ofgroupuser实现组织结构中的分组,通过ofroster/ofrostergroups实现好友关系中的分组。但是呢,我们做二次开发的时候,希望能够有自己的个人联系人及分组,它没有确认过程,也就是说,只要我愿意,我可以将任何组织结构中的用户添加到自己的任何联系人分组中。那么我们设计如下:
两张表ofprivateuser/ofprivategroup,前者记录联系人信息,后者记录分组信息。
ofprivateuser:userid(primary key)(用户id), groupid(primary key)(组id), permission(组拥有者对用户的权限)
ofprivategroup:groupid(primary key)(组id), name(组显示名称), owner(组拥有者)
备注:userid一般为username,可索引到ofuser表中的用户记录。owner表示,分组是属于哪一个用户的。
对于如此设计,大家可能会有如下疑问:
1.一个联系人可以属于多个分组吗?
答:可以。比如ofprivateuser: (userid,groupid,permission)为(zhangsan,group001,1)以及(zhangsan,group002,1)。则表示,zhangsan既属于group001又属于group002。
2.一个用户如何查询自己的全部分组及分组下的联系人?
答:通过owner字段在ofprivategroup中找到他名下的所有分组,再通过groupid字段在ofprivateuser中找到每个分组下的所有用户。
3.ofprivateuser表中,groupid是不是外键?
答:算是的,外键的作用是让两张表形成关联且外键只能引用外表中指定列的值。但是,我们也可以不将其设为外键,groupid是不是外键对我们编程没有影响。外键是数据库一级的完整性约束,就是书中说“参照完整性”的数据库实现方式。外键属性去掉后,DBMS不会对录入的数据进行“参照完整性”检查,仅此一点影响。
4.修改组名方便吗?移动联系人的分组方便吗?
答:方便,均只需要改动数据表中的一条记录。修改组名,直接操作ofprivategroup中groupid对应的name;移动联系人分组,直接操作ofprivateuser中userid对应的groupid。
相关推荐
消息聊天系统MySQL表设计_聊天系统-数据库设计 //常⽤的redis命令 CONFIG SET requirepass "mypass" //Hashmap hset [key] [field] value] hget [key] [field] hgetall [key] //List LPUSH [key] [value] RPUSH [key...
自建IM服务器的猿学习App的设计与实现 在当今数字化时代,移动学习变得越来越流行,而即时通信技术是移动学习的关键组件之一。然而,国内的即时通信服务器大多数是由其他大厂进行派发的,需要进行二次开发,用户...
即时通信服务端数据库 Server QQ IM
Android集成网易云IM实现 网易云信Im的登录、 单聊和建群群聊等功能,适合新手入门网易云IM通讯
10 6.1触发器: 10 6.2 视图 10 7 数据库实现 10 7.1建立数据库 10 7.2 初始化所有表: 14 7.3 实现查询功能 15 1.项目背景 Blog即WeBlog,WeBlog就是在网络上发布和阅读的流水记录,通常称为"网络日志", 简称为...
java毕业设计——基于小程序+Socket+Node的IM系统设计与实现(答辩PPT+源代码).zip java毕业设计——基于小程序+Socket+Node的IM系统设计与实现(答辩PPT+源代码).zip java毕业设计——基于小程序+Socket+Node的IM系统...
IM 即时通讯 实现实时视频通话
基于SSH+Redis+MySQL的IM即时聊天系统实现,项目经过测试,可完美运行! 依赖与开发环境说明 Maven工程, IDE:IDEA MySQL: 5.7 Redis: 5.0.4 如果需要使用离线推送服务,需要在个推开通推送服务,然后更新配置文件...
java毕业设计——基于小程序+Socket+Node的IM系统设计与实现.zip
Android-XMPP-openfire-实现IM
一个简单的IM一个简单的IM一个简单的IM
JAVA开发高性能IM即时通信系统源码,JAVA语言开发的轻量、高性能、单机支持几十万至百万在线用户IM,主要目标降低即时通讯门槛,快速打造低成本接入在线IM系统,通过极简洁的消息格式就可以实现多端不同协议间的消息...
web IM 用异步实现的IM ,界面漂亮
课题题目:Java IM网络聊天程序设计 1. 主要功能: (1)服务器首先启动,使用ServerSocket监听指定的端口,等待客户端连接,客户端使用Socket对网络上某一个指定IP的服务器上的端口发出连接请求; (2)登录信息...
IM即时通讯SERVER 连接以及模块设计文档
Qt使用MySQL数据库,配合文章:https://mp.csdn.net/postedit/79727871
J-IM 是用JAVA语言,基于t-io开发的轻量、高性能、单机支持几十万至百万在线用户IM,主要目标降低即时通讯门槛,快速打造低成本接入在线IM系统,通过极简洁的消息格式就可以实现多端不同协议间的消息发送如内置(Http...
为蘑菇街IM架构设计,以及代码详细解释。为蘑菇街IM架构设计,以及代码详细解释
这个资源你要的im功能基本都有
即时通讯(IM)模仿QQ这类即时通讯工具,项目包含所有源码,有数据库,im使用说明,技术文档,即时通讯系统ppt文件,还有数据库设计文档。 二、主要功能 打开Myeclipse,新建一个project工程(MyIm),然后右击该工程,...