`
ssxxjjii
  • 浏览: 944876 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

IM实现联系人及联系人分组的数据库设计

 
阅读更多

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。

 

分享到:
评论

相关推荐

    IM.rar_im通讯Wpf_即时通讯wpf_在线会议_聊天室_聊天室视频

    5. **分组管理**:用户可以将联系人分到不同的群组,这需要后台数据库维护群组关系,并在界面上实时更新。群组管理还包括群发消息、群管理员权限控制等功能。 6. **会议室**和**讨论组**:这两者都是多人交流的场景...

    im.zip_DEMO_crossapp_fasterpv7_联系平台

    【标题】"im.zip_DEMO_crossapp_fasterpv7_联系平台" 提供了一个关于跨平台应用程序开发的演示项目,其中结合了CROSSAPP框架和FasterPV7技术,用于实现多平台兼容的聊天和联系人管理功能。 【CROSSAPP】是专为移动...

    C#IM即时会议聊天服务端客户端源码

    同时,系统还允许对部门结构进行在线管理,这意味着用户可以根据组织架构进行分组,便于管理和查找联系人,提高工作效率。 【知识点】: 1. **C#编程**:C#是一种面向对象的编程语言,由微软开发,广泛应用于...

    android版IM源码包

    - 联系人管理:获取、添加、删除联系人,以及分组管理功能。 - 聊天界面:消息发送与接收,包括文本、图片、语音、视频等多种类型的消息处理。 - 实时在线状态:展示用户当前是否在线,以及离线消息的处理。 - ...

    IM处理流程.pdf

    - **成功情况**:验证成功时,DBGateway返回用户的个人信息和好友列表信息,包括但不限于用户ID、性别、年龄、联系方式等,以及是否需要更新本地好友列表、是否有加好友验证消息需反馈、加过本方的人的个数、分组个...

    模仿QQ2009做的C#Winform即时通信程序

    6. 好友分组:为了方便管理大量联系人,QQ2009引入了好友分组的概念。我们可以用TreeView控件来实现这一功能。 7. 音视频通话:虽然QQ2009的音视频功能较为复杂,但基础的音频聊天可以通过第三方库如NAudio实现。...

    类似QQ的聊天软件JAVA版源码(附设计文档).zip

    5. **用户界面(UI)设计**:聊天软件的用户界面一般包含登录界面、联系人列表、聊天窗口等。在Java中,可以使用Swing或JavaFX库来创建图形用户界面。UI设计需要考虑到易用性和用户体验。 6. **数据库管理**:用户...

    Androd Xabber客户端.zip

    - **Roster管理**:XMPP的联系人列表管理,包括添加、删除、更新联系人以及分组操作。 - **Presence和Message处理**:理解如何处理用户的在线状态(Presence)和发送/接收文本、文件等消息。 4. **UI设计** - **...

    .net编写的即时通讯小软件

    - 联系人管理:显示好友列表,支持添加、删除和分组联系人。 - 实时聊天:实现一对一或群组聊天,包括文本、表情、图片等富媒体消息。 - 在线状态显示:展示用户在线、离线等状态。 - 文件传输:支持发送和接收...

    android聊天程序 XMPP-asmack

    7. **分组和好友管理**:用户可以创建、修改和管理联系人分组,添加或删除好友。这涉及到服务器上的联系人列表操作,以及客户端的UI更新。 8. **事件监听和推送**:为了实现即时通讯,应用需要持续监听服务器事件,...

    仿QQ即时通迅系统源码

    4. **用户界面**:使用MFC库构建图形用户界面,包括登录窗口、主聊天窗口、联系人列表等组件的实现。 5. **消息传输**:包括文本、表情、文件等不同类型的消息编码、解码和传输。 6. **安全机制**:涉及到用户密码...

    即时通信聊天室

    3. **分组功能**:用户可以将联系人分到不同的分组,方便管理和查找。分组可以按照关系亲密度、工作团队、兴趣爱好等进行分类,便于组织和参与不同的讨论话题。 4. **好友管理**:用户可以添加、删除和管理好友,...

    即时通讯系统需求分析.pdf

    2. **联系人管理**:用户可以添加、删除和管理联系人,形成好友列表,支持搜索和分组功能。 3. **文本聊天**:提供实时的文本消息发送和接收功能,包括一对一和群聊模式。 4. **多媒体消息**:支持发送图片、音频、...

    安卓仿微信即时通讯源码

    6. **UI设计**:界面设计需符合用户习惯,如同微信那样,包括聊天窗口、联系人列表、设置等功能模块。使用Android Studio和Material Design库可以提升用户体验。 7. **消息类型与表情支持**:除了文字,还要支持...

    QQ程序客户端

    4. **外网通信**:QQ客户端能够通过互联网实现外网通信,这意味着无论用户身在何处,只要有网络连接,都能与其他QQ用户保持联系。这涉及到了网络穿透技术,如NAT穿透,以解决内网用户间的通信问题。 5. **邮件发送...

Global site tag (gtag.js) - Google Analytics