仿新浪微博項目需求,及數據庫建設



 

1  需求分析 1

1.1  背景說明 1

1.2  系統目標與系統邊界 1

1.3  功能需求分析 1

1.3.1  系統的功能描述 1

1.3.2  系統總體功能圖 4

1.3.3  主要業務流程描述 6

1.4  數據需求及業務規則分析 8

1.4.1  數據需求描述 8

1.4.2  數據字典 8

1.4.3  業務規則描述 11

1.4.4  數據約束描述 12

2  概念設計 13

2.1  確定實體集及屬性 13

2.1.1  實體集分析 13

2.1.2  實體集屬性數據字典 13

2.2  確定聯系集及屬性 13

2.2.1  聯系集分析 13

2.2.2  聯系集屬性數據字典 13

2.3  概念模型(E-R圖) 13

2.4  檢查是否滿足需求 13

2.5  改進的E-R圖及數據字典 14

3  邏輯設計 14

3.1  關系設計 14

3.2  關系優化 14

3.3  約束的說明 14

4  數據庫物理設計 14

4.1  確定數據庫的存儲結構 14

4.2  確定數據庫的存取方法 15

5  數據庫應用設計 15

5.1  數據庫腳本 15

5.2  數據庫完整性設計 15

5.3  數據庫安全性設計 15

5.4  存儲過程設計 15

6  數據庫應用開發 15

 

 

1  需求分析

1.1  背景說明

微博,即微博客MicroBlog)的簡稱,是一個基於用戶關系的信息分享、傳播以及獲取平台,用戶可以通過WEBWAP以及各種客戶端組件個人社區,以140字左右的文字更新信息,並實現即時分享。最早也是最著名的微博是美國的twitter,根據相關公開數據,截至20101月份,該產品在全球已經擁有7500萬注冊用戶。20098月份中國最大的門戶網站新浪網推出新浪微博內測版,成為門戶網站中第一家提供微博服務的網站,微博正式進入中文上網主流人群視野,成為網民不可缺少的一部分

 

1.2  系統目標與系統邊界

微博廣泛分布在桌面、瀏覽器、移動終端等多個平台上。它十分簡單,在微博客上,不像博客,只有140字的限制將平民和莎士比亞拉到了同一水平線上。導致各種微博大量原創內容爆發性地被生產出來。它也十分便捷,微博即時通訊功能非常強大,在沒有網絡的地方,只要有手機也可即時更新自己的內容,哪怕你就在事發現場。實時性強,在一些大的突發事件或引起全球關注的大事,如果有微博客在場,利用各種手段在微博客上發表出來,其實時性、現場感以及快捷性,甚至超過所有媒體。也正因為如此,微博以迅雷不及掩耳之勢席卷了整個互聯網。然而,面對着成千上萬的用戶,上億的消息等等相關數據,如此海量的數據。如何存儲才能高效處理便成為微博系統架構師的一大難題。也只有設計了良好的微博數據庫,才能使前台,中間件的開發事半功倍,使用戶體驗更好,獲得用戶的青睞,從而吸引更多用戶,為此,我們對微博系統的數據庫進行深入的需求分析與設計,並盡可能的提高微博數據庫的性能。

在本微博系統中,用戶可發表(可發送私信,功能類似於E-MAIL),轉發,評論,收藏消息(其中消息可包括圖片,音樂,視頻鏈接地址),隨時看到被關注者的最新動態。創建,加入,發表,評論微群消息。創建消息,微群話題參與話題討論,以及把系統一些建議反饋問題給系統。系統首要任務是如何對用戶,消息聯系之中的數據進行高效處理,並盡可能提高數據庫的性能。

 

1.3  功能需求分析

1.3.1  系統的功能描述

一、 消息管理

 

1.用戶消息管理

l 發表消息 用戶可以隨時發表140個字左右的消息,其中可包括音樂,圖片,視頻,此處除圖片外均為鏈接地址,而圖片只可為相冊中圖片,發表的消息只有用戶本身與關注此用戶的人可以立即收到,否則須查詢到相應用戶才能看到該用戶發表的消息。

l 刪除消息 用戶對發表過的消息,覺得不滿或不適當的,可刪除,只有用戶或系統管理員本身有此權限。

l 評論消息 用戶可對其它用戶發表的消息進行評論,每條消息均會顯示評論條數與評論內容。

l 刪除評論 用戶對自己不滿意或其它原因的評論可刪除。

l 轉發消息 用戶可以轉發關注者所發表的消息,轉發后,每條消息轉發次數均會顯示。

l 查看消息 用戶可以在當前頁面查看到被自己關注者的所有消息,按時間排序。

l 收藏消息 用戶可對其它用戶發表的感興趣的消息收藏,供以后查看,每條消息下均會顯示收藏次數,顯然,私信不可收藏。

 

 

2.用戶私信管理

l 發送私信 用戶可以對自己的關注的人,即被關注者,發送私信,只有對方可見。可加入圖片,表情,圖片元素,對方收到后,亦可回信.僅兩人可見。

l 查看私信 私信僅可在同一微博系統中進行發送並在用戶“我的私信”中可查看所有發送和收到的私信。

l 回復私信 用戶收到對方 ----即關注者發私信時,可直接回復對方。

l 刪除私信 用戶可以在“我的私信”中直接刪除私信。

 

 

3.微群消息管理

l 發表群消息 用戶可以隨時發表140個字左右的消息,其中可包括音樂,圖片,視頻,此處除圖片外均為鏈接地址,而圖片只可為相冊中圖片,發表的消息只有用戶本身與關注此用戶的人可以立即收到,否則須查詢到相應用戶才能看到該用戶發表的消息。

l 評論群消息 用戶可對其它用戶發表的群消息進行評論,每條消息均會顯示評論條數與評論內容。

l 刪除群評論 用戶對自己不滿意或其它原因的評論可刪除。

l 轉發消息 用戶可以轉發關注者所發表的消息,轉發后,每條消息轉發次數均會顯示。

l 查看消息 用戶可以在當前頁面查看到被自己關注者的所有消息,按時間排序。

 

 

4.話題管理

用戶可以把消息發表至某一話題下。用戶也可查看當前熱門話題,並參與之。也可以創建話題。話題中的消息與用戶消息管理是完全一樣的,只是話題細化了整個微博的消息,使用戶能對某一話題進行交流,針對性強。

 

 

5.微群話題管理

在微群中亦可創建話題,其功能與一般話題一樣,話題消息限在群中,是對群中消息的細化,使群中消息對某話題有針對性。

 

二、 用戶管理

 

 

1.被關注者管理

l 關注用戶 用戶查找到需要關注用戶時,通過關注即可隨時知道被關注者的最新動態。

l 取消關注 用戶不需要關注某用戶時,直接取消關注即可。

 

2.用戶信息管理

l 用戶注冊 用戶使用前必須進行注冊才能使用微博,此處使用E-MAIL注冊即可,注冊時填寫E——MAIL與密碼即可完成注冊,系統會檢查E_MAIL是否合法。

l 詳細信息  用戶完成注冊后,可填寫詳細信息,使系統更快的為用戶找出想關注的人和快速對用戶進行分類,如,性別,出生年月,真實姓名,呢稱,電話,身份證號碼,地址,興趣,畢業學校,職業,公司等.

 

3.關注組管理

 

l 創建關注組 當用戶關注的人特別多時,顯得有些不易於查看被關注者發表的信息,關注組即是對眾多用戶關注的人進行再次分組,並添加顯示名稱,可最為快捷的知道想要特別關注的一些人的最新動態。

l 刪除關注組 刪除關注組,即取消關注組里面人的特別關注,此處只是刪除關注組,並不會取消組里用戶的關注。

l 添加用戶 添加已關注的用戶至關注組中。

l 刪除用戶 刪除關注組中的用戶。

 

4.用戶微群管理

l 創建微群 用戶可以在微博中創建微群,群為超過一個用戶有相同屬性的用戶集,如老鄉會,同學群,公司群等等.創建微群后,用戶也可以微群中創建若干話題,微群相當於在微博中一個小社區.

l 加入微群 用戶可以通過搜索和微群分類以及系統推薦的一些熱門群加入微群,只在加入后才可以微群里發表群消息.

l 退出微群 用戶可以直接退出已加入的群。

 

5.用戶相冊管理

l 創建相冊 用戶可以在微博中建立多個相冊。

l 刪除相冊 用戶可以刪除創建的相冊,只有空相冊可以刪除。

l 上傳照片 用戶在微博中建立相冊后,便可上傳圖片到相冊中,與好友一起分享。

l 刪除照片 用戶可以刪除上傳后的圖片。

 

6.管理員管理

提供系統管理員管理功能,管理員可對消息進行審查,如有不適當傳播的消息可屏蔽之,亦可回復用戶的反饋,也可以關注微博中的異常並處理之。此處管理員與一般用戶類似,只有具有管理員認證。

 

7.皮膚管理

 

用戶可對自己本身的微博選各種各樣的皮膚,用以美觀界面,也可以上傳圖片自定義皮膚。

 

 

三、 查找

 

1. 用戶分類查找

系統會根據用戶所填寫的信息對用戶進行細致的分類,使用戶能快速查找到相關者,但是此處,並不是每個人都會進行分類,微博用戶人數極其龐大,系統只會對達人進行分類以供查找。

 

2. 用戶名查找

用戶可以通過用戶名查找需要關注的用戶。

 

3. 微群查找

用戶可以通過群名來查找相關的群。

 

4. 微群分類查找

用戶也可以通過群分類來快速定位感興趣的群,同樣系統也不會對所以群進行分類,只有人數超過一定數量且活躍的才進行分類。

 

四、 統計

 

1. 熱門話題

系統會對當前微博中熱議的話題進行排名處理,供用戶知道當前微博中大部分用戶在討論什么。用戶也可快速參與其中。

 

2. 推薦用戶,群

系統根據用戶填寫的信息,如畢業學校,愛好等到信息對用戶進行快速推薦與用戶有關的人和當前熱門的群。

 

 

五、 反饋

如用戶對於微博有什么意見和要求,可以通過反饋信息留言給管理員,針對用戶所提出的問題,微博管理員會認真處理,使微博做的更好,此處主要以話題方式反饋給系統

 

1.3.2  系統總體功能圖

 

 

1.3.3  主要業務流程描述

Ø 普通用戶流程如下圖:

 

注:

1. 用戶信息管理:

l 用戶信息管理

2. 消息管理:

l 用戶消息管理

l 微群消息管理

l 用戶私信管理

l 話題管理

l 微群話題管理

3. 被關注者管理:

l 關注組管理

l 被關注者管理

4. 群管理:

l 創建微群

l 加入微群 .

l 退出微群

5. 相冊管理:

l 創建相冊

l 刪除相冊

l 上傳照片

l 刪除照片

6. 評論管理:

l 發表評論

7. 皮膚管理:

l 更改皮膚

Ø 管理員流程如下圖:

 

注:

1. 審核消息,評論:

審核有戶發表的消息,評論是否有些不恰當於網絡中的,給予相應處理。

2. 關注系統異常:

關注系統的異常,BUG。及時做出處理。

3. 回復反饋:

回復用戶微博提出的問題。

 

1.4  數據需求及業務規則分析

1.4.1  數據需求描述

對系統中的各種事物(對象)以及聯系的屬性進行描述,可能是基本對象,也可能是業務表格/單據(很多會涉及到多個基本對象之間的聯系)。

1. 消息:消息包含消息編號,用戶編號,話題編號,發表時間,轉發次數,收藏次數,評論次數組成。

2. 私信:私息是消息的派生,增加了被發送者編號。

3. 微群消息:微群消息是消息的派生,增加了群編號。

4. 話題:由消息標題組成。

5. 評論:由消息編號,評論編號,用戶編號,評論時間,評論內容組成。

6. 微群:由微群編號,數據項名,微群編號,微群妮稱,群管理員,微群用戶編,微群標簽,用戶數,創建時間組成。

7. 群消息評論:評論派生,只增加了群編號。

8. 用戶:用戶由用戶編號,妮稱,用戶頭像,郵箱,性別,密碼,真實姓名,皮膚編號,QQ,畢業院校,職位,手機號,自我介紹,用戶標簽,興趣,個人博客地址,注冊時間組成。

9. 關注組:由關注組編號,被關注組編號,關注名稱,創建時間組成。

10. 相冊:由用戶編號,相冊編號,相冊名稱,圖片名稱,圖片內容,圖片創建時間組成。

11. 皮膚:由皮膚編號,背景圖片組成,主題顏色組成。

12. 收藏:由用戶編號,消息編號組成。

 

1.4.2  數據字典

1. 用戶表:

數據項名

取值范圍

數據項含義說明

用戶編號

U開頭加10位數字組成

用戶編號,唯一識用戶的字段

用戶妮稱

任意字符

用戶在微博中顯示的妮稱,即用戶名。

用戶頭像

圖片類型

用戶微博圖像

郵箱(登陸名)

符合郵箱規范

用戶登陸所用

密碼

至少6個可打印字符

用戶登陸所用密碼

性別

男,女,保密

用戶性別

真實姓名

任意可打印字符

用戶真實姓名

皮膚編號

S10位數字

用戶所用皮膚編號

QQ

610位數字

用戶QQ

畢業院校

任意可打印字符

用戶畢業院校

職位

任意可打印字符

用戶職位

手機號

11位數字

用戶手機號碼

自我介紹

任意可打印字符

用戶一些簡要的自我介紹

用戶標簽

任意可打印字符

用戶的興趣愛好

注冊時間

時間

用戶注冊時間

個人博客

HTTP地址

用戶博客地址

 

2. 關注組表:

數據項名

取值范圍

數據項含義說明

關注組編號

NG10位數字組成

用戶對所關注人可組成組

被關注者編號

同用戶編號

同用戶編號

創建時間

時間

創建關注組時間

關注組名稱

任意可打印字符

創建的關注組名稱

 

3. 普通消息表:

數據項名

取值范圍

數據項含義說明

消息編號

M開頭加15位數字組成

用戶發表消息編號

用戶編號

U開頭加10位數字組成

用戶編號

消息內容

任意可打印字符

用戶發表消息內容

話題

任意可打印字符

用戶發表消息所屬話題

鏈接

http鏈接

用來鏈接音樂,視頻

收藏次數

數值

消息被收藏的次數

評論次數

數值

消息被評論的次數

轉發次數

數值

消秘被轉發的次數

發表時間

時間

用戶發表消息明間

 

4. 消息收藏表:

數據項名

取值范圍

數據項含義說明

用戶編號

同用戶編號

同用戶編號

消息編號

同消息編號

同消息編號

 

 

5. 用戶私信表:

數據項名

取值范圍

數據項含義說明

私信編號

PM開頭加10位數字

用戶發送私信編號

關注者編號

同用戶編號

同用戶編號

被關注者編號

同用戶編號

同用戶編號

私信內容

任意可打印字符

用戶發送私信內容

發送時間

時間

用戶發送私信時間

 

 

6. 群消息表:

數據項名

取值范圍

數據項含義說明

群消息編號

GM開頭加15位數字組成

群消息編號

用戶編號

同用戶編號

同用戶編號

微群話題內容

任意可打印字符

微群中話題名稱

群編號

G開頭加10位數字組成

用戶所建群編號

發表時間

時間

用戶發表群消息時間

群消息評論編號

同群消息評論編號

同群消息主評論編號

群消息內容

任意可打印字符

群消息內容

 

 

7. 評論表:

數據項名

取值范圍

數據項含義說明

評論編號

R開頭加15位數字組成

用戶評論

消息編號

同消息編號

同消息編號

用戶編號

同用戶編號

同用戶編號

評論時間

時間

用戶發表評論時間

評論內容

任意可打印字符

用戶發表評論內容

 

 

8. 微群表:

數據項名

取值范圍

數據項含義說明

微群編號

同群編號

同群編號

微群妮稱

任意可打印字符

群的顯示名稱

群管理員

同用戶編號

同用戶編號

微群用戶編號

同用戶編號

同用戶編號

微群標簽

同用戶標簽

同用戶標簽

用戶數

數值

微群中成員數量

創建時間

時間

創建群時間

 

 

9. 微群評論表:

數據項名

取值范圍

數據項含義說明

微群編號

同群編號

同群編號

評論編號

R開頭加15位數字組成

用戶評論

消息編號

同消息編號

同消息編號

用戶編號

同用戶編號

同用戶編號

評論時間

時間

用戶發表評論時間

評論內容

任意可打印字符

用戶發表評論內容

 

 

10. 相冊表:

數據項名

取值范圍

數據項含義說明

相冊編號

P開頭加10位數字組成

用戶相冊編號

用戶編號

同用戶編號

同用戶編號

相片名稱

任意可打印字符

相片名稱

相片內容

圖片類型

用戶分享的圖片

相冊名稱

任意可打印字符

用戶相冊名字

 

11. 皮膚表:

數據項名

取值范圍

數據項含義說明

皮膚編號

S開頭加5位數字組成

皮膚編號

背景圖片

圖片類型

同用戶編號

主題顏色

9位數字

RGB表示主題顏色

 

1.4.3  業務規則描述

(1) 所有用戶只有注冊登陸后才能進入微博查看消息。

(2) 用戶注冊時只能使用電子郵件進行注冊,密碼為不少於6位的字符,注冊成功后,必須增加用戶詳細信息,如用戶名,等信息必填的信息。才能使用微博。

(3) 用戶可以關注多個被關注者,一個用戶也可以被關注者關注多次。

(4) 只有關注用戶,或加入群后,系統才會把被關注的用戶的最新動態發送至用戶微博界面。

(5) 關注者:即相當於用戶的粉絲,用戶一發表消息即發送到關注者的微博界面中。

(6) 被關注者:用戶關注了的人,可以隨時看到被關注者的最新動態。

(7) 關注組:對被關注都進行快速分組,可以對特別的人進行特別關注,在被關注者多時推薦使用。

(8) 達人:當用戶的關注者超過200個,被關注者超過100個,且每天至少發表一條消息即可成為達人,達人需要向系統申請,內容參照標簽。

(9) 認證:為用戶在某領域具有一定權威的人物,如演員,專家,為達人一種派生,認證需系統官方進行操作,認證的范圍由系統給定。

(10) 活躍群:當群中人數超過300人,且每日消息數量不少於100條時,便可成為活躍群。

(11) 標簽:用戶標簽項不可超過20項,用戶只能從系統中選擇標簽。

(12) 推薦用戶:當用戶填寫了比較完整的信息時,系統便會根據用戶的信息,如職業,用戶標簽,

(13) 用戶分類,系統會自動為成為達人與認證的用戶分類,使其它用戶能快速了解到達人的最新動態。

(14) 反饋其實只是一種特殊話題。只不過此話題由系統默認創建。

(15) 管理員也為微博中一個用戶,但身份已被系統認證為系統管理員。

(16) 消息由消息編號唯一確定。

(17) 轉發消息,用戶可轉發其它用戶已發表消息,轉發消息只是在用戶復制其它用戶發表的消息再重新發表,並在消息內容片顯示被轉發者。

(18) 私信由私信編號唯一確定。

(19) 群消息由群消息編號唯一確定。

(20) 話題,微群話題只是在消息,微群消息中加入話題標題字段,發表時在兩#之間內容即為話題,如發表消息無話題,系統默認置空。

(21) 熱門話題:系統會對當前話題消息數量前15的進行統計,讓用戶能隨時知道當前最熱門的話題。

(22) 微群由群號唯一確定。

(23) 微群中的消息只有群管理員有權限刪除。

(24) 微群標簽:同用戶標簽一樣,微群也可設置標群標簽,只有群管理員有此權限,微群標簽只能選擇一個。

(25) 推薦群,同推薦用戶一樣,系統會根據群的標簽等其它信息與用戶標簽把相似的群推薦給用戶。

(26) 微群分類:同達人一樣,系統也會為活路微群進行分類,使用戶能快速找到自己喜歡的群,但只有活躍群才會進行分類。

(27) 評論由評論編號唯一確定。

(28) 微群評論由微群評論編號唯一確定。

(29) 用戶由用戶編號唯一確定。

(30) 用戶組由組號唯一確定

(31) 相冊由相冊編號唯一確定。

(32) 相冊中圖片由圖片編號唯一確定。

 

 

 

1.4.4  數據約束描述

1) 一個用戶的關注者不限,但被關注者不可超過10萬。

2) 一個用戶相冊數不能超過100個,相冊中圖片不可超過500個。

3) 一個用戶創建的微群不可超過10個,微群中的管理員不可超過5個。

4) 一個用戶創建的用戶組不可超過50個,組中的關成員不可超過50個。

5) 消息的字數不可超過140個,鏈接除外。

6) 普通消息編碼規則:以M開頭15位數字組成。

7) 話題編碼規則:以T15位數字組成。

8) 私信編碼規則:以PM開頭15數字組成。

9) 群信息編碼規則:以GM開頭15位數字組成。

10) 評論編碼規則:以R開頭15位數字組成。

11) 微群評論編碼規則:以GR開頭15位數字組成。

12) 微群編碼規則:以G開頭10位數字組成。

13) 用戶編碼規則:以U開頭加10位數字組成。

14) 院校編碼規則:以S10位數字組成。

15) 標簽編碼規則:以L10位數字組成。

16) 關注組編碼規則:以NG10位數字組成。

17) 相冊編碼規則:以PF開頭加10位數字組成。

18) 相冊圖片編碼規則:以P開頭加10位數字組成。

19) 皮膚編碼規則:以S開頭加5位數字組成。

 

2  概念設計

2.1  確定實體集及屬性

2.1.1  實體集分析

從系統的數據需求描述中,抽取出實體集(可能對應基本對象,也可能對應表格/單據),並對其屬性進行描述,根據需求分析可得到如下實體集:

1. 用戶實體集。其屬性有:包括用戶編號,妮稱,用戶頭像,郵箱,性別,密碼,真實姓名,QQ,職位,手機號,自我介紹,個人博客地址,注冊時間, 達人,認證。

2. 院校實體集。其屬性有:院校編號,院校名稱,所在省,所在市,所在縣。

3. 標簽實體集。標簽編號,標簽內容。

4. 消息實體集。派生普通消息與群消息,其屬性有:消息編號,消息內容,評論次數,收藏次數,轉發次數。

5. 私信實體集。其屬性有:私信編號,私信內容。

6. 評論實體集。其屬性有:評論編號,評論內容。

7. 微群實體集。其屬性有:微群編號,微群妮稱,管理員,用戶數。

8. 關注組實體集。其屬性有:由關注組編號,關注組名稱,被關注者人數。

9. 相冊實體集。其屬性有相冊編號,相冊名稱,圖片數量。

10. 圖片實體集。其屬性有:圖片編號,圖片名稱,圖片內容。

11. 皮膚實體集。其屬性有:皮膚編號,背景圖片,主題顏色。

12. 話題實體集。派生消息話題與群標題。其屬性有:話題編號,消息數量,話題簡介。

 

2.1.2  實體集屬性數據字典

1. 用戶表:

 

數名項名

取值范圍

數據項含義說明

用戶編號

U開頭加10位數字組成

用戶編號,唯一識用戶的字段

用戶妮稱

任意字符

用戶在微博中顯示的妮稱,即用戶名。

用戶頭像

圖片類型

用戶微博圖像

郵箱(登陸名)

符合郵箱規范

用戶登陸所用

密碼

至少6個可打印字符

用戶登陸所用密碼

性別

男,女,保密

用戶性別

真實姓名

任意可打印字符

用戶真實姓名

QQ

610位數字

用戶QQ

職位

任意可打印字符

用戶職位

手機號

11位數字

用戶手機號碼

自我介紹

任意可打印字符

用戶一些簡要的自我介紹

注冊時間

時間

用戶注冊時間

認證

系統提供,某一領域,如演員,學者

參照標簽屬性,為在某一領域有影響的專家

達人

參照標簽內容

為在某一方面有愛好或專長

個人博客

HTTP地址

用戶博客地址

 

2. 院校表:

數據項名

取值范圍

數據項含義說明

院校編號

S10位數字組成

院校編號

所在省

中文字符

院校所在省份

所在市

中文字符

院校所在市

所在縣

中文字符

院校所在縣

院校名稱

中文字符

院校名稱

 

3. 標簽表

數據項名

取值范圍

數據項含義說明

標簽編號

L10位數字組成

標簽編號

標簽內容

中文字符

用戶標簽

 

4. 關注組表:

數據項名

取值范圍

數據項含義說明

關注組編號

NG10位數字組成

用戶對所關注人可組成組

關注組名稱

任意可打印字符

創建的關注組名稱

 

5. 消息表:

數據項名

取值范圍

數據項含義說明

消息編號

普通消息/群消息編號

用戶發表消息編號

消息內容

任意可打印字符

用戶發表消息內容

話題

任意可打印字符

用戶發表消息所屬話題

鏈接

http鏈接

用來鏈接音樂,視頻

收藏次數

數值

消息收藏的次數

評論次數

數值

消息評論的次數

轉發次數

數值

消息被轉發的次數

 

 

6. 用戶私信表:

數據項名

取值范圍

數據項含義說明

私信編號

PM開頭加10位數字

用戶發送私信編號

私信內容

任意可打印字符

用戶發送私信內容

 

 

7. 評論表:

數據項名

取值范圍

數據項含義說明

評論編號

消息評論/群消息評論

用戶評論

評論內容

任意可打印字符

用戶發表評論內容

 

 

8. 微群表:

數據項名

取值范圍

數據項含義說明

微群編號

同群編號

同群編號

微群妮稱

任意可打印字符

群的顯示名稱

群管理員

同用戶編號

同用戶編號

微群標簽

同用戶標簽

同用戶標簽

用戶數

數值

微群中成員數量

 

 

 

9. 相冊表:

數據項名

取值范圍

數據項含義說明

相冊編號

P開頭加10位數字組成

用戶相冊編號

圖片數量

數值

相冊中圖片個數

相冊名稱

任意可打印字符

用戶相冊名字

 

10. 圖片表:

數據項名

取值范圍

數據項含義說明

圖片編號

P開頭加10位數字組成

用戶上傳圖片編號

相片名稱

任意可打印字符

相片名稱

相片內容

圖片類型

用戶分享的圖片

 

11. 皮膚表:

數據項名

取值范圍

數據項含義說明

皮膚編號

S開頭加5位數字組成

皮膚編號

背景圖片

圖片類型

同用戶編號

主題顏色

9位數字

RGB表示主題顏色

 

12.話題表

數據項名

取值范圍

數據項含義說明

話題編號

群話題編號消息話題編號

用戶發表消息編號

消息數量

數值

話題包含的消息個數

話題標題

最多不超過20字符

話題的標題

話題簡介

任意可打印字符

話題內容簡介

 

 

2.2  確定聯系集及屬性

2.2.1  聯系集分析

對各實體集(聯系集)之間的聯系進行描述,包括聯系的映射基數、聯系屬性等。

1. 用戶——用戶的關注聯系集:多對多聯系,一個用戶可以關注多個用戶,而用戶也可以被多個用戶關注。

2. 用戶——私信的發送聯系集:一對多聯系,一個用戶可以給多個用戶發送私信。其屬性有:發送時間。

3. 用戶——私信的接收聯系集:一對多聯系,一個用戶可以接收多個用戶發送的私信。

4. 用戶——關注組的創建聯系集:一對多聯系,一個用戶可以創建多個關注組。其屬性有:關注組創建時間。

5. 用戶——關注組的包含聯系集:多對多聯系,一個用戶可以被關注組包多次,一個關注組也可以包含多個用戶。

6. 用戶——相冊的創建聯系集:一對多聯系,一個用戶可以創建多個相冊。其屬性有:創建時間。

7. 用戶——圖片的上傳聯系集:一對多聯系,一個用戶可以上傳多張照片,其屬性有:上傳時間。

8. 用戶——院校的屬於聯系集:多對一聯系,一個畢業院校可以有多個學生,即用戶。

9. 用戶——標簽的包含聯系集:一個用戶可以有多個標簽描述自己,一個標簽也可以被多個用戶使用。

10. 相冊——圖片的包含聯系集:一對多聯系,一個相冊可以包含多個圖片。

11. 用戶——皮膚的使用聯系集:多對一聯系,一種皮膚可以被多個用戶使用。

12. 用戶——群的創建聯系集:一對多聯系,一個用戶可以創建多個群,其屬性有:創建時間。

13. 用戶——群的包含聯系集:多對多聯系,一個群可以包含多個用戶,一個用戶也可以加入多個群。

14. 用戶——評論發表聯系集:一對多聯系,一個群用戶可以發表多條群評論,其屬性有:評論時間。

15. 用戶——消息的發表聯系集:一對多聯系,一個用戶可以發表多條消息,其屬性有:發表時間。

16. 用戶——消息的收藏聯系集:多對多聯系,一個用戶可以收藏多條消息,一條消息可以被多個用戶收藏。

17. 用戶——消息的轉發聯系集:多對多聯系,一個用戶可以轉發多條消息,一條消息可以被多個用戶轉發。。

18. 消息——評論的包含聯系集:一對多聯系,一條消息含有多個評論。

19. 消息——話題的包含聯系集:多對一聯系,一個話題有多個消息。

 

2.2.2  聯系集屬性數據字典

1. 用戶——私信的發送聯系集:

數據項名

取值范圍

數據項含義說明

發送時間

時間類型

用戶發送給關注者私信的時間

 

2. 用戶——關注組創建聯系集:

數據項名

取值范圍

數據項含義說明

創建時間

時間類型

用戶創建關注組的時間

 

3. 用戶——相冊的創建聯系集:

數據項名

取值范圍

數據項含義說明

創建時間

時間類型

用戶創建相冊的時間

 

4. 用戶——圖片的上傳聯系集:

數據項名

取值范轉

數據項含義說明

上傳時間

時間類型

用戶上傳圖片的時間

 

5. 用戶——群的創建聯系集:

數據項名

取值范轉

數據項含義說明

創建時間

時間類型

用戶上傳圖片的時間

 

6. 用戶——消息的發表聯系集:

數據項名

取值范轉

數據項含義說明

上傳時間

時間類型

用戶上傳圖片的時間

 

7. 用戶——評論的發表聯系集:

數據項名

取值范轉

數據項含義說明

發表時間

時間類型

用戶發表評論的時間

 

 

 

2.3 概念模型(E-R圖)

l 實體ER圖:

 

1. 用戶實體集: 

 

 

2. 消息實體集:

 

3. 標簽實體集:

 

4. 院校實體集:

 

5. 評論實體集:

 

6. 微群實體集:

 

 

 

7. 關注組實體集:

 

8. 相冊實體集: 

 

9. 圖片實體集:

 

10. 皮膚實體集:

 

11. 私信實體集:

 

12. 話題實體集:

 

 

 

l 總ER圖:

1. 第一部分:

 

2. 第2部分:

 

 

3  邏輯設計

3.1  關系設計

注:以下表中,加粗加下划線屬性為主碼,加粗斜體屬性為外碼。

 

l 由實體集轉化而來的表:

 

 

1. 用戶user:

屬性名稱

數據類型

屬性說明

Uid

char(11)

用戶編號

Ualais

varchar(20)

用戶妮稱

Uimage

image

用戶頭像

Ulogon

varchar(30)

郵箱(登陸名)

Upassswd

varchar(20)

密碼

Usex

char(1)

性別

Uname

varchar(20)

真實姓名

Uskin

char(11)

皮膚編號

Uqq

varchar(11)

QQ

Uschool

Char(11)

畢業院校

Uwork

varchar(20)

職位

Utel

char(10)

手機號

Uinfo

varchar(100)

自我介紹

Udatetime

datetime

注冊時間

Ublog

varchar(50)

個人博客

 

 

 

 

2. 關注組attenGruop表:

屬性名稱

數據類型

屬性說明

Uid

Char(11

用戶編號

NGid

Char(12)

關注組編號

Uider

Char(11)

被關注者編號

NGDatetime

Datetime

創建時間

NGnum

Int

關注組人數

Ngname

Varchar(20)

關注組名稱

 

3. 院校school

屬性名稱

數據類型

屬性說明

Sid

Char(11)

院校編號

Sname

Varchar(10)

所在省

Spro

Varchar(10)

所在市

Scity

Varchar(10)

所在縣

Scountry

Varchar(20)

院校名稱

 

4. 標簽label

屬性名稱

數據類型

屬性說明

Lid

Char(11)

標簽編號

Lname

Varchar(10)

標簽內容

 

5. 用戶使用標簽UserLabel

屬性名稱

數據類型

屬性說明

Uid

Char(11)

用戶編號

Lid

char(11)

標簽編號

 

 

6. 私信priMessage表:

屬性名稱

數據類型

屬性說明

PMid

Char(12)

私信編號

Uid

Char(11)

發送者編號

RUid

Char(11)

接收者編號

PMcontent

Varchar(200)

私信內容

PMdatetime

datetime

發送時間

 

7. 微群group表:

 

 

 

 

屬性名稱

數據類型

屬性說明

Gid

Char(16)

微群編號

Gname

Varchar(20)

微群妮稱

Gadmin

Char(11)

群管理員

Gid

Char(11)

微群用戶編號

Glabel

Char(11)

微群標簽

Gnum

Int

用戶數

Gdatetime

Datetime

創建時間

 

 

8. 相冊photoFolder

屬性名稱

數據類型

屬性說明

PFid

Char(11)

相冊編號

Uid

Char(11)

用戶編號

PFname

Varchar(20)

相冊名稱

PFnum

int

圖片數量

Pid

Char(11)

圖片編號

 

 

 

 

9. 圖片photo:

屬性名稱

數據類型

屬性說明

Pid 

Char(11)

圖片編號

Pname

Varchar(20)

相片名稱

Photo

Varbinary(5000)

圖片

 

10. 皮膚skin表:

屬性名稱

數據類型

屬性說明

Sid 

Char(6)

皮膚編號

Simage

Varbinary(2048)

背景圖片

Scolor

Char(9)

RGB主題顏色

 

 

l 由類層次轉化而來的表:

 

 

1. 普通消息message表:

屬性名稱

數據類型

屬性說明

Mid

Char(16)

消息編號

Uid

Char(11)

用戶編號

Tid

Char(16)

話題編號

Cid

Char(11)

轉發編號

Mcontent

Varchar(150)

消息內容

Mhttp

Varchar(150)

鏈接

Mfav

Int

收藏次數

Mreply

Int

評論次數

Mcopy

Int

轉發次數

Mdatetime

datetime

發表時間

 

 

2. 普通消息話題messageTitle

屬性名稱

數據類型

屬性說明

Tid

Char(16)

話題編號

Tnum

Int

消息數量

Tname

Varchar(20)

話題標題

Tcontent

Varchar(1000)

話題簡介

Ttime

datetime

發表時間

 

 

 

3. 普通消息評論messageReply:

 

屬性名稱

數據類型

屬性說明

Rid

Char(16)

評論編號

Mid

Char(16)

消息編號

Uid

Char(11)

用戶編號

Rdatetime

Datetime

評論時間

Rcontent

Varchar(200)

評論內容

 

4. 群消息話題groupTitle表:

 

屬性名稱

數據類型

屬性說明

GTid

Char(17)

群話題編號

Tnum

Int

消息數量

Tname

Varchar(20)

話題標題

Tcontent

Varchar(1000)

話題簡介

Ttime

datetime

發表時間

 

5. 微群消息評論gruopReply

 

屬性名稱

數據類型

屬性名稱

GRid

Char(17)

微群消息評論編號

GMid

Char(17)

群消息編號

Gid

Char(17)

群編號

Uid

Char(11)

用戶編號

GRdatetime

datetime

評論時間

GRcontent

Varchar(200)

評論內容

 

6. 群消息groupMessage表:

 

屬性名稱

數據類型

屬性說明

GMid

Char(17)

群消息編號

Gid

Char(16)

群編號

Uid

Char(11)

用戶編號

GTid

Char(17)

群話題編號

Cid

Char(11)

轉發編號

Mcontent

Varchar(150)

消息內容

Mhttp

Varchar(150)

鏈接

Mreply

Int

評論次數

Mcopy

Int

轉發次數

GMdatetime

datetime

發表時間

 

 

l 由聯系集轉化的表:

 

 

1. 收藏fav

屬性名稱

數據類型

屬性說明

Fid

Char(11)

收藏編號

Uid

Char(11)

用戶編號

Mid

Char(16)

消息編號

 

2. 關注表attention:

 

屬性名稱

數據類型

屬性說明

Uid

Char(11)

用戶編號

attUid

Char(11)

被關注者編號

3. 轉發copy

 

屬性名稱

數據類型

屬性說明

Cid

Char(11)

轉發表編號

Uid

Char(11)

用戶編號

Mid

Char(16)

被轉發消息編號

CUid

Char(11)

被轉發用戶編號

 

3.2  關系優化

分析發現

l 微群group表:

 

屬性名稱

數據類型

屬性說明

Gid

Char(16)

微群編號

Gname

Varchar(20)

微群妮稱

Gadmin

Char(11)

群管理員

GUid

Char(11)

微群用戶編號

Glabel

Char(11)

微群標簽

Gnum

Int

用戶數

Gdatetime

Datetime

創建時間

並不符合BCNF,把group 分解得

groupMember(Gid,GUid)

groupInfo(Gid,Gname ,Gnum,Gdatetime)

groupMemAdmin(Gid,Gadmin)

 

 

l 關注組attenGruop表:

屬性名稱

數據類型

屬性說明

Uid

Char(11

用戶編號

NGid

Char(12)

關注組編號

Uider

Char(11)

被關注者編號

NGDatetime

Datetime

創建時間

NGnum

Int

關注組人數

Ngname

Varchar(20)

關注組名稱

亦不符合BCNF

分解得:

attenMember(NGid,uider)

userAtten(Uid,NGid)

attenInfo(NGid, NGDatetime,NGnum,Nganme)

 

3.3  約束的說明

l 關系表中的外碼與主碼在4.1中定義。

l 需求分析階段的數據約束在4.2中定義。

4  數據庫應用設計

4.1  數據庫腳本

 

set nocount on 

set dateformat ymd

use master

go 

  if not exists(select * from syslogins where name='weibouser')

  exec sp_addlogin weibouser, weibouser

go

if exists(select *from sysdatabases where name=' weiboDB')

     drop database weiboDB

go 

--創建數據庫

create database weiboDB

--主數據庫

on primary

 (name=' weiboDB ',

 filename='c:\weibo\ hresourcesdb.mdf',

 size=500,

 maxsize=500000,

 filegrowth=1)

--數據庫日志

log on 

 (name=' weiboDB log ',

 filename='d:\ weibo \ weiboDB.ldf',

 size=50,

 maxsize=5000,

 filegrowth=1)

go

 

 

/用戶user*/

create table user(

Uid char(11) not null primary key --用戶編號

check(Uid like '[U][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9] [0-9] [0-9]')

Ualais varchar(20) not null --用戶妮稱

Uimage image not null --用戶頭像

Ulogon varchar(30) not null --郵箱(登陸名)

Upassswd varchar(20) not null --密碼

Usex char(1) not null --性別

Uname varchar(20) null --真實姓名

Uskin char(11) not null --皮膚編號

Uqq varchar(11) null --QQ

Uschool Char(11) null --畢業院校

Uwork varchar(20) null --職位

Utel char(10) null --手機號

Uinfo varchar(100) null --自我介紹

Udatetime datetime not null --注冊時間

Ublog varchar(50) null --個人博客

   constraint PK1 foreign key(Uskin) references skin(Sid),

constraint PK2 foreign key(Uschool) references school(Sid),

 

)

 

Go

/* attenMember表*/

create table attenMember (

 

NGid Char(12) not null --關注組編號

Uider Char(11) not null --被關注者編號

constraint pK primary key(NG,Uider),

constraint PK1 foreign key(NGid) references attenInfo(NGid),

constraint PK1 foreign key(uider) references user(Uid)

 

)

go

/* userAtten*/

create table attenGroup(

Uid Char(11) not null not null --用戶編號

NGid Char(12) not null not null --關注組編號

constraint pK primary key(Uid,NUid),

constraint PK1 foreign key(NGid) references attenInfo(NUid)

)

go

 

/* AttenInfo*/

create table attenGroup(

 

NGid Char(12) not null primary key --關注組編號

check(NGid like '[U][G][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9] [0-9] [0-9]')

 

NGDatetime Datetime not null --創建時間

NGnum Int not null --關注組人數

Ngname Varchar(20) not null --關注組名稱

 

 

)

go

 

 

/*院校school*/

create table shcool(

Sid Char(11) not null primary key --院校編號

check(Sid like '[S][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9] [0-9] [0-9]')

Sname Varchar(10) not null --所在省

Spro Varchar(10) not null --所在市

Scity Varchar(10) not null --所在縣

Scountry Varchar(20) not null --院校名稱

 

)

go

 

/*標簽label*/

create table label (

Lid Char(11) not null primary key --標簽編號

check(Lid like '[U][G][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9] [0-9] [0-9]')

Lname Varchar(10) not null --標簽內容

 

)

go

/*標簽Userlabel*/

create table Userlabel (

Uid char(11) not null --用戶編號

Lid char(11) not null --標簽編號

constraint FK primary key(Uid,Lid),

constraint PK1 foreign key(Uid) references user(Uid),

constraint FK2 foreign key(Lid) references Label(Lid)

 

)

go

 

/*私信priMessage*/

create table priMessage(

PMid Char(12) not null primary key --私信編號

check(PMid like '[P][M][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9] [0-9] [0-9]')

 

Uid Char(11) not null --發送者編號

RUid Char(11) not null --接收者編號

PMcontent Varchar(200) not null --私信內容

PMdatetime datetime not null --發送時間

constraint FK1 foreign key(RUid) references user(Uid),

constraint FK2 foreign key(Uid) references user(Uid)

 

)

go

/*微群groupMember*/

create table groupMember (

Gid Char(16) not null primary key --微群編號

Uid Char(11) not null --微群用戶編號

constraint FK1 foreign key(uid) references user(Uid),

constraint FK1 foreign key(gid) references groupInfo(Gid)

)

go

/*微群groupInfo*/

create table groupInfo(

Gid Char(16) not null primary key --微群編號

check(Gid like '[G][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9] [0-9] [0-9]')

Gname Varchar(20) not null --微群妮稱

Glabel Char(11) not null --微群標簽

Gnum Int not null --用戶數

Gdatetime Datetime not null --創建時間

 

constraint FK2 foreign key(Glabel) references label(Lid)

 

)

go

 

/*微群groupAdmin*/

create table groupInfo(

Gid Char(16) not null primary key --微群編號

Gadmin Char(11) not null --群管理員

constraint PK1 foreign key(Gadmin) references user(uid),

 

)

go

 

 

/*相冊photoFolder*/

create table photoFolder(

PFid Char(11) not null primary key --相冊編號

check(PFid like '[P][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9] [0-9] [0-9]')

 

Uid Char(11) not null --用戶編號

PFname Varchar(20) not null --相冊名稱

PFnum int not null --圖片數量

Pid Char(11) not null --圖片編號

constraint FK1 foreign key(Uid) references user(Uid)

 

)

go

/*圖片photo*/

create table photo(

Pid  Char(11) not null primary key --圖片編號

Check PGid like '[P][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9] [0-9] [0-9]')

 

Pname Varchar(20) not null --相片名稱

Photo Varbinary(5000) not null --圖片

)

go

/*皮膚skin*/

create table skin(

Sid  Char(11) primary key --皮膚編號

check(Sid like '[G][0-9][0-9][0-9][0-9][0-9]')

 

Simage Varbinary(2048) --背景圖片

Scolor Char(9) --RGB主題顏色

 

)

go

/*普通消息message*/

Create table message(

Mid Char(16) not null primary key --消息編號

check(Gid like '[M][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9][0-9]')

 

Uid Char(11) not null --用戶編號

Tid Char(16)  null --話題編號

Cid Char(11)  null --轉發編號

Mcontent Varchar(150) not null--消息內容

Mhttp Varchar(150) null --鏈接

Mfav Int not null --收藏次數

Mreply Int not null --評論次數

Mcopy Int not null --轉發次數

Mdatetime datetime not null --發表時間

constraint FK1 foreign key(uider) references user(Uid),

constraint FK2 foreign key(Uid) references copy(Cid)

constraint Fk3 foreign key(Uid) references messageTitle(Tid)

)

go

/*普通消息話題messageTitle*/

create table messageTitle(

Tid Char(16) not null primary key --話題編號

check(Tid like '[T][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9][0-9]')

 

Tnum Int not null --消息數量

Tname Varchar(20) not null --話題標題

Tcontent Varchar(1000) not null--話題簡介

 

)

go

/*普通消息評論messageReply*/

create table messageReply(

Rid Char(16) not null primary key --評論編號

check(Rid like '[R][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9][0-9]')

 

Mid Mid(16) not null --消息編號

Uid Uid(11) not null --用戶編號

Rdatetime Datetime not null --評論時間

Rcontent Varchar(200) not null --評論內容

constraint FK1 foreign key(Mid) references message(Mid),

constraint FK2 foreign key(Uid) references user(Uid)

 

)

go

/*群消息話題groupTitle*/

create table groupTitle(

GTid Char(17) not null primary key --話題編號

check(GTid like '[G][T][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9][0-9]')

 

Tnum Int not null --消息數量

Tname Varchar(20) not null --話題標題

Tcontent Varchar(1000) not null --話題簡介

 

)

go

/*微群消息評論groupReply*/

create table groupReply(

GRid Char(17) not null primary key --微群消息評論編號

check(GRid like '[G][R][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9][0-9]')

GMid Char(16) not null --群消息編號

Gid Char(16) not null --群編號

Uid Char(11) not null --用戶編號

GRdatetime datetime not null --評論時間

GRcontent Varchar(200) not null --評論內容

constraint FK1 foreign key(GMid) references groupMessage(Uid),

constraint FK2 foreign key(Gid) references group(Uid)

constraint FK3 foreign key(Uid) references user(Uid)

)

go

/*群消息groupMessage*/

create table groupMessage(

GMid Char(17) not null primary key --群消息編號

check(GMid like '[G][M][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9][0-9]')

Gid Char(16) not null --群編號

Uid Char(11) not null --用戶編號

GTid Char(16)  null --群話題編號

Cid Char(11) not null --轉發編號

Mcontent Varchar(150) not null --消息內容

Mhttp Varchar(150) not null --鏈接

Mreply Int not null --評論次數

Mcopy Int not null --轉發次數

GMdatetime datetime not null --發表時間

constraint FK1 foreign key(Gid) references group(Gid),

constraint FK2 foreign key(Uid) references user(Uid)

constraint FK3 foreign key(uider) references GroupTitle(GTid),

constraint FK4 foreign key(Cid) references Copy(cid)

 

)

go

 

/*收藏fav*/

 

create table fav(

Fid Char(11) not null primary key --收藏編號

check(Fid like '[G][T][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] ')

Uid Char(11) not null --用戶編號

Mid Char(16) not null --消息編號

constraint FK1 foreign key(Uid) references user(Uid),

constraint FK2 foreign key(Mid) references message(Uid)

 

)

go

/*關注attention*/

 

create table attention(

Uid Char(11) not null --用戶編號

attUid Char(11) not null --被關注者編號

constraint pK primary key(Uid,attUid) ,

 

constraint FK1 foreign key(Uid) references user(Uid),

constraint FK2 foreign key(Mid) references message(Uid)

 

)

go

 

 

/*轉發copy*/

 

create table copy(

Cid Char(11) not null primary key --轉發表編號

check(Fid like '[C][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] ')

 

Uid Char(11) not null --用戶編號

Mid Char(16) not null --被轉發消息編號

CUid Char(11) not null --被轉發用戶編號

constraint FK1 foreign key(Mid) references Message(Mid),

constraint FK2 foreign key(Uid) references user(Uid),

constraint FK2 foreign key(CUid) references user(Uid)

)

go

 

4.2  數據庫完整性設計

主要是通過觸發器定義一些復雜的數據庫完整性要求。在本系統中用的較多的是插入觸發器,在數據約束已詳細描述。此處給予幾個簡單實現:

為方便處理首先規定所插入操作一次只允許插入一條記錄。

CREATE TRIGGER InsTrg

ON user --此處可用別相應的表取代

FOR INSERT

AS      

        DECLARE @ info char(11

         IF ( SELECT count(*) FROM inserted )>1

              ROLLBACK

 

 

1.用戶相冊不超過100

CREATE TRIGGER pftrigger

ON photoFolder

FOR INSERT

AS      

@info char(11);

Select @info=Uid from inserted 

IF ( SELECT count(*) FROM phtotFolder  a where  @info=a.Uid)=100)

              ROLLBACK

2.相冊圖片不超過500

CREATE TRIGGER prigger

ON photo

FOR INSERT

AS      

@info char(11);

Select @info=Uid from inserted 

      

IF ( SELECT count(*) FROM phtot a where  @info=a.Uid)=500)

              ROLLBACK

3.關注組數量不超過50

CREATE TRIGGER prigger

ON attenMember

FOR INSERT

AS      

@info char(11);

Select @info=NGid from inserted 

      

IF ( SELECT count(NGid) FROM attenMember where  @info=aNGid)=50)

              ROLLBAC

4.3 存儲過程設計

推存用戶類似的可能感興趣的用戶。

create procedure delayCount(@uid char(11))

as

begin

create table #tmp(

UId char(11);

)

declare @userId char(11)

declare myCur cursor for

select Uid

from user a

where @uid.Uschool=a.Uschool or

@uid.Uwork =a.Uwork 

open myCur

fetch myCur into @userId

while(@@fetch_status=0)

begin

insert into #tmp values(@userId)

fetch myCur into @userId

 

end

close myCur

deallocate myCur

select * from #tmp

end

 

 

統計當天熱門話題前15話題編號,並返回,此處指普通消息。

create procedure delayCount(@date datetime)

as

begin

create table #tmp(

titleId char(11);

)

declare @titleId char(11)

declare myCur cursor for

select top 15 Tid

from messageTitle

where Ttime=@date

orderby Tnum desc

open myCur

fetch myCur into @titleId

while(@@fetch_status=0)

begin

insert into #tmp values(@titleId)

fetch myCur into @titleId

 

end

close myCur

deallocate myCur

select * from #tmp

end

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM