下载文档到电脑,查找使用更方便
12 积分
下载资源
《微信数据库分析与设计》由会员分享,可在线阅读,更多相关《微信数据库分析与设计(23页珍藏版)》请在装配图网上搜索。
1、微信数据库分析与设计 一、需求分析 微信作为当前的主要即时通讯工具之一,有着广泛的应用。其主要的功能是 实现即时通信,这也是微信的核心功能。此外还有查看朋友圈动态、搜索好友、 管理个人信息、建立用户自己的相册、收藏功能、摇一摇、搜索附近的人、购物、 游戏等功能。此次对于微信平台的数据库设计主要对部分需要微信平台提供存储 信息功能进行需求分析及设计。以下将对微信平台的主要需求做简要的分析并且 根据分析做出数据流图使得对于微信平台数据库的设计有更好的理解。 微信的通信主要包括与微信好友进行相互通信,这其中通信内容包括文字、 语音、图片及视频。当用户订阅了公众号之后,会接收公众号发送的消息并且
2、也 可向公众号发信息或许其提供的信息。 微信通信功能的另一个主要方面是实现群聊。用户可以加入一个微信群进行 群。另一方面用户也可以选择自己的联系人进行群聊。 微信中通讯录实现了保存用户联系人的目的,并且订阅的公众号也保存于通 讯录中,并且在通讯录中可以设定标签来为联系人分组。 微信朋友圈保存好友发送的与朋友共享的消息,其内容可为文字、图片、视 频。在朋友圈中可以设定权限使得不同权限的用户查看的内容不一样。 摇一摇功能可以获取同一时刻一起摇动手机的用户,并且暂存于微信中。 附近的人功能可以识别在一定范围内的微信用户,并且将获得的用户信息也 暂存在微信中,对于识别附近的用户可以设定具体的
3、条件来扫描。 漂流瓶功能相当于随机的获取微信消息或者向微信用户随机的发送消息。 对于个人信息的编辑,用户可以根据自身需要编辑一些所需的个人信息。 最后在微信用户个人信息中有相册和收藏记录用户的照片和收藏的文字语音 等信息。 以上是对微信的部分功能的需求分析,现根据以上需求对微信数据库画出数 据流图: 第0层DFD 第1层DFD 二、概念设计 在第一步的需求分析中,我们了解了微信数据库平台设计中所需要的实体及 需要存储的信息。 在概念设计中将进一步明确数据库设计所需实体, 实体所具有 的属
4、性及实体之间的关系。 通过分析微信数据库平台所需实体主要有:用户信息、普通消息记录、公众 号信息、公众号消息记录、微信群信息、群聊消息记录、收藏信息、相册、朋友 圈信息、联系人信息、附近人信息、漂流瓶信息、扫一扫信息、摇一摇信息。这 些实体分别对应于微信功能的不同模块。 在实现微信的通信功能主要是使用用户信息、普通消息记录、微信群信息、 群聊消息记录和联系人信息这几个实体。 在明确所需实体后根据实际需要对于每个实体设置符合实际情况的属性,每 个属性对应了数据库中的具体属性。 下图是根据对于微信数据库平台的需求分析做出的 CDM通过此概念模型显 示数据库之间各实体之间的相互关
5、系及各个实体所具有的实际属性。 容他 3何 一 三二;一二 区信发x¥濡F 5”cttn (20, Chgrseten (20) Varablc choroct&r: (6030) Cale & Time Characten (20) V^roble chwncf>n (100) Cote & Time # fc^JJD •雯称 O忌高 O o o 。个令箕与 落运人情息 , Cnfiracten 12d Cnoroctcr: (20 Irteger Cnaracters (5) V»ri»ble cnnn»cf*n (20l Arable c^woater
6、s :「一, Coto & Tim chaiKUn (X)0C) —两向 ?3-515. “ *一包 W,IC C"9,s[20) D«t« 6 Tinw Variate cha-aaers (£000 且云上知D C、o,n |二0: •内亨 VM * la6,OCUfS(800) ■髀&I粤力 7手守 •发送人 •发送封堂 Ch,r・d5 2C) •裳林 ・岁东人 。 •二步七名闿 o •城区 o个隹8名 V =r^.€ C^ar3cte-s 15) C卜anadGrc 20) Chapdus 2J) imaje (100) Iec,(10
7、0) VorisblQ shocct。100) cr<8oaefs O Variable Faraders 20) Varitblo am dore (500) dw«a«f> (20) Ch*r«a«r> 20) Charaae3 20) Ds:e&Tme Variobla sharActQQ (5CO9) 、 A 发送消息 天云次 s £1D •暮自生 -妄二金天 5— (20 Chsr«rt 8、L程安 公众弓怡电 士 Chara d— •公众•号名侮Charactds 40) 专章入号5 Q 五人ID。仁拿8CIV5 ;20) 士电Ume3m[20) 7存么片同C>tt i rifnt • 丹号 MBTisbl, dweten (5000) V.e闺 会演老3t 运众a送 X4 W 衣58借专 2 衣1。 CharaztgZ): o也包交同Date 8 Time o 上祟力建 VoriablQ ohora^ers (10COO) Charaaefi(20) l-nase 100i Variable character (1000) V 言芸j.招 9、生 mm转息记录 « 「里ID Characteft (2C) •发送人 Chiroctorz (20) •安次人 Chvocteo (20) •丹叁 van a Die cnarsaen(OOOC) 、• 3MWB! Dale & Time . Cbaacters(20) CbB*AetAf« ((5) Cba*octeo(20) vanaoe crs-acters(20) Variabe c^a-acters (50C) Vfiriaha c±flractofc (20) J8 看一 10、 三、逻辑设计 由以上概念设计模型,我们可以获得以下逻辑数据模型( LDM tMB8 >装广 "4出礴 ♦ ¥> q也用n凋 --u总与司 al前曾 门 nHadan _2£ 一 ch&T*「停二违 0T-HK3Jsl ".■(■,Un -n qD-uHG 再IT--。 O军占$窘7 &£c讣3『T苍 口m E T-m r . ii 4 0 □ It &- 1 0 H R 1 A r i ii ■ 口 i i; 日 n n 4 口 d U rv e a r i f y J 1 11、 3 Li ■ ¥ ■ "" A 盾 n j u $ * ii AIA破.声 冲.掂—前ma 口牙比里白WElhJr M Tuu fEERH 中黑a0曾Pr-T-HMI P青 崎 v&dA'ble cT LJ生,SKiO dLllraE I«|而皿皿In- "ns 计 eM机 Own:廿 tts =-31 • IT• oHHiR T 一^ ・ 年<14<七吊。者 U-^SAHS ,n^ 晔2gn1■早二|1|n」 Q.1JUH15" ♦导嚼 前nsDgarBJQ毁 一*|口13号 二 F Iliff U 祐U I . ——r;- cka-rE・s-* c 12、tlraL-Ers 二" 9**«-as 2ch DzianT-rw <1西江小笈5 Mes d.ll°5t.iiL* 年lff:DIII1B1 艮EArzay 春1>'■■ s・«a里二 ・ HH0W_5・£_G5 nd ◎stall・山m. . 1 2 9as^3 片‘ ■CJhTEWn20』 一3番±1昌 -1 言》 h-" b■启4 -flns Gd_EdiErs E.. *nT Blur*dK^ -H) V^r-PIF, EilEacian -{Mq一 <嗝O3m 噌号£ 匕'I'•工N 色-fljllu cl仔・中』 力帝・as y w. n _.20b 13、将而a J吊 5r 占 200- o tr 1■♦蛇 ,占甲 *lqs*is ls&3§ 14、^ A? 口胃鼻冠lizFa*口 外鞫 MH- r MUS char-3 w Jl * -ocharyw fc-E-w 手E_DlJi言 **c: 踣有>&W.B >丽 .HuhxEOODj 划p:17 由 ^Tivff-3-v ,-IfflillaT-lTM 心防前R 涸 hnn ■ r*3方向不・出UM.Midi砧暗, GMESKW^ .=u%a— Em urTMM学巨 M% 云口 w_.有号 A^v li-iHMlli-u. 立 飞 郭 6 Aarfa^ 稿 BJC" dl、-0 AM 鼻 A? Jr415』(KXS) MITlWE 阳酒 J> euXLal 15、/ AffMtrDly Il/ 叼科Tr西鼻 廿hary Al1寺 V 廿 If■ OMAi 修Mc・rdMrt293 小麻髀的 so&Bff 脚Iv制SI 修川•1-1j.r!:二 四.。- Q c*w¥ 4IV ff口 孰胃? JUJD Asv 痢科停蜘1?%叫一吵》 潭& A ch#4整 埼“中山 rmtvnETmo 注钟 dpIJtlm* LWrGlu岂三片「「;7 二 一口 .luErs m 16、F I ri* * M.E 从如% 注后.E i.'117 - 广/1>中小律—招,|!-%中抑,诲|«强小 If'”阿 3 01 h#—臀鬻 R 恂羯iwll-ff富IliF - J一一可-smrt ba-=i垢G YL 1 菖. 厚4I,E 尸审h)ll_KJI回”号由 惜少>>)|脸曲q$4¥ 带冷*I.JtE也* mLllaInQ£l-plr>士. 心 k. H n my " WRa总MII的竹RAa.a 壬® 寻药曲<兽?。X34O) ,SW4^ ffav 在PDW显示了个表单之间的引用关系,其具体引用如下表: 17、 标间关系名称 父表格 子表格 关注 用户信息 关注 关注 公众号信息 关注 发送 公众号信息 公众号消息记录 发送/接收 用户信息 普通消息记录 发送消息 用户信息 群聊消息记录 收藏 用户信息 收藏信息 查看 联系人信息 普通消息记录 用户存放 用户信息 『摇信息 用户所在群 用户信息 用户所在群 用户所在群 微信群信息 用户所在群 用户所属 18、 用户信息 漂流瓶信息 用户扫寸而获得 用户信息 『扫信息 用户相册 用户信息 相册 用户联系人 用户信息 联系人信息 群聊天记录 微信群信息 群聊消息记录 联系人相册 联系人信息 相册 状取 用户信息 附近人信息 本系统中使用的表单如下所示: 1、用户信息表 Name Data Type Length P (主键) F (外键) M (/、可为空) 用户ID char(15) 15 X X 昵称 char(20) 20 X 头像 long binary 二维码名片 long 19、 binary X 我的地址 varchar(100) 100 性别 char(5) 5 X 地区 varchar(20) 20 X 个性签名 varchar(500) 500 登陆密码 varchar(20) 20 X 2、普通消息记录表 Name Data Type Length P F M 消息ID char(20) 20 X X 联系人ID char(15) 15 X 用户ID char(15) 15 X 为容 var 20、char(5000) 5,000 X 发送时间 datetime X 3、联系人表 Name Data Type Length P F M 朋友ID char(20) 20 X X 用户ID char(15) 15 X 备注名称 char(20) 20 X 标签 varchar(20) 20 4、公众号信息表 Name Data Type Length P F M 公众号ID char(20) 20 X X 公众号名称 char(40 21、) 40 X 5、公众号消息记录表 Name Data Type Length P F M 公众消息ID char(20) 20 X X 公众号ID char(20) 20 X 公众消息 varchar(5000) 5,000 X 订阅者 varchar(8000) 8,000 X 发送时间 timestamp X 6、关注表 Name Data Type Length P F M 用户ID char(15) 15 X X X 公众号ID ch 22、ar(20) 20 X X X 7、微信群信息表 Name Data Type Length P F M 群ID char(20) 20 X X 群名称 char(20) 20 X 群二维码 long binary X 群成员 varchar(1000) 1,000 X 8、用户所在群表 Name Data Type Length P F M 用户ID char(15) 15 X X X 群ID char(20) 20 X X X 9、群聊消息记录 23、表 Name Data Type Length P F M 群聊消息ID char(20) 20 X X 群ID char(20) 20 X 发送人 char(20) 20 X 发送时间 timestamp X 内容 varchar(5000) 5,000 X 10、相册表 Name Data Type Length P F M 相册ID char(20) 20 X X 用户ID char(15) 15 X 联系人ID char(20) 20 24、 X 存放时间 timestamp X 内容 varchar(5000) 5,000 X 11、收藏信息表 Name Data Type Length P F M 收藏ID char(20) 20 X X 用户ID char(15) 15 X 收藏时间 timestamp 收藏内容 varchar(8000) 8,000 12、附近人信息表 Name Data Type Length P F M 附近人ID char(20) 20 X 25、 X 用户ID char(15) 15 X 昵称 char(20) 20 X 距离 integer 性别 char(5) 5 地区 varchar(20) 20 个性签名 varchar(500) 500 13、摇一摇信息表 Name Data Type Length P F M 摇一摇信息 ID char(20) 20 X X 用户ID char(15) 15 X 时间 timestamp 内容 va 26、rchar(5000) 5,000 14、扫一扫信息表 Name Data Type Length P F M 扫一扫信息 ID char(20) 20 X X 用户ID char(15) 15 X 时间 timestamp 内容 varchar(5000) 5,000 X 15、漂流瓶信息表 Name Data Type Length P F M 漂流瓶ID char(20) 20 X X 用户ID char(15) 15 X 内容 27、 varchar(5000) 5,000 X 对于微信数据库平台的逻辑分析,明确了在具体是实现时所需的表及其各个 表之间的引用关系,在接下来的物理设计中将使用逻辑设计中的表在具体数据库 实现微信数据库平台的设计。 四、物理设计 在此次物理实现微信数据库平台使用 SQL Server 2008。实现简单的微信平 台的数据库,通过在数据库表中插入数据或查看数据来表现微信平台对信息的发 送接收及查看。 在此次物理实现是我们遵循3NE 数据库设计如下图: 3 4党信平台 +」数据库关量图 尸口表 团□此□附近人信息 +) J 6匕6公众号消.皂:己灵 3 口此。 28、公众号信息 3 _j晶口关注 司 3 dboKMA 国3北日霹邮信息 士二I此白苔国自息记录 用_j此0靠融消息记录 +1二]北口扫一3信息 +) _□此口,环畸信息 ±1 □ dbo徵信群信息 +1 3 dbcr柜册 □ □此口提T信息 由J此口用户所在群 1 _J此0用户信息 if LJ视图 1、向“用户信息”表添加记录,模拟微信在线用户。此次添加三个用户作为模 拟的微信用户。用户基本信息如下: 日圉db□,用户信.名 二 I 一i 到 f 用户I。tPK, char[15L not null) i n 呢称(chd<2 01 not null) 圉 头焦(binary 29、(l), null) iT1 二维膏名片(binary〔1). not null) 国 我花地址 tvarcbar(lOO), null) H 性物(chard not null] E 地区(varchar(20)t not null) 1=1 个性卷名[varthar(5OO), null) H 登陆宝毛(wanchart2O), rot null) 2、我们选取“小a”登陆微信,开始添加联系人。“联系人”表保存每个用户 的联系人信息,这些联系人信息皆来自用户信息表。“小 a”的联系人如下表: 此表的创建过程如下: nst nuLlf 用用朋标 ID char H5) 30、 n9t noil f scziBtrairt p Hcarvims db*用户宿息痈户ID卜. 一一.1 月破ID "e -i r 用户ID 朋友笛在名 标箜 1 1 W0Z 0001 明B月 同学 2 0M3 0M1 NULL NULL 3、普通用户发送消息时,消息内容将存储在“普通消息记录”表中,如现在“小 a”向“小b”发送一条 31、消息,然后“小b”再回复一条。“小a”也向“小c” 发送一条消息。 dbd普圜鳄记录 臼口更I ? 声息JD (PKd char[20j,, not null) ?联口 (FK. chdr(151 nulD 'f 用口【D (FK. char[15)r null) 直内容"archarf5000), not nidi) =1 发送Tj1闫汨己tetirri亡,not null] 消息? 联系人旧用户ID内容 发送时间 1 「证丽30002 DM1 F午5点去球场踢球 2015-D5-K 1135:32040 2 丽而2 0001 0002 可以,下午涉场见 20154P5- 32、1011:36:17207 3 000003 0003 0W1 你好 2015-05-1012581EB3J 其中表中的外键约束和默认值如下: 箱13匚GSHe 0c,百通捎 目记无 单口4 gnapgJL口t 门司fnz工g 曜丁 欣/人工匚 Humreca* 80*用户信息 用 户二口 sl tEE t isble dba .普通稍息布察 edd 匚口口口七匚勺七口t. 5kt E3re-ign 三口匚D) ruEuHuncun i±d用卢।信虑£用卢工「 alter table 01tle-廿通捎息记录 ad:l 发送时间 日"“工口七 7c 、 default HMbEet 33、 在”普通消息记录表”中也可以查询两个用户之间的聊天记录,如查询“小 a” 和”小b ”之间的聊天记录: II 乩工。内容「发颜1间£工口小 侬春 「岫七a SfcMAjS m('0001\ f0002*) and 111(-0001' , *0002*) ,j55…__…_…_ ___发医时间 1 |取而后云标立।霭隹1 201531。11:35:32,040 VIIBIIAIBIIlUillll l&lll IlbU ■IIUdlliaMIIHIIMHIIIIKIIII iJ 2 可以,下午球场见 20154&10 11 36:17207 同样也可以在“普通消消息记录表”中 34、实现删除消息记录。 在“普通消息记录”表中为了能使用户更快的查询自己的消息记录, 这里创建 了索引。 create index用户快速查询记录皿普通消息记录f用户1口) 4、“微信群信息”表中记录了所有用户创建的微信群的信息。由于在微信中群 成员数量当前限制为40个,在本平台中我们设置为4个。并且每一个成员信息 由外键引用自“用户信息”表。比如现在创建了两个个微信群如下: H匕口.滞信其传导 上Li列 ? 荫口 (P<, char(2Ol not null'! 图 辞名林(char(2D). not null) 国 群二(binary(l)f not nul 35、l) f (F< char[15), not null) f 成员2 (FK ch雨口5). nW) f OS3 (F< eh3r(151. null] f 成员4 ffK char(151 null) 田N/ 5」的柬 IT LJ触发瞿 国用户群信息新增 1 । 7 番 m । 群ID 群名祢 群二维码成员1成员2成员3成员4 I—IM ■■ IMtd ■ | 1 1 MXW1 j 可用$碟部落 &cEF DW1 OMH W03 NULL 2 oS)02" 足避球部蓬 QcBF M)C1 0002 MULL NULL 外键约束和非空约束如下: £uf 旦.二汽 信信信 36、百君苣声名 -一11=5=足=£二■ 领禅 <0©fl-*Qlp ilzer column chir (15 noz 口3口口 Till 户户户户 URFRFT 息息息息 信信信信 川户户户 he?rr 喙己可 ccmBLrdlnt ug】rot-elgn i 1) e■1史爱W工皿 a;dd G^mstr^irt 二『7 £口「<1口11 key 嗔1年 fu 察看口仁七 m dh■: sdd ccnstrsizt 5-yS :ioixLg key xcfcscnccj db^ 三 Ed szrutrslzt sy a ^arexqn. key zeTerence 37、s dtni 由于当用户创建了一个微信群后要在 “用户所在群”表中显示出每个用户所在的群, 因此需 创建一个触发器。在此创建的 trigger为“用户信息新增”。代码如下: 口叫「徵信平告】 GO 口匕:Trigger 【位u】* |用户群息।渐增 I Sacxp^ Da^.bi 05-工。l&ta&il? ,,备・ 5ET Air3T_WULLS ON so SET GU0TED_I3€;niFIE.R QX 8 esltzr s.m- —“1」用户打信息新噌二 皿『血:】J睁辎七息】 ror insert aa cfe^lar- 'Squn^d 2har JO) r 38、 ©c:\lLldl chAr 11 S;i F $cy2 Id ehi.r IS. , @cylld char 1 !1 ; f 9 -741 d ehar ;15> select Wqiinid一群TD? *eyli 1- r &cy2 id-2^ ^,r 4 £t&h inaerted xf।Saylid 19 nn: null t«gin insert, into dbn .用户所在群 用户I口(工口) yh1u«s ; 9-箱.i d.外」nid) end £工 । ?cy2i d 工 2 口:二 u.ull begin maert into dbo.用户所在群 用户•1 39、口 .群建value a 8cy2i2期a”nid) end r£ I 2 c2,'3 It!口- - iiu.ll begin iuert mt= db*用户所在群用户,匚群“ Tallies :0“”d 尸 gun工 d] end ifi aisl -:」| :...:! begin xxLsext izitz: dh:i .月户所在群 用户1匚 群工匚 vaLue b ?cy4^dF '^crLinid; -fiQil 5、“用户所在群”表存储了每个用户所在的群信。每个用户可根据此表查询所 在群信息。当一个微信群被创建后在“用户所在群”表中将自动显示用户所在群 信息。 40、 =1 _ db.用户哥在摩 日口列 ?用户[D (PK. F《char(15); ntrt null) ?群[力(PK, FK, char^OL not null] g 巾卡 | UJ 1 用户2 群ID 1 \W] ,! 0D0D1 2 0002 W001 3 0003 CMK01 4 0001 M002 5 0002 W002 6、“群聊消息记录表”记录了每个群的消息。也可以查询历史记录。比如在群 “羽毛球部落”中的消息记录 三口列 / BMK;当息ID (PK, char(20)P not null) ?群ID (FKr 小时 41、。口L null] H 费送人(char(2D), not null] 囱 内容(varchart5000)P not null) J 宣野1 间(small datetime, null] -- ■ J-F11 群哪肖息ID 群旧 发送人 内容 发送时间 1 [OOWDOOOOI \ DOMI 小日 明天去打羽毛球 2015-05-1D 15:48:00 2 OWOOM2 D&M7 小b 下午去 201^)6-10 154500 3 (wocoowm 0OTQ1 小C 可以 201M5-10 1543:00 4 DOtMDDtXX 42、M DCHM1 小。 下午3点 2015^1015:50:00 为了使得用户在查询群历史消息时更加快速,创建索引。 sc index群消息快速查询on如□.群聊梢息记录(群工因 7、“公众号信息”表记录了所有公众号的信息。可以通过搜索公共号ID或名称 来订阅公众号。 日口列 ?公众号2 (P6丑3, not null〕 J (char(401 not null) 8、“关注”表中,存储了每个用户订阅的公众号。 3 □ dbQ.关注 臼一列 g 用户1口 (PK. F& char(15), not null) ?公有【口 伊K FK, char(20)J not n 43、ull) 」落果消息 1 用户心 1・■ 1 imillBifl ■■■■ HUBI| \ 0001 公氽^口 QOT1 2 0002 0002 3 0001 QM3 d (KXM 9、“公众号消息记录”存储公众号为订阅者发送的消息 E 口 db»公众号j省息记录 日口列 I 公触息ID CP< char^O), net null) ?公众号ID (FK, char^OX null) _2 公众消.皂(varcbar(5OOO)r net null] J 发送药间 ftimestamp, not null) 公众消息ID公众号ID公众消息 44、 OOO&DODM 0M2 秋假安排 廉政建设 发送时间 题 1541Moi收 17:00 20154&10 1€:1&00 WDOOOD06 0004 深程计划 201W51D 16:18:00 10、其余各表分别存储每个用户在微信中的信息, 通过外键引用来确定每个表中 各个用户的信息,其具体结构如下: d昌db.附近人信息 日口列 f 附(PK, chariot)], not null) f用户【CUFK,小苜r(15h mil) 图 昵称[char[20], not null । ID 建至 frit null] S) ftBl (char(5L nu 45、ll] 国地区(varchar(20)j null) 国个性签名(varcharfSOO), nullj 二I db口酱惹信息 臼LJ列 f 漂(P& chartiO]. not null) f 用户】D (F兄 charCIS), null) ?1 内客[vartzhaHSOOO] rot null] d」m口扫T信息 日口列 V 扫一S信副。(PK char(201 not null] * 用户ID (国 chartl^ null) 囿内容(var匚har(5W01 not null] 3 rfi? (sinalldatetime, null) ■Urfr = 46、1 口 日口列 t (PK char(2D)T not null) ,用户ID(F区小ar(l办null) 3 L西内容(vairha180001 null) fl 晚演门闫(sHnalldaletime. null] 上二1 dbc1靠册 日口列 ?醐【D (PK ckar(20)J rrot null) f 用户旧(FK, charCIS], null) 31 寮茎人□ yharQO] null) 3]内容(varchartSOOOJj not null) 3 存,放时向 Csmall datetime, null) U二i d ba延一备信息 臼u列 ?授T信息m (PK char^oi not null) ?用户IB (F& c*r(15),「则 S 内容即L50TO, null) J 酎间(smalldatetime, null) 一」 「・・ Mi 以上即为微信数据库平台的简单的物理设计,在具体物理设计实现时根据具 体需要对数据路平台的逻辑设计进行了部分修改,也更加具体化了数据库功能。 本数据库只是简单的对微信平台数据库的实现,其中还存在许多不足和缺陷 需进一步完善。最后,通过此次数据库的设计实现进一步熟悉了数据库相关的知 识及数据库的设计和实现
8、L程安 公众弓怡电 士 Chara d— •公众•号名侮Charactds 40) 专章入号5 Q 五人ID。仁拿8CIV5 ;20) 士电Ume3m[20) 7存么片同C>tt i rifnt • 丹号 MBTisbl, dweten (5000) V.e闺 会演老3t 运众a送 X4 W 衣58借专 2 衣1。 CharaztgZ): o也包交同Date 8 Time o 上祟力建 VoriablQ ohora^ers (10COO) Charaaefi(20) l-nase 100i Variable character (1000) V 言芸j.招
9、生 mm转息记录 « 「里ID Characteft (2C) •发送人 Chiroctorz (20) •安次人 Chvocteo (20) •丹叁 van a Die cnarsaen(OOOC) 、• 3MWB! Dale & Time . Cbaacters(20) CbB*AetAf« ((5) Cba*octeo(20) vanaoe crs-acters(20) Variabe c^a-acters (50C) Vfiriaha c±flractofc (20) J8 看一
10、 三、逻辑设计 由以上概念设计模型,我们可以获得以下逻辑数据模型( LDM tMB8 >装广 "4出礴 ♦ ¥> q也用n凋 --u总与司 al前曾 门 nHadan _2£ 一 ch&T*「停二违 0T-HK3Jsl ".■(■,Un -n qD-uHG 再IT--。 O军占$窘7 &£c讣3『T苍 口m E T-m r . ii 4 0 □ It &- 1 0 H R 1 A r i ii ■ 口 i i; 日 n n 4 口 d U rv e a r i f y J 1
11、 3 Li ■ ¥ ■ "" A 盾 n j u $ * ii AIA破.声 冲.掂—前ma 口牙比里白WElhJr M Tuu fEERH 中黑a0曾Pr-T-HMI P青 崎 v&dA'ble cT LJ生,SKiO dLllraE I«|而皿皿In- "ns 计 eM机 Own:廿 tts =-31 • IT• oHHiR T 一^ ・ 年<14<七吊。者 U-^SAHS ,n^ 晔2gn1■早二|1|n」 Q.1JUH15" ♦导嚼 前nsDgarBJQ毁 一*|口13号 二 F Iliff U 祐U I . ——r;- cka-rE・s-* c
12、tlraL-Ers 二" 9**«-as 2ch DzianT-rw <1西江小笈5 Mes d.ll°5t.iiL* 年lff:DIII1B1 艮EArzay 春1>'■■ s・«a里二 ・ HH0W_5・£_G5 nd ◎stall・山m. . 1 2 9as^3 片‘ ■CJhTEWn20』 一3番±1昌 -1 言》 h-" b■启4 -flns Gd_EdiErs E.. *nT Blur*dK^ -H) V^r-PIF, EilEacian -{Mq一 <嗝O3m 噌号£ 匕'I'•工N 色-fljllu cl仔・中』 力帝・as y w. n _.20b
13、将而a J吊 5r 占 200- o tr 1■♦蛇 ,占甲 *lqs*is ls&3§
14、^ A? 口胃鼻冠lizFa*口 外鞫 MH- r MUS char-3 w Jl * -ocharyw fc-E-w 手E_DlJi言 **c: 踣有>&W.B >丽 .HuhxEOODj 划p:17 由 ^Tivff-3-v ,-IfflillaT-lTM 心防前R 涸 hnn ■ r*3方向不・出UM.Midi砧暗, GMESKW^ .=u%a— Em urTMM学巨 M% 云口 w_.有号 A^v li-iHMlli-u. 立 飞 郭 6 Aarfa^ 稿 BJC" dl、-0 AM 鼻 A? Jr415』(KXS) MITlWE 阳酒 J> euXLal
15、/ AffMtrDly Il/ 叼科Tr西鼻 廿hary Al1寺 V 廿 If■ OMAi 修Mc・rdMrt293 小麻髀的 so&Bff 脚Iv制SI 修川•1-1j.r!:二 四.。- Q c*w¥ 4IV ff口 孰胃? JUJD Asv 痢科停蜘1?%叫一吵》 潭& A ch#4整 埼“中山 rmtvnETmo 注钟 dpIJtlm* LWrGlu岂三片「「;7 二 一口 .luErs m
16、F I ri* * M.E 从如% 注后.E i.'117 - 广/1>中小律—招,|!-%中抑,诲|«强小 If'”阿 3 01 h#—臀鬻 R 恂羯iwll-ff富IliF - J一一可-smrt ba-=i垢G YL 1 菖. 厚4I,E 尸审h)ll_KJI回”号由 惜少>>)|脸曲q$4¥ 带冷*I.JtE也* mLllaInQ£l-plr>士. 心 k. H n my " WRa总MII的竹RAa.a 壬® 寻药曲<兽?。X34O) ,SW4^ ffav 在PDW显示了个表单之间的引用关系,其具体引用如下表:
17、 标间关系名称 父表格 子表格 关注 用户信息 关注 关注 公众号信息 关注 发送 公众号信息 公众号消息记录 发送/接收 用户信息 普通消息记录 发送消息 用户信息 群聊消息记录 收藏 用户信息 收藏信息 查看 联系人信息 普通消息记录 用户存放 用户信息 『摇信息 用户所在群 用户信息 用户所在群 用户所在群 微信群信息 用户所在群 用户所属
18、 用户信息 漂流瓶信息 用户扫寸而获得 用户信息 『扫信息 用户相册 用户信息 相册 用户联系人 用户信息 联系人信息 群聊天记录 微信群信息 群聊消息记录 联系人相册 联系人信息 相册 状取 用户信息 附近人信息 本系统中使用的表单如下所示: 1、用户信息表 Name Data Type Length P (主键) F (外键) M (/、可为空) 用户ID char(15) 15 X X 昵称 char(20) 20 X 头像 long binary 二维码名片 long
19、 binary X 我的地址 varchar(100) 100 性别 char(5) 5 X 地区 varchar(20) 20 X 个性签名 varchar(500) 500 登陆密码 varchar(20) 20 X 2、普通消息记录表 Name Data Type Length P F M 消息ID char(20) 20 X X 联系人ID char(15) 15 X 用户ID char(15) 15 X 为容 var
20、char(5000) 5,000 X 发送时间 datetime X 3、联系人表 Name Data Type Length P F M 朋友ID char(20) 20 X X 用户ID char(15) 15 X 备注名称 char(20) 20 X 标签 varchar(20) 20 4、公众号信息表 Name Data Type Length P F M 公众号ID char(20) 20 X X 公众号名称 char(40
21、) 40 X 5、公众号消息记录表 Name Data Type Length P F M 公众消息ID char(20) 20 X X 公众号ID char(20) 20 X 公众消息 varchar(5000) 5,000 X 订阅者 varchar(8000) 8,000 X 发送时间 timestamp X 6、关注表 Name Data Type Length P F M 用户ID char(15) 15 X X X 公众号ID ch
22、ar(20) 20 X X X 7、微信群信息表 Name Data Type Length P F M 群ID char(20) 20 X X 群名称 char(20) 20 X 群二维码 long binary X 群成员 varchar(1000) 1,000 X 8、用户所在群表 Name Data Type Length P F M 用户ID char(15) 15 X X X 群ID char(20) 20 X X X 9、群聊消息记录
23、表 Name Data Type Length P F M 群聊消息ID char(20) 20 X X 群ID char(20) 20 X 发送人 char(20) 20 X 发送时间 timestamp X 内容 varchar(5000) 5,000 X 10、相册表 Name Data Type Length P F M 相册ID char(20) 20 X X 用户ID char(15) 15 X 联系人ID char(20) 20
24、 X 存放时间 timestamp X 内容 varchar(5000) 5,000 X 11、收藏信息表 Name Data Type Length P F M 收藏ID char(20) 20 X X 用户ID char(15) 15 X 收藏时间 timestamp 收藏内容 varchar(8000) 8,000 12、附近人信息表 Name Data Type Length P F M 附近人ID char(20) 20 X
25、 X 用户ID char(15) 15 X 昵称 char(20) 20 X 距离 integer 性别 char(5) 5 地区 varchar(20) 20 个性签名 varchar(500) 500 13、摇一摇信息表 Name Data Type Length P F M 摇一摇信息 ID char(20) 20 X X 用户ID char(15) 15 X 时间 timestamp 内容 va
26、rchar(5000) 5,000 14、扫一扫信息表 Name Data Type Length P F M 扫一扫信息 ID char(20) 20 X X 用户ID char(15) 15 X 时间 timestamp 内容 varchar(5000) 5,000 X 15、漂流瓶信息表 Name Data Type Length P F M 漂流瓶ID char(20) 20 X X 用户ID char(15) 15 X 内容
27、 varchar(5000) 5,000 X 对于微信数据库平台的逻辑分析,明确了在具体是实现时所需的表及其各个 表之间的引用关系,在接下来的物理设计中将使用逻辑设计中的表在具体数据库 实现微信数据库平台的设计。 四、物理设计 在此次物理实现微信数据库平台使用 SQL Server 2008。实现简单的微信平 台的数据库,通过在数据库表中插入数据或查看数据来表现微信平台对信息的发 送接收及查看。 在此次物理实现是我们遵循3NE 数据库设计如下图: 3 4党信平台 +」数据库关量图 尸口表 团□此□附近人信息 +) J 6匕6公众号消.皂:己灵 3 口此。
28、公众号信息 3 _j晶口关注 司 3 dboKMA 国3北日霹邮信息 士二I此白苔国自息记录 用_j此0靠融消息记录 +1二]北口扫一3信息 +) _□此口,环畸信息 ±1 □ dbo徵信群信息 +1 3 dbcr柜册 □ □此口提T信息 由J此口用户所在群 1 _J此0用户信息 if LJ视图 1、向“用户信息”表添加记录,模拟微信在线用户。此次添加三个用户作为模 拟的微信用户。用户基本信息如下: 日圉db□,用户信.名 二 I 一i 到 f 用户I。tPK, char[15L not null) i n 呢称(chd<2 01 not null) 圉 头焦(binary
29、(l), null) iT1 二维膏名片(binary〔1). not null) 国 我花地址 tvarcbar(lOO), null) H 性物(chard not null] E 地区(varchar(20)t not null) 1=1 个性卷名[varthar(5OO), null) H 登陆宝毛(wanchart2O), rot null) 2、我们选取“小a”登陆微信,开始添加联系人。“联系人”表保存每个用户 的联系人信息,这些联系人信息皆来自用户信息表。“小 a”的联系人如下表: 此表的创建过程如下: nst nuLlf 用用朋标 ID char H5)
30、 n9t noil f scziBtrairt p Hcarvims db*用户宿息痈户ID卜. 一一.1 月破ID "e -i r 用户ID 朋友笛在名 标箜 1 1 W0Z 0001 明B月 同学 2 0M3 0M1 NULL NULL 3、普通用户发送消息时,消息内容将存储在“普通消息记录”表中,如现在“小 a”向“小b”发送一条
31、消息,然后“小b”再回复一条。“小a”也向“小c” 发送一条消息。 dbd普圜鳄记录 臼口更I ? 声息JD (PKd char[20j,, not null) ?联口 (FK. chdr(151 nulD 'f 用口【D (FK. char[15)r null) 直内容"archarf5000), not nidi) =1 发送Tj1闫汨己tetirri亡,not null] 消息? 联系人旧用户ID内容 发送时间 1 「证丽30002 DM1 F午5点去球场踢球 2015-D5-K 1135:32040 2 丽而2 0001 0002 可以,下午涉场见 20154P5-
32、1011:36:17207 3 000003 0003 0W1 你好 2015-05-1012581EB3J 其中表中的外键约束和默认值如下: 箱13匚GSHe 0c,百通捎 目记无 单口4 gnapgJL口t 门司fnz工g 曜丁 欣/人工匚 Humreca* 80*用户信息 用 户二口 sl tEE t isble dba .普通稍息布察 edd 匚口口口七匚勺七口t. 5kt E3re-ign 三口匚D) ruEuHuncun i±d用卢।信虑£用卢工「 alter table 01tle-廿通捎息记录 ad:l 发送时间 日"“工口七 7c 、 default HMbEet
33、 在”普通消息记录表”中也可以查询两个用户之间的聊天记录,如查询“小 a” 和”小b ”之间的聊天记录: II 乩工。内容「发颜1间£工口小 侬春 「岫七a SfcMAjS m('0001\ f0002*) and 111(-0001' , *0002*) ,j55…__…_…_ ___发医时间 1 |取而后云标立।霭隹1 201531。11:35:32,040 VIIBIIAIBIIlUillll l&lll IlbU ■IIUdlliaMIIHIIMHIIIIKIIII iJ 2 可以,下午球场见 20154&10 11 36:17207 同样也可以在“普通消消息记录表”中
34、实现删除消息记录。 在“普通消息记录”表中为了能使用户更快的查询自己的消息记录, 这里创建 了索引。 create index用户快速查询记录皿普通消息记录f用户1口) 4、“微信群信息”表中记录了所有用户创建的微信群的信息。由于在微信中群 成员数量当前限制为40个,在本平台中我们设置为4个。并且每一个成员信息 由外键引用自“用户信息”表。比如现在创建了两个个微信群如下: H匕口.滞信其传导 上Li列 ? 荫口 (P<, char(2Ol not null'! 图 辞名林(char(2D). not null) 国 群二(binary(l)f not nul
35、l) f (F< char[15), not null) f 成员2 (FK ch雨口5). nW) f OS3 (F< eh3r(151. null] f 成员4 ffK char(151 null) 田N/ 5」的柬 IT LJ触发瞿 国用户群信息新增 1 । 7 番 m । 群ID 群名祢 群二维码成员1成员2成员3成员4 I—IM ■■ IMtd ■ | 1 1 MXW1 j 可用$碟部落 &cEF DW1 OMH W03 NULL 2 oS)02" 足避球部蓬 QcBF M)C1 0002 MULL NULL 外键约束和非空约束如下: £uf 旦.二汽 信信信
36、百君苣声名 -一11=5=足=£二■ 领禅 <0©fl-*Qlp ilzer column chir (15 noz 口3口口 Till 户户户户 URFRFT 息息息息 信信信信 川户户户 he?rr 喙己可 ccmBLrdlnt ug】rot-elgn i 1) e■1史爱W工皿 a;dd G^mstr^irt 二『7 £口「<1口11 key 嗔1年 fu 察看口仁七 m dh■: sdd ccnstrsizt 5-yS :ioixLg key xcfcscnccj db^ 三 Ed szrutrslzt sy a ^arexqn. key zeTerence
37、s dtni 由于当用户创建了一个微信群后要在 “用户所在群”表中显示出每个用户所在的群, 因此需 创建一个触发器。在此创建的 trigger为“用户信息新增”。代码如下: 口叫「徵信平告】 GO 口匕:Trigger 【位u】* |用户群息।渐增 I Sacxp^ Da^.bi 05-工。l&ta&il? ,,备・ 5ET Air3T_WULLS ON so SET GU0TED_I3€;niFIE.R QX 8 esltzr s.m- —“1」用户打信息新噌二 皿『血:】J睁辎七息】 ror insert aa cfe^lar- 'Squn^d 2har JO) r
38、 ©c:\lLldl chAr 11 S;i F $cy2 Id ehi.r IS. , @cylld char 1 !1 ; f 9 -741 d ehar ;15> select Wqiinid一群TD? *eyli 1- r &cy2 id-2^ ^,r 4 £t&h inaerted xf।Saylid 19 nn: null t«gin insert, into dbn .用户所在群 用户I口(工口) yh1u«s ; 9-箱.i d.外」nid) end £工 । ?cy2i d 工 2 口:二 u.ull begin maert into dbo.用户所在群 用户•1
39、口 .群建value a 8cy2i2期a”nid) end r£ I 2 c2,'3 It!口- - iiu.ll begin iuert mt= db*用户所在群用户,匚群“ Tallies :0“”d 尸 gun工 d] end ifi aisl -:」| :...:! begin xxLsext izitz: dh:i .月户所在群 用户1匚 群工匚 vaLue b ?cy4^dF '^crLinid; -fiQil 5、“用户所在群”表存储了每个用户所在的群信。每个用户可根据此表查询所 在群信息。当一个微信群被创建后在“用户所在群”表中将自动显示用户所在群 信息。
40、 =1 _ db.用户哥在摩 日口列 ?用户[D (PK. F《char(15); ntrt null) ?群[力(PK, FK, char^OL not null] g 巾卡 | UJ 1 用户2 群ID 1 \W] ,! 0D0D1 2 0002 W001 3 0003 CMK01 4 0001 M002 5 0002 W002 6、“群聊消息记录表”记录了每个群的消息。也可以查询历史记录。比如在群 “羽毛球部落”中的消息记录 三口列 / BMK;当息ID (PK, char(20)P not null) ?群ID (FKr 小时
41、。口L null] H 费送人(char(2D), not null] 囱 内容(varchart5000)P not null) J 宣野1 间(small datetime, null] -- ■ J-F11 群哪肖息ID 群旧 发送人 内容 发送时间 1 [OOWDOOOOI \ DOMI 小日 明天去打羽毛球 2015-05-1D 15:48:00 2 OWOOM2 D&M7 小b 下午去 201^)6-10 154500 3 (wocoowm 0OTQ1 小C 可以 201M5-10 1543:00 4 DOtMDDtXX
42、M DCHM1 小。 下午3点 2015^1015:50:00 为了使得用户在查询群历史消息时更加快速,创建索引。 sc index群消息快速查询on如□.群聊梢息记录(群工因 7、“公众号信息”表记录了所有公众号的信息。可以通过搜索公共号ID或名称 来订阅公众号。 日口列 ?公众号2 (P6丑3, not null〕 J (char(401 not null) 8、“关注”表中,存储了每个用户订阅的公众号。 3 □ dbQ.关注 臼一列 g 用户1口 (PK. F& char(15), not null) ?公有【口 伊K FK, char(20)J not n
43、ull) 」落果消息 1 用户心 1・■ 1 imillBifl ■■■■ HUBI| \ 0001 公氽^口 QOT1 2 0002 0002 3 0001 QM3 d (KXM 9、“公众号消息记录”存储公众号为订阅者发送的消息 E 口 db»公众号j省息记录 日口列 I 公触息ID CP< char^O), net null) ?公众号ID (FK, char^OX null) _2 公众消.皂(varcbar(5OOO)r net null] J 发送药间 ftimestamp, not null) 公众消息ID公众号ID公众消息
44、 OOO&DODM 0M2 秋假安排 廉政建设 发送时间 题 1541Moi收 17:00 20154&10 1€:1&00 WDOOOD06 0004 深程计划 201W51D 16:18:00 10、其余各表分别存储每个用户在微信中的信息, 通过外键引用来确定每个表中 各个用户的信息,其具体结构如下: d昌db.附近人信息 日口列 f 附(PK, chariot)], not null) f用户【CUFK,小苜r(15h mil) 图 昵称[char[20], not null । ID 建至 frit null] S) ftBl (char(5L nu
45、ll] 国地区(varchar(20)j null) 国个性签名(varcharfSOO), nullj 二I db口酱惹信息 臼LJ列 f 漂(P& chartiO]. not null) f 用户】D (F兄 charCIS), null) ?1 内客[vartzhaHSOOO] rot null] d」m口扫T信息 日口列 V 扫一S信副。(PK char(201 not null] * 用户ID (国 chartl^ null) 囿内容(var匚har(5W01 not null] 3 rfi? (sinalldatetime, null) ■Urfr =
46、1 口 日口列 t (PK char(2D)T not null) ,用户ID(F区小ar(l办null) 3 L西内容(vairha180001 null) fl 晚演门闫(sHnalldaletime. null] 上二1 dbc1靠册 日口列 ?醐【D (PK ckar(20)J rrot null) f 用户旧(FK, charCIS], null) 31 寮茎人□ yharQO] null) 3]内容(varchartSOOOJj not null) 3 存,放时向 Csmall datetime, null) U二i d ba延一备信息 臼u列 ?授T信息m (PK char^oi not null) ?用户IB (F& c*r(15),「则 S 内容即L50TO, null) J 酎间(smalldatetime, null) 一」 「・・ Mi 以上即为微信数据库平台的简单的物理设计,在具体物理设计实现时根据具 体需要对数据路平台的逻辑设计进行了部分修改,也更加具体化了数据库功能。 本数据库只是简单的对微信平台数据库的实现,其中还存在许多不足和缺陷 需进一步完善。最后,通过此次数据库的设计实现进一步熟悉了数据库相关的知 识及数据库的设计和实现
copyright@ 2023-2025 zhuangpeitu.com 装配图网版权所有 联系电话:18123376007
备案号:蜀ICP备2024067431号-1 川公网安备51140202000466号
本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!