winform项目——仿QQ即时通讯程序02:数据库分析设计

编程项目2019/12/10 20:39:19阅读:814

在上一篇文章winform项目——仿QQ即时通讯程序01:原理及项目分析,我们对即时通讯程序进行了项目分析,明确了它的功能,那么本篇文章将根据这些功能进行数据库设计。因为篇幅原因,在此之前,我们要先聊一聊为什么选择数据库以及数据的存储及作用。

如果按照数据来分类,软件可分为保存数据和非保存数据的软件。很多软件从安装完成打开的那一刻起,就会访问你的存储设备进行文件、文件夹的增加、修改。这些文件都是由软件的逻辑进行生成的,这叫依赖文件,程序要运行就必须创建这些文件去记录数据,像软件的设置、用户的账号等都需要用文件的形式存在本地。如下图的data.db,其实它就是一个简单的文本文件,只不过改了扩展名而已。

带有数据的程序

这些简单的数据用一些小文件保存就可以,其实,很多小软件只需要在本地生成文件,以自己的程序逻辑进行数据的存储和读取就能够满足大多数需求了。如果程序中涉及到很多数据的增删改查,那么就需要用高级一点的数据库方式来存放数据,比如手机中的电话本、信息,它们的数据都是以一张张表的形式存储在一个数据库文件中的,读取、查询某一条数据都很方便。

说了这么多,我想你们应该知道这个即时通讯软件为什么需要数据库存储了吧,就是因为。其实数据库中只是存放软件核心的数据,比如用户信息、好友信息等。其它信息像聊天记录、记住账号、等都是以小文件的形式存储在本地的。

项目文件

我给这个程序起了个名字:CIM,IM代表即时消息,C代表connection连接,后文都将以CIM表示本项目。

接下来我们就开始分析和设计数据库。

因为设计功能的时候就是以简洁为主,所以数据库也非常简单,只有几张表。主要就是围绕着用户来进行业务逻辑的实现。所以我们只需要分析出用户有什么动作,就可以根据这些动作设计出相应的数据表。

1下面,我们模拟用户的操作,随着操作的进行,数据表也就能设计出来了。首先,用户打开软件,需要注册一个账号,用户在注册的时候,需要填写一些个人信息。比如账号的密码,昵称,个性签名,联系地址,邮箱,个人爱好,等等。这些信息需要存储在一张表中,因此,第一张表就是存储用户信息的用户表:Users

为了方便,我们就只用了三个主要的字段,纯属演示之用,其它信息像个性签名、邮箱等无关紧要的数据都不进行存储了。

用户表

字段解释:

Account:用户账号

Password:用户密码

Nickname:用户昵称

只需要这三个核心字段就可以了。

2紧接着,用户注册完成之后,登录进程序,程序要开始加载用户的好友。而一个用户可以有很多好友,因此第二张表就是存储用户关系的好友表:Friends

好友表

字段解释:

MyAccount:我的账号

FriendAccount:好友账号

一个我的账号可以对应很多个好友账号,这样就可以记录一个用户的多个好友了。

3程序还要加载验证消息,谁请求添加好友等,这也需要一个单独的请求添加好友的表,因此第三张表就是验证消息表:Confirm_msg

验证消息表

字段解释:

MyAccount:我的账号

FromAccount:发送验证消息过来的用户账号

MsgContent:验证消息的内容

State:验证消息的状态,可以用不同的值表示已同意、已拒绝

4考虑到给未上线的好友发送消息,服务端不能直接转发消息,需要将消息临时存储起来,等用户上线的时候再进行转发,那么就需要将消息临时存储起来,那么第四张表就是临时消息表:Temp_msg

临时消息表

字段解释:

ToAccount:发送对象的账号

FromAccount:发送者的账号

MsgContent:发送的内容

Time:发送的时间

好了,这就是核心的数据表,足够满足CIM程序的需求了,下一篇文章将进行CIM软件的界面构建工作。


本文系小博客网站原创,转载请注明文章链接地址