微信数据库分析与设计

上传人:文*** 文档编号:33768460 上传时间:2021-10-19 格式:DOCX 页数:23 大小:471.48KB
收藏 版权申诉 举报 下载
微信数据库分析与设计_第1页
第1页 / 共23页
微信数据库分析与设计_第2页
第2页 / 共23页
微信数据库分析与设计_第3页
第3页 / 共23页
资源描述:

《微信数据库分析与设计》由会员分享,可在线阅读,更多相关《微信数据库分析与设计(23页珍藏版)》请在装配图网上搜索。

1、微信数据库分析与设计一、需求分析微信作为当前的主要即时通讯工具之一,有着广泛的应用。其主要的功能是 实现即时通信,这也是微信的核心功能。此外还有查看朋友圈动态、搜索好友、 管理个人信息、建立用户自己的相册、收藏功能、摇一摇、搜索附近的人、购物、 游戏等功能。此次对于微信平台的数据库设计主要对部分需要微信平台提供存储 信息功能进行需求分析及设计。以下将对微信平台的主要需求做简要的分析并且 根据分析做出数据流图使得对于微信平台数据库的设计有更好的理解。微信的通信主要包括与微信好友进行相互通信,这其中通信内容包括文字、 语音、图片及视频。当用户订阅了公众号之后,会接收公众号发送的消息并且也 可向公众

2、号发信息或许其提供的信息。微信通信功能的另一个主要方面是实现群聊。用户可以加入一个微信群进行 群。另一方面用户也可以选择自己的联系人进行群聊。微信中通讯录实现了保存用户联系人的目的,并且订阅的公众号也保存于通 讯录中,并且在通讯录中可以设定标签来为联系人分组。微信朋友圈保存好友发送的与朋友共享的消息,其内容可为文字、图片、视 频。在朋友圈中可以设定权限使得不同权限的用户查看的内容不一样。摇一摇功能可以获取同一时刻一起摇动手机的用户,并且暂存于微信中。附近的人功能可以识别在一定范围内的微信用户,并且将获得的用户信息也 暂存在微信中,对于识别附近的用户可以设定具体的条件来扫描。漂流瓶功能相当于随机

3、的获取微信消息或者向微信用户随机的发送消息。对于个人信息的编辑,用户可以根据自身需要编辑一些所需的个人信息。最后在微信用户个人信息中有相册和收藏记录用户的照片和收藏的文字语音 等信息。以上是对微信的部分功能的需求分析,现根据以上需求对微信数据库画出数 据流图:第0层DFD第1层DFD二、概念设计在第一步的需求分析中,我们了解了微信数据库平台设计中所需要的实体及需要存储的信息。 在概念设计中将进一步明确数据库设计所需实体, 实体所具有的属性及实体之间的关系。通过分析微信数据库平台所需实体主要有:用户信息、普通消息记录、公众号信息、公众号消息记录、微信群信息、群聊消息记录、收藏信息、相册、朋友圈信

4、息、联系人信息、附近人信息、漂流瓶信息、扫一扫信息、摇一摇信息。这些实体分别对应于微信功能的不同模块。在实现微信的通信功能主要是使用用户信息、普通消息记录、微信群信息、群聊消息记录和联系人信息这几个实体。在明确所需实体后根据实际需要对于每个实体设置符合实际情况的属性,每个属性对应了数据库中的具体属性。下图是根据对于微信数据库平台的需求分析做出的CDM通过此概念模型显示数据库之间各实体之间的相互关系及各个实体所具有的实际属性。容他 3何一 三二;一二 区信发x濡F5”cttn (20, Chgrseten (20)Varablc choroct&r: (6030) Cale & TimeChar

5、acten (20)Vroble chwncfn (100)Cote & Time# fcJJD雯称 O忌高O o o。个令箕与落运人情息,Cnfiracten 12dCnoroctcr: (20IrtegerCnaracters (5)Vrible cnnncf*n (20lArable cwoaters :一,Coto & TimchaiKUn (X)0C)两向?3-515.“ *一包 W,IC C9,s20)Dt 6 TinwVariate cha-aaers (000且云上知D C、o,n |二0:内亨 VM * la6,OCUfS(800)髀&I粤力7手守发送人发送封堂Ch,rd5

6、2C)裳林岁东人。二步七名闿 o城区o个隹8名V=r.Car3cte-s 15) C卜anadGrc 20)Chapdus 2J) imaje (100) Iec,(100)VorisblQ shocct。100) cr (20)Ch*rar 20)Charaae3 20)Ds:e&TmeVariobla sharActQQ (5CO9)、A发送消息天云次s 1D暮自生-妄二金天5 (20Chsrrttt i rifnt 丹号 MBTisbl, dweten (5000)V.e闺会演老3t运众a送X4 W衣58借专2 衣1。 CharaztgZ):o也包交同Date 8 Timeo 上祟力建

7、VoriablQ ohoraers (10COO)Charaaefi(20) l-nase 100iVariable character (1000)V言芸j.招生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 ca-acters (50C) Vfiriaha cflractofc (20

8、)J8 看一三、逻辑设计由以上概念设计模型,我们可以获得以下逻辑数据模型( LDMtMB8 装广4出礴 q也用n凋 -u总与司al前曾门 nHadan _2 一 ch&T*停二违 0T-HK3Jsl.(,Un -n qD-uHG 再IT-。O军占$窘7&c讣3T苍 口m E T-mr . ii40It&- 10 HR 1A ri ii 口ii; 日 n n4 口 d U rv ea r ifyJ13 Li A盾n ju $*iiAIA破.声 冲.掂前ma 口牙比里白WElhJr M Tuu fEERH 中黑a0曾Pr-T-HMI P青 崎 v&dAble cT LJ生,SKiOdLllraE

9、I|而皿皿In- ns 计 eM机 Own:廿 tts =-31 IT oHHiR T 一 年14七吊。者 U-SAHS,n晔2gn1早二|1|nQ.1JUH15导嚼 前nsDgarBJQ毁 一*|口13号二F IliffU 祐U I. r;- cka-rEs-* ctlraL-Ers 二 9*-as 2ch DzianT-rw sa里二 HH0W_5_G5ndstall山m. . 1 29as3 片CJhTEWn20 一3番1昌-1 言h- b启4 -flns Gd_EdiErs E.*nT Blur*dK -H) Vr-PIF, EilEacian -Mq一 嗝O3m 噌号 匕I工N色-f

10、ljllu cl仔中力帝asy w. n _.20b将而a J吊5r 占 200-o tr1蛇,占甲*lqs*is ls&3 A? 口胃鼻冠lizFa*口 外鞫MH- rMUS 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%aEm urTMM学巨M% 云口 w_.有号Avli-iHMlli-u.立 飞 郭 6 Aarfa 稿 BJC dl、-0 AM 鼻 A? Jr415(K

11、XS)MITlWE阳酒J euXLal / AffMtrDly Il/ 叼科Tr西鼻 廿haryAl1寺 V 廿If OMAi 修McrdMrt293 小麻髀的 so&Bff 脚Iv制SI修川1-1j.r!:二 四.。- Q c*w 4IV ff口 孰胃? JUJD Asv 痢科停蜘1?%叫一吵 潭& A ch#4整 埼“中山 rmtvnETmo注钟dpIJtlm*LWrGlu岂三片;7 二 一口 .luErs mFI ri* * M.E 从如 注后.E i.117 - 广/1中小律招,|!-%中抑,诲|强小If”阿 3 01 h#臀鬻 R 恂羯iwll-ff富IliF -J一一可-smrtb

12、a-=i垢GYL 1 菖.厚4I,E 尸审h)ll_KJI回”号由 惜少)|脸曲q$4带冷*I.JtE也*mLllaInQl-plr士. 心 k. H n my WRa总MII的竹RAa.a壬寻药曲兽?。X34O) ,SW4 ffav在PDW显示了个表单之间的引用关系,其具体引用如下表:标间关系名称父表格子表格关注用户信息关注关注公众号信息关注发送公众号信息公众号消息记录发送/接收用户信息普通消息记录发送消息用户信息群聊消息记录收藏用户信息收藏信息查看联系人信息普通消息记录用户存放用户信息摇信息用户所在群用户信息用户所在群用户所在群微信群信息用户所在群用户所属用户信息漂流瓶信息用户扫寸而获得用

13、户信息扫信息用户相册用户信息相册用户联系人用户信息联系人信息群聊天记录微信群信息群聊消息记录联系人相册联系人信息相册状取用户信息附近人信息本系统中使用的表单如下所示:1、用户信息表NameData TypeLengthP (主键)F (外键)M (/、可为空)用户IDchar(15)15XX昵称char(20)20X头像long binary二维码名片long binaryX我的地址varchar(100)100性别char(5)5X地区varchar(20)20X个性签名varchar(500)500登陆密码varchar(20)20X2、普通消息记录表NameData TypeLength

14、PFM消息IDchar(20)20XX联系人IDchar(15)15X用户IDchar(15)15X为容varchar(5000)5,000X发送时间datetimeX3、联系人表NameData TypeLengthPFM朋友IDchar(20)20XX用户IDchar(15)15X备注名称char(20)20X标签varchar(20)204、公众号信息表NameData TypeLengthPFM公众号IDchar(20)20XX公众号名称char(40)40X5、公众号消息记录表NameData TypeLengthPFM公众消息IDchar(20)20XX公众号IDchar(20)2

15、0X公众消息varchar(5000)5,000X订阅者varchar(8000)8,000X发送时间timestampX6、关注表NameData TypeLengthPFM用户IDchar(15)15XXX公众号IDchar(20)20XXX7、微信群信息表NameData TypeLengthPFM群IDchar(20)20XX群名称char(20)20X群二维码long binaryX群成员varchar(1000)1,000X8、用户所在群表NameData TypeLengthPFM用户IDchar(15)15XXX群IDchar(20)20XXX9、群聊消息记录表NameData

16、 TypeLengthPFM群聊消息IDchar(20)20XX群IDchar(20)20X发送人char(20)20X发送时间timestampX内容varchar(5000)5,000X10、相册表NameData TypeLengthPFM相册IDchar(20)20XX用户IDchar(15)15X联系人IDchar(20)20X存放时间timestampX内容varchar(5000)5,000X11、收藏信息表NameData TypeLengthPFM收藏IDchar(20)20XX用户IDchar(15)15X收藏时间timestamp收藏内容varchar(8000)8,00

17、012、附近人信息表NameData TypeLengthPFM附近人IDchar(20)20XX用户IDchar(15)15X昵称char(20)20X距离integer性别char(5)5地区varchar(20)20个性签名varchar(500)50013、摇一摇信息表NameData TypeLengthPFM摇一摇信息IDchar(20)20XX用户IDchar(15)15X时间timestamp内容varchar(5000)5,00014、扫一扫信息表NameData TypeLengthPFM扫一扫信息IDchar(20)20XX用户IDchar(15)15X时间timesta

18、mp内容varchar(5000)5,000X15、漂流瓶信息表NameData TypeLengthPFM漂流瓶IDchar(20)20XX用户IDchar(15)15X内容varchar(5000)5,000X对于微信数据库平台的逻辑分析,明确了在具体是实现时所需的表及其各个表之间的引用关系,在接下来的物理设计中将使用逻辑设计中的表在具体数据库 实现微信数据库平台的设计。四、物理设计在此次物理实现微信数据库平台使用SQL Server 2008。实现简单的微信平台的数据库,通过在数据库表中插入数据或查看数据来表现微信平台对信息的发 送接收及查看。在此次物理实现是我们遵循3NE数据库设计如下

19、图:3 4党信平台+数据库关量图 尸口表团此附近人信息+) J 6匕6公众号消.皂:己灵 3 口此。公众号信息 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, char15L not null)i n 呢称(chd2 01

20、 not null)圉 头焦(binary(l), null)iT1 二维膏名片(binary1). not null)国 我花地址 tvarcbar(lOO), null)H 性物(chard not nullE 地区(varchar(20)t not null)1=1 个性卷名varthar(5OO), null)H 登陆宝毛(wanchart2O), rot null)2、我们选取“小a”登陆微信,开始添加联系人。“联系人”表保存每个用户的联系人信息,这些联系人信息皆来自用户信息表。“小a”的联系人如下表:此表的创建过程如下:nst nuLlf用用朋标ID char H5) n9t no

21、il fscziBtrairt p Hcarvims db*用户宿息痈户ID卜.一一.1月破IDe -i r用户ID朋友笛在名标箜11 W0Z0001明B月同学20M30M1NULLNULL3、普通用户发送消息时,消息内容将存储在“普通消息记录”表中,如现在“小 a”向“小b”发送一条消息,然后“小b”再回复一条。“小a”也向“小c” 发送一条消息。dbd普圜鳄记录臼口更I? 声息JD (PKd char20j, not null)?联口 (FK. chdr(151 nulDf 用口【D (FK. char15)r null)直内容archarf5000), not nidi)=1 发送Tj1

22、闫汨己tetirri亡,not null消息? 联系人旧用户ID内容发送时间1证丽30002 DM1F午5点去球场踢球 2015-D5-K 1135:320402丽而200010002可以,下午涉场见20154P5-1011:36:17207300000300030W1你好2015-05-1012581EB3J其中表中的外键约束和默认值如下:箱13匚GSHe 0c,百通捎 目记无 单口4 gnapgJL口t 门司fnz工g 曜丁 欣/人工匚 Humreca* 80*用户信息 用 户二口sl tEE t isble dba .普通稍息布察 edd 匚口口口七匚勺七口t. 5kt E3re-ign

23、三口匚D) ruEuHuncun id用卢信虑用卢工alter table 01tle-廿通捎息记录 ad:l 发送时间 日“工口七 7c 、 default HMbEet在”普通消息记录表”中也可以查询两个用户之间的聊天记录,如查询“小a”和”小b ”之间的聊天记录:II 乩工。内容发颜1间工口小 侬春岫七a SfcMAjS m(0001 f0002*) and111(-0001 , *0002*),j55_ _发医时间1|取而后云标立霭隹1 201531。11:35:32,040VIIBIIAIBIIlUillll l&lll IlbU IIUdlliaMIIHIIMHIIIIKIIII

24、iJ2 可以,下午球场见20154&10 11 36:17207同样也可以在“普通消消息记录表”中实现删除消息记录。在“普通消息记录”表中为了能使用户更快的查询自己的消息记录,这里创建了索引。create index用户快速查询记录皿普通消息记录f用户1口)4、“微信群信息”表中记录了所有用户创建的微信群的信息。由于在微信中群成员数量当前限制为40个,在本平台中我们设置为4个。并且每一个成员信息由外键引用自“用户信息”表。比如现在创建了两个个微信群如下:H匕口.滞信其传导上Li列? 荫口 (P, char(2Ol not null!图 辞名林(char(2D). not null)国 群二(b

25、inary(l)f not null) f (F char15), 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成员4IIM IMtd |11 MXW1 j 可用$碟部落&cEFDW1OMHW03NULL2oS)02 足避球部蓬QcBFM)C10002MULLNULL外键约束和非空约束如下:uf 旦.二汽 信信信 百君苣声名 -一11=5=足=二 领禅0fl-*Qlpilzer

26、column chir (15 noz口3口口Till户户户户URFRFT息息息息信信信信川户户户he?rr喙己可 ccmBLrdlnt ug】rot-elgn i 1) e1史爱W工皿 a;dd Gmstrirt二7口 select Wqiinid一群TD? *eyli 1- r &cy2 id-2,r4 t&h inaertedxfSaylid 19 nn: nulltgininsert, into dbn .用户所在群 用户I口(工口) yh1us ; 9-箱.i d.外nid) end工 ?cy2i d 工 2 口:二 u.ullbeginmaert into dbo.用户所在群 用户

27、1口 .群建value a 8cy2i2期a”nid) endr I 2 c2,3 It!口- - iiu.llbeginiuert mt= db*用户所在群用户,匚群“ Tallies :0“”d 尸 gun工 dendifi aisl -:| :.:!beginxxLsext izitz: dh:i .月户所在群 用户1匚 群工匚 vaLue b ?cy4dF crLinid;-fiQil5、“用户所在群”表存储了每个用户所在的群信。每个用户可根据此表查询所 在群信息。当一个微信群被创建后在“用户所在群”表中将自动显示用户所在群 信息。=1 _ db.用户哥在摩日口列?用户D (PK. F

28、char(15); ntrt null)?群力(PK, FK, charOL not nullg 巾卡 | UJ1用户2群ID1W,! 0D0D120002W00130003CMK0140001M00250002W0026、“群聊消息记录表”记录了每个群的消息。也可以查询历史记录。比如在群“羽毛球部落”中的消息记录三口列/ BMK;当息ID (PK, char(20)P not null)?群ID (FKr 小时。口L nullH 费送人(char(2D), not null囱 内容(varchart5000)P not null)J 宣野1 间(small datetime, null- J

29、-F11群哪肖息ID群旧发送人内容发送时间1OOWDOOOOI DOMI小日明天去打羽毛球2015-05-1D 15:48:002OWOOM2D&M7小b下午去201)6-10 1545003(wocoowm0OTQ1小C可以201M5-10 1543:004DOtMDDtXXMDCHM1小。下午3点20151015:50:00为了使得用户在查询群历史消息时更加快速,创建索引。sc index群消息快速查询on如.群聊梢息记录(群工因7、“公众号信息”表记录了所有公众号的信息。可以通过搜索公共号ID或名称 来订阅公众号。日口列?公众号2 (P6丑3, not nullJ(char(401 no

30、t null)8、“关注”表中,存储了每个用户订阅的公众号。3 dbQ.关注臼一列g 用户1口 (PK. F& char(15), not null)?公有【口 伊K FK, char(20)J not null)落果消息1用户心1 1 imillBifl HUBI| 0001公氽口QOT120002000230001QM3d(KXM9、“公众号消息记录”存储公众号为订阅者发送的消息E 口 db公众号j省息记录日口列I 公触息ID CP charO), net null)?公众号ID (FK, charOX null)_2 公众消.皂(varcbar(5OOO)r net null J 发送药

31、间 ftimestamp, not null)公众消息ID公众号ID公众消息OOO&DODM 0M2秋假安排廉政建设发送时间题 1541Moi收 17:0020154&10 1:1&00WDOOOD06 0004深程计划 201W51D 16:18:0010、其余各表分别存储每个用户在微信中的信息, 通过外键引用来确定每个表中各个用户的信息,其具体结构如下:d昌db.附近人信息日口列f 附(PK, chariot), not null)f用户【CUFK,小苜r(15h mil)图 昵称char20, not null ID 建至 frit nullS) ftBl (char(5L null国地

32、区(varchar(20)j null)国个性签名(varcharfSOO), nullj二I db口酱惹信息臼LJ列f 漂(P& chartiO. not null)f 用户】D (F兄 charCIS), null)?1 内客vartzhaHSOOO rot nulldm口扫T信息日口列V 扫一S信副。(PK char(201 not null* 用户ID (国 chartl null)囿内容(var匚har(5W01 not null3 rfi? (sinalldatetime, null)Urfr=1 口日口列t (PK char(2D)T not null),用户ID(F区小ar(l

33、办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 charoi not null)?用户IB (F& c*r(15),则S 内容即L50TO, null)J 酎间(smalldatetime, null)一 Mi以上即为微信数据库平台的简单的物理设计,在具体物理设计实现时根据具 体需要对数据路平台的逻辑设计进行了部分修改,也更加具体化了数据库功能。本数据库只是简单的对微信平台数据库的实现,其中还存在许多不足和缺陷需进一步完善。最后,通过此次数据库的设计实现进一步熟悉了数据库相关的知识及数据库的设计和实现

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!