微信数据库分析与设计Word文档格式.docx
《微信数据库分析与设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《微信数据库分析与设计Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
最后在微信用户个人信息中有相册和收藏记录用户的照片和收藏的文字语音等信息。
以上是对微信的部分功能的需求分析,现根据以上需求对微信数据库画出数据流图:
第0层DFD:
第1层DFD:
2、概念设计
在第一步的需求分析中,我们了解了微信数据库平台设计中所需要的实体及需要存储的信息。
在概念设计中将进一步明确数据库设计所需实体,实体所具有的属性及实体之间的关系。
通过分析微信数据库平台所需实体主要有:
用户信息、普通消息记录、公众号信息、公众号消息记录、微信群信息、群聊消息记录、收藏信息、相册、朋友圈信息、联系人信息、附近人信息、漂流瓶信息、扫一扫信息、摇一摇信息。
这些实体分别对应于微信功能的不同模块。
在实现微信的通信功能主要是使用用户信息、普通消息记录、微信群信息、群聊消息记录和联系人信息这几个实体。
在明确所需实体后根据实际需要对于每个实体设置符合实际情况的属性,每个属性对应了数据库中的具体属性。
下图是根据对于微信数据库平台的需求分析做出的CDM,通过此概念模型显示数据库之间各实体之间的相互关系及各个实体所具有的实际属性。
3、逻辑设计
由以上概念设计模型,我们可以获得以下逻辑数据模型(LDM)。
在LDM中对于CDM进行了进一步的细化和具体化,对其中的实体之间的关系在逻辑上进一步的进行了明确。
在此基础上我们获得更加具体能直接反映数据库涉及的无理数据模型(PDM)。
通过PDM将具体显示数据库所需的表及其之间的关系。
PDM如下图所示:
在PDM中显示了个表单之间的引用关系,其具体引用如下表:
标间关系名称
父表格
子表格
关注
用户信息
公众号信息
发送
公众号消息记录
发送/接收
普通消息记录
发送消息
群聊消息记录
收藏
收藏信息
查看
联系人信息
用户存放
摇一摇信息
用户所在群
微信群信息
用户所属
漂流瓶信息
用户扫描获得
扫一扫信息
用户相册
相册
用户联系人
群聊天记录
联系人相册
获取
附近人信息
本系统中使用的表单如下所示:
1、用户信息表
Name
DataType
Length
P(主键)
F(外键)
M(不可为空)
用户ID
char(15)
15
X
昵称
char(20)
20
头像
longbinary
二维码名片
我的地址
varchar(100)
100
性别
char(5)
5
地区
varchar(20)
个性签名
varchar(500)
500
登陆密码
2、普通消息记录表
P
F
M
消息ID
联系人ID
内容
varchar(5000)
5,000
发送时间
datetime
3、联系人表
朋友ID
备注名称
标签
4、公众号信息表
公众号ID
公众号名称
char(40)
40
5、公众号消息记录表
公众消息ID
公众消息
订阅者
varchar(8000)
8,000
timestamp
6、关注表
7、微信群信息表
群ID
群名称
群二维码
群成员
varchar(1000)
1,000
8、用户所在群表
9、群聊消息记录表
群聊消息ID
发送人
10、相册表
相册ID
存放时间
11、收藏信息表
收藏ID
收藏时间
收藏内容
12、附近人信息表
附近人ID
距离
integer
13、摇一摇信息表
摇一摇信息ID
时间
14、扫一扫信息表
扫一扫信息ID
15、漂流瓶信息表
漂流瓶ID
对于微信数据库平台的逻辑分析,明确了在具体是实现时所需的表及其各个表之间的引用关系,在接下来的物理设计中将使用逻辑设计中的表在具体数据库实现微信数据库平台的设计。
4、物理设计
在此次物理实现微信数据库平台使用SQLServer2008。
实现简单的微信平台的数据库,通过在数据库表中插入数据或查看数据来表现微信平台对信息的发送接收及查看。
在此次物理实现是我们遵循3NF。
数据库设计如下图:
1、向“用户信息”表添加记录,模拟微信在线用户。
此次添加三个用户作为模拟的微信用户。
用户基本信息如下:
2、我们选取“小a”登陆微信,开始添加联系人。
“联系人”表保存每个用户的联系人信息,这些联系人信息皆来自用户信息表。
“小a”的联系人如下表:
此表的创建过程如下:
3、普通用户发送消息时,消息内容将存储在“普通消息记录”表中,如现在“小a”向“小b”发送一条消息,然后“小b”再回复一条。
“小a”也向“小c”发送一条消息。
其中表中的外键约束和默认值如下:
在”普通消息记录表”中也可以查询两个用户之间的聊天记录,如查询“小a”和”小b“之间的聊天记录:
同样也可以在“普通消消息记录表”中实现删除消息记录。
在“普通消息记录”表中为了能使用户更快的查询自己的消息记录,这里创建了索引。
4、“微信群信息”表中记录了所有用户创建的微信群的信息。
由于在微信中群成员数量当前限制为40个,在本平台中我们设置为4个。
并且每一个成员信息由外键引用自“用户信息”表。
比如现在创建了两个个微信群如下:
外键约束和非空约束如下:
由于当用户创建了一个微信群后要在“用户所在群”表中显示出每个用户所在的群,因此需创建一个触发器。
在此创建的trigger为“用户信息新增”。
代码如下:
5、“用户所在群”表存储了每个用户所在的群信。
每个用户可根据此表查询所在群信息。
当一个微信群被创建后在“用户所在群”表中将自动显示用户所在群信息。
6、“群聊消息记录表”记录了每个群的消息。
也可以查询历史记录。
比如在群“羽毛球部落”中的消息记录。
为了使得用户在查询群历史消息时更加快速,创建索引。
7、“公众号信息”表记录了所有公众号的信息。
可以通过搜索公共号ID或名称来订阅公众号。
8、“关注”表中,存储了每个用户订阅的公众号。
9、“公众号消息记录”存储公众号为订阅者发送的消息。
10、其余各表分别存储每个用户在微信中的信息,通过外键引用来确定每个表中各个用户的信息,其具体结构如下:
以上即为微信数据库平台的简单的物理设计,在具体物理设计实现时根据具体需要对数据路平台的逻辑设计进行了部分修改,也更加具体化了数据库功能。
本数据库只是简单的对微信平台数据库的实现,其中还存在许多不足和缺陷需进一步完善。
最后,通过此次数据库的设计实现进一步熟悉了数据库相关的知识及数据库的设计和实现。