![微信數(shù)據(jù)庫分析與設(shè)計_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/23/6937e1f3-4667-45ec-bef0-598f3daff6b3/6937e1f3-4667-45ec-bef0-598f3daff6b31.gif)
![微信數(shù)據(jù)庫分析與設(shè)計_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/23/6937e1f3-4667-45ec-bef0-598f3daff6b3/6937e1f3-4667-45ec-bef0-598f3daff6b32.gif)
![微信數(shù)據(jù)庫分析與設(shè)計_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/23/6937e1f3-4667-45ec-bef0-598f3daff6b3/6937e1f3-4667-45ec-bef0-598f3daff6b33.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、微信數(shù)據(jù)庫分析與設(shè)計一、需求分析微信作為當前的主要即時通訊工具之一,有著廣泛的應(yīng)用。其主要的功能是實現(xiàn)即時通信,這也是微信的核心功能。此外還有查看朋友圈動態(tài)、搜索好友、 管理個人信息、建立用戶自己的相冊、收藏功能、搖一搖、搜索附近的人、購物、 游戲等功能。此次對于微信平臺的數(shù)據(jù)庫設(shè)計主要對部分需要微信平臺提供存儲 信息功能進行需求分析及設(shè)計。以下將對微信平臺的主要需求做簡要的分析并且 根據(jù)分析做出數(shù)據(jù)流圖使得對于微信平臺數(shù)據(jù)庫的設(shè)計有更好的理解。微信的通信主要包括與微信好友進行相互通信,這其中通信內(nèi)容包括文字、 語音、圖片及視頻。當用戶訂閱了公眾號之后,會接收公眾號發(fā)送的消息并且也 可向公眾號
2、發(fā)信息或許其提供的信息。微信通信功能的另一個主要方面是實現(xiàn)群聊。用戶可以加入一個微信群進行群。另一方面用戶也可以選擇自己的聯(lián)系人進行群聊。微信中通訊錄實現(xiàn)了保存用戶聯(lián)系人的目的,并且訂閱的公眾號也保存于通訊錄中,并且在通訊錄中可以設(shè)定標簽來為聯(lián)系人分組。微信朋友圈保存好友發(fā)送的與朋友共享的消息,其內(nèi)容可為文字、圖片、視頻。在朋友圈中可以設(shè)定權(quán)限使得不同權(quán)限的用戶查看的內(nèi)容不一樣。搖一搖功能可以獲取同一時刻一起搖動手機的用戶,并且暫存于微信中。附近的人功能可以識別在一定范圍內(nèi)的微信用戶,并且將獲得的用戶信息也暫存在微信中,對于識別附近的用戶可以設(shè)定具體的條件來掃描。漂流瓶功能相當于隨機的獲取微信
3、消息或者向微信用戶隨機的發(fā)送消息。對于個人信息的編輯,用戶可以根據(jù)自身需要編輯一些所需的個人信息。最后在微信用戶個人信息中有相冊和收藏記錄用戶的照片和收藏的文字語音 等信息。以上是對微信的部分功能的需求分析,現(xiàn)根據(jù)以上需求對微信數(shù)據(jù)庫畫出數(shù) 據(jù)流圖:第0層DFD :*f111第1層DFD :二、概念設(shè)計在第一步的需求分析中,我們了解了微信數(shù)據(jù)庫平臺設(shè)計中所需要的實體及 需要存儲的信息。在概念設(shè)計中將進一步明確數(shù)據(jù)庫設(shè)計所需實體,實體所具有的屬性及實體之間的關(guān)系。通過分析微信數(shù)據(jù)庫平臺所需實體主要有:用戶信息、普通消息記錄、公眾 號信息、公眾號消息記錄、微信群信息、群聊消息記錄、收藏信息、相冊、
4、朋友 圈信息、聯(lián)系人信息、附近人信息、漂流瓶信息、掃一掃信息、搖一搖信息。這 些實體分別對應(yīng)于微信功能的不同模塊。在實現(xiàn)微信的通信功能主要是使用用戶信息、普通消息記錄、微信群信息、 群聊消息記錄和聯(lián)系人信息這幾個實體。在明確所需實體后根據(jù)實際需要對于每個實體設(shè)置符合實際情況的屬性,每 個屬性對應(yīng)了數(shù)據(jù)庫中的具體屬性。下圖是根據(jù)對于微信數(shù)據(jù)庫平臺的需求分析做出的CDM,通過此概念模型顯示數(shù)據(jù)庫之間各實體之間的相互關(guān)系及各個實體所具有的實際屬性。-篦螫Ig.K-鏗-鑒£甬1睪-s£r i'.-舊 a盞臺建罠垂 八送E訝W-|?-善邑_ 二二盞SErM o 濁 _H-g整
5、.3 二恵垂雪勇&國2 -要豈£ Esm _1<m 】H塞建>瑩 亠耳冥& -曰至首邑罷一 q虐論養(yǎng)套墾 *S辜蠱1一一J屆盞B0BES* 宀氮書螯g*屋專血 -6橐宀 S募&-s'-泮.£峯蔓一 - 八e-sl-s一一層K 涯簽3臺:壺辜嘗墓-S罷=屠1-瘞£説、邏輯設(shè)計由以上概念設(shè)計模型,我們可以獲得以下邏輯數(shù)據(jù)模型(LDMoet-l-r-:-詁謹苣 r 呂 h!l?. -_1EM1'爲逼-暨貝一-ri-jr.UH j111 1 > CWV. ”*vfl干0nrEn<K亠5s p*4 9:-一耆
6、bndII-斑 K»s-儲邏霽 ItMs-g 曇E気S一 軾1DSEW-m-Q- -O 在LDM中對于CDM進行了進一步的細化和具體化,對其中的實體之間的關(guān)系在邏輯上進一步的進行了明確。在此基礎(chǔ)上我們獲得更加具體能直接反映數(shù)據(jù)庫涉及的無理數(shù)據(jù)模型(PDM )。通過PDM將具體顯示數(shù)據(jù)庫所需的表及其之間的關(guān)系。PDM如下圖所示:削Is陰 r*百 *-共V-SH.?;'A怎.-KM=-ra§3卄 -nr-±1 匡Musjuw5-* -* -亡-5-< <I H f-H. - I T - . C” * = TF >«M.応.pm-噸
7、MAk«至 7雀 套疥幻K萋P咤£JZ1sar -rr «tf> : ." >kjmIK1 比 擊Ui"*-F fc*V-3&' F tlZ3li-=tiss尋Fi>"張 i 4 f1 -Mi |ba “,:書TJr ! ¥ "* V 二"一 II". r 議m孝適匿r 業(yè)=在PDM中顯示了個表單之間的引用關(guān)系,其具體引用如下表:標間關(guān)系名稱父表格子表格關(guān)注用戶信息關(guān)注關(guān)注公眾號信息關(guān)注發(fā)送公眾號信息公眾號消息記錄發(fā)送/接收用戶信息普通消息記錄發(fā)送消息用戶信息群
8、聊消息記錄收藏用戶信息收藏信息查看聯(lián)系人信息普通消息記錄用戶存放用戶信息搖一搖信息用戶所在群用戶信息用戶所在群用戶所在群微信群信息用戶所在群用戶所屬用戶信息漂流瓶信息用戶掃描獲得用戶信息掃一掃信息用戶相冊用戶信息相冊用戶聯(lián)系人用戶信息聯(lián)系人信息群聊天記錄微信群信息群聊消息記錄聯(lián)系人相冊聯(lián)系人信息相冊獲取用戶信息附近人信息本系統(tǒng)中使用的表單如下所示:1、用戶信息表NameData TypeLengt hP (主鍵)F (外鍵)M (不可為空)用戶IDchar(15)15XX昵稱char(20)20X頭像long binary二維碼名片long binaryX我的地址varchar(100)100
9、性別char(5)5X地區(qū)varchar(20)20X個性簽名varchar(500)500登陸密碼varchar(20)20X2、普通消息記錄表NameData TypeLengt hPFM消息IDchar(20)20XX聯(lián)系人IDchar(15)15X用戶IDchar(15)15X內(nèi)容varchar(5000)5,000X發(fā)送時間datetimeX3、聯(lián)系人表NameData TypeLen gth PFM朋友IDchar(20)20XX用戶IDchar(15)15X備注名稱char(20)20X標簽varchar(20)204、公眾號信息表NameData TypeLen gthPFM公
10、眾號IDchar(20)20XX公眾號名稱char(40)40X5、公眾號消息記錄表NameData TypeLen gthPFM公眾消息IDchar(20)20XX公眾號IDchar(20)20X公眾消息varchar(5000)5,000X訂閱者varchar(8000)8,000X發(fā)送時間timestampX6、關(guān)注表NameData TypeLen gthPFM用戶IDchar(15)15XXX公眾號IDchar(20)20XXX7、微信群信息表NameData TypeLen gthPFM群IDchar(20)20XX群名稱char(20)20X群二維碼long binaryX群成員
11、varchar(1000)1,000X8、用戶所在群表NameData TypeLen gthPFM用戶IDchar(15)15XXX群IDchar(20)20XXX9、群聊消息記錄表NameData TypeLen gthPFM群聊消息ID :har(20)20XX群IDchar(20)20X發(fā)送人char(20)20X發(fā)送時間timestampX內(nèi)容varchar(5000)5,000X10、相冊表NameData TypeLen gthPFM相冊IDchar(20)20XX用戶IDchar(15)15X聯(lián)系人IDchar(20)20X存放時間timestampX內(nèi)容varchar(500
12、0)5,000X11、收藏信息表NameData TypeLen gthPFM收藏IDchar(20)20XX用戶IDchar(15)15X收藏時間timestamp收藏內(nèi)容varchar(8000)8,00012、附近人信息表NameData TypeLen gthPFM附近人IDchar(20)20XX用戶IDchar(15)15X昵稱char(20)20X距離in teger性別char(5)5地區(qū)varchar(20)20個性簽名varchar(500)50013、搖一搖信息表NameData TypeLen gthPFM搖一搖信息IDchar(20)20XX用戶IDchar(15)1
13、5X時間timestamp內(nèi)容varchar(5000)5,00014、掃一掃信息表NameData TypeLen gthPFM掃一掃信息IDchar(20)20XX用戶IDchar(15)15X時間timestamp內(nèi)容varchar(5000) 5,000X15、漂流瓶信息表NameData TypeLen gthPFM漂流瓶IDchar(20)20XX用戶IDchar(15)15X內(nèi)容varchar(5000) 5,000X對于微信數(shù)據(jù)庫平臺的邏輯分析,明確了在具體是實現(xiàn)時所需的表及其各個 表之間的引用關(guān)系,在接下來的物理設(shè)計中將使用邏輯設(shè)計中的表在具體數(shù)據(jù)庫 實現(xiàn)微信數(shù)據(jù)庫平臺的設(shè)計
14、。四、物理設(shè)計在此次物理實現(xiàn)微信數(shù)據(jù)庫平臺使用 SQL Server 2008。實現(xiàn)簡單的微信平 臺的數(shù)據(jù)庫,通過在數(shù)據(jù)庫表中插入數(shù)據(jù)或查看數(shù)據(jù)來表現(xiàn)微信平臺對信息的發(fā) 送接收及查看。在此次物理實現(xiàn)是我們遵循3NF。數(shù)據(jù)庫設(shè)計如下圖:t 二1 dbo.時近人信息1+ -J Tbo.公眾號沽懸記錄S £3弘6公眾罪息0 E3 db°關(guān)注a :2業(yè)6聯(lián)票人1+ 22肌。.漂族信息1±二Th。.普通海鼠記錄 匡J dbo坤消息記錄 圧二dbd掃一E信息11 必d收歳信息1+ _J dbo.淒信器信慝1+ 二 dbo.lf1+ J dbo.軽一桎信息1+ J Hbd用戶所
15、錚i± J dbd用戶曙息l± !_J觀冒1、向“用戶信息”表添加記錄,模擬微信在線用戶。此次添加三個用戶作為模擬的微信用戶。用戶基本信息如下:E dbd用戶信慝日口列丫 用戶ID (PK. char(151 not nullJ昵稱(char(20), not null)2 頭燼(binaryfll nullJ二iS碣客片(birary(lt not null)J我的地址(varchar(100j,. null) 圍 14011 (charfS), net null) (3 地區(qū)(varchar(20)( not null)j個I空名(varchar(5001 null)T
16、1 登適密碼(varchar(20F not null)2、我們選取“小a ”登陸微信,開始添加聯(lián)系人?!奥?lián)系人”表保存每個用戶的聯(lián)系人信息,這些聯(lián)系人信息皆來自用戶信息表?!靶”的聯(lián)系人如下表:朋友ID用戶ID朋友備注名標菱1 j D0C2J 0001日月明同學200030001NULLNULL此表的創(chuàng)建過程如下:creace table 聯(lián)系人 朋友工D char (15s ncr null,舟戶工D char (15) not ri口 1丄審鬼宴備注名 enar(20: *標簽 varchar (20 rcdnacrainc pk 1 primary kwy (朋友工1用戶工D),co
17、nstraint f ki foreign irey朋友ID: refeiences dbo.用 戶倡息 P IE : r canrtrint fk2 fcr«ign "y (用pTD rfrences dho-用戶喑息 i廟戶二匸J 士 TT7 八 f3、普通用戶發(fā)送消息時,消息內(nèi)容將存儲在“普通消息記錄”表中,如現(xiàn)在“小a”向“小b”發(fā)送一條消息,然后“小b ”再回復一條?!靶”也向“小c”發(fā)送一條消息。dbc.&通消息記錄日二列f 消息【D PK, char(20), not null ? AID (FK. char(15l nulll f 畀戶ID FK,
18、 char(15). null) S)內(nèi)客(varchar(5000, not null S),發(fā)送時間(datetirn?, not null). LrHM消息ID聯(lián)系人ID用戶ID內(nèi)容發(fā)送時間11 OOffiffll1 0002D0C1下工5點去球場踢球2015-(&W 1135:32 0402 000002OT010002可以,下午球場見2015-01011:36:17.207300000300030001你好201&teW 12:58 16.333其中表中的外鍵約束和默認值如下:table dfeo.g通逍思記錄 eoucnlM «3 fonlgn fcev
19、I聯(lián)系人九)xerefences 血6用戶售息 f用戶W alter tatilt dbs普通涓息記隸 add constraint fkl foreign key i|角戶 ID) references dbe用戶信息 用戶 IB)alter e-aisle 業(yè)口肓 曲消息記錄 add 伶送時|日 daceEime not 口遼止 1 defaulc gedace :在”普通消息記錄表”中也可以查詢兩個用戶之間的聊天記錄,如查詢“小a ”和”小b “之間的聊天記錄:匚 select 因養(yǎng)發(fā)送時間fr鵝總査通消息記錄-where 聯(lián)系厶克 in (1 00011 , 1 D002 '
20、) and IJD Ln ( ' 0001* f r0D02i結(jié)果【由酒貳 內(nèi)容發(fā)送時間r,r1 e rr li n f 1!ifiir-sin g1 £下午5直去球場踢球I 20154)10 11 35:32 040liallUIBIIBIlalUIIUIBIIBIMIUIUIBIIBIMIUlllUIBIIBI*2 可以,下牛球場見20154>5-1011:3:17.207同樣也可以在“普通消消息記錄表”中實現(xiàn)刪除消息記錄。在“普通消息記錄”表中為了能使用戶更快的查詢自己的消息記錄,這里創(chuàng)建了索引。create index用戶快速查詢記錄on亞6普通消息記錄 用戶T
21、D4、“微信群信息”表中記錄了所有用戶創(chuàng)建的微信群的信息。由于在微信中群 成員數(shù)量當前限制為40個,在本平臺中我們設(shè)置為4個。并且每一個成員信息 由外鍵引用自“用戶信息”表。比如現(xiàn)在創(chuàng)建了兩個個微信群如下:dbo.微信芋信亙0 Dj列S田日?髓ID (PK, char(iO). not null) S (char(2OX not nulQ U 芋二淮碼(birrary(lF not null) f 成員 1 (FK, char15L not null) ? 瑟2 (FKf char(15L null) ?成男弓(FKr char(15L null) ?成員4 (FK, char(15L nul
22、l) 璉釣束EJ冃戶舉信言稈竜IX i i 去 mi群ID群名稱群二維碼成勿感員2成員3咸員41 j 000C1 羽毛球球部落(kBF000100020003NULL2 00002足球球部落MF00010002NULLNULL外鍵約束和非空約束如下:alter table業(yè)6試謹群信息 alter table dbu,微信群倍息 al«r table dg與信群信總alter table dtoc.微信群.信息altez calrnm 成員丄 add constraint cylAdd conn匚工*inx cy2 ad.d. cons era ln. e y3 add conatz
23、aini cychar 15 not null foreign keyt成員 1 forlsn 齡vf成員2: rreign key 喊員 3 fcr Eign Jreyl成員 Qreferences dba. references dlbo. ret erences 業(yè)口. references dhe ukkj ij IT nprD D D DI I I I戶戶戶戶息息自心自小”一-_.E.亠一一E問 EEP1用用用用由于當用戶創(chuàng)建了一個微信群后要在“用戶所在群”表中顯示出每個用戶所在的群,因此需創(chuàng)建一個觸發(fā)器。在此創(chuàng)建的trigger為“用戶信息新增”。代碼如下:口匪微信平臺】GO/*
24、Object; Trigger dbo.用戶群信息新増】SET AN5I_tnJLLS ONGOScripL Dar;e: D5/10/2015 15:06:17 */SET QCOTEDIDENTIFIER QUGO alter triaaer dbo.用戶群信息新增 皿【呦微信群信息Jfor insert asdeclare Squnid char i30 ScyXid chords , cyiid chr 15) r 0qy3i4 chsr(15 . cy?id chi 15) select 陽ncid二群ID. 3cylidJ5j(員丄.囲uy2id二成員2上站3丄<3工成員牝丫
25、仆世二成員弓Crest.戈2亡工化d. i£ 3cylid is not nullbeginiMert into dbo用戶所在群【用戶g群mendif Icy2id is not nullbegininsert into dbo用戶所在群用戶皿群TD)endificy3id is not nullbegininsert into dEo-用戶所在群i用戶ID,群T口endiJE 3cy4id is nDt| nullbegininsert into dbo.用戶所在群f用戶TD,群IDL endvalues : Scylidj Squnidvalues9quz)l<l;val
26、ues :2iey31clr qunxd,values :皆uyT idr qunid5、“用戶所在群”表存儲了每個用戶所在的群信。每個用戶可根據(jù)此表查詢所 在群信息。當一個微信群被創(chuàng)建后在“用戶所在群”表中將自動顯示用戶所在群 信息。曰J Tbo.用戶所錚S LJI ?!|I 畀戶ID (PKr FK, rhar(15), not null/ 話【D (PK, FK, char(20), not null)一i護木| L£ »冃思用戶iD群ID1J KIMI HHii 0001000012M»20000130003000C140001000025WQ200002
27、6、“群聊消息記錄表”記錄了每個群的消息。也可以查詢歷史記錄。比如在群“羽毛球部落”中的消息記錄二口 dbc邱消息記錄匚CJ列?宰腿潔息ID (PK, char(20), not null) ? SHD (FKr char(20L null) 0 發(fā)送人(char(20), not null)S)內(nèi)容(varcharSDOO), not null)群ID發(fā)送人0OT01小丑0000100001小匚00001小匚群聊消息ID1 I 00(X)000001DXCDXa0000000003DODOTW004內(nèi)容明天去打羽毛球 下牛去可以下牛3點iTI 發(fā)送時閆(smalldatetime, null
28、)發(fā)送時間20154JS10 15:48:0020154)510 15:48:0020154)5-10 15:48:0020154)5-10 15:5ftM為了使得用戶在查詢?nèi)簹v史消息時更加快速,創(chuàng)建索引匸工巳玄匸巳index群消息快速查詢Qn業(yè)群聊消息記錄群工D|7、“公眾號信息”表記錄了所有公眾號的信息??梢酝ㄟ^搜索公共號ID或名稱來訂閱公眾號。弓 dg公眾黑息刁二列(公眾號ID CPK, char(20)H not null)i 公眾號名稱(char(401 not null)8、“關(guān)注”表中,存儲了每個用戶訂閱的公眾號。E _3 dbs關(guān)注日口列| 用戶ID (PK± FK.
29、 char(l5), not null)?公眾號ID (PK FK char20), not null)1斧果一消息J用戶ID公眾號ID1| D0C11 00012000200023000300034M»30M49、“公眾號消息記錄”存儲公眾號為訂閱者發(fā)送的消息0 n詁bd公眾號沽息記錄冋口列/ 公眾肖息ID (PK, char(20)r not null) f 公眾號ID (FK char(20)p null) E 公眾J肖慝(varchar(5000L not null) XJ 發(fā)謹詢司(timestamp, not null)蟲眾消息ID處眾號ID公眾消息fllBIKIM VI«1¥ DDOODDMl £ 00012 000000009D0033 00000000600G4鎖假安排 廉政建設(shè) 課程計劃發(fā)送時間2015-05-1016:17:0020154)10 16:18:00201510 16:18:0010、其余各表分別存儲每個用戶在微信中的信息,通過外鍵引用來確定每個表中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年學校體育器材設(shè)施租賃合同
- 2025年企業(yè)內(nèi)部股權(quán)認購合同范本
- 2025年跨區(qū)域金融協(xié)同發(fā)展策劃框架協(xié)議
- 2025年醫(yī)療設(shè)備租賃與維護合作協(xié)議
- 2025年勞保服裝定制合同樣本
- 2025年企業(yè)合作社交媒體代運營合同
- 2025年建筑工程策劃環(huán)境風險評估合作協(xié)議
- 2025年中期票據(jù)發(fā)行保證合同樣本
- 2025年中介電子商務(wù)合同
- 2025年農(nóng)村耕地整合策劃協(xié)同協(xié)議
- 2025 年福建省中考語文試題:作文試題及范文
- 短視頻運營績效考核表KPI-企業(yè)管理
- 四川省綿陽市(2024年-2025年小學五年級語文)統(tǒng)編版期末考試(上學期)試卷及答案
- 《從零到卓越- 創(chuàng)新與創(chuàng)業(yè)導論》教案
- 慢性心衰的管理:2024年國家心衰指南更新
- 15J403-1-樓梯欄桿欄板(一)
- DB43T 744-2012 錳水質(zhì)在線自動分析儀
- QC課題提高金剛砂地面施工一次合格率
- 呼吸科護理管理制度
- TCI 331-2024 工業(yè)污染源產(chǎn)排污核算系數(shù)制定通則
- 浙江省(面試)公務(wù)員考試試題及答案指導(2025年)
評論
0/150
提交評論