1. 程式人生 > >資料庫系統原理設計--論壇系統

資料庫系統原理設計--論壇系統

論壇資訊管理系統 
摘要:隨著科學技術的發展,基本上所有的具有一定數量資料的機構都 
開始使用計算機資料庫來管理。現如今網路盛行,BBS 論壇已成為人們生活 
中的一種資訊交流渠道,它通過在計算機上執行服務軟體,允許使用者使用終端 
程式通過電話調變解調器撥號或者 Internet 來進行連線,執行下載資料或程 
序、上傳資料、閱讀新聞、與其他使用者交換訊息等功能。 
本文主要介紹利用 SQL Sever 2008 作為設計工具,理解並運用課程中關 
於資料庫設計的相關理論,按照設計流程要求完成完整的論壇資訊管理的數 
據庫設計,包括需求分析、概念結構設計、邏輯結構設計、物理結構設計和 
資料庫實施。 

關鍵詞:SQL 語言、資料庫設計、論壇資訊管理系統 

第一部分:引言 
資料庫技術是計算機科學技術發展最快,應用最為廣泛的技術之一。其 
在計算機設計,人工智慧,電子商務,企業管理,科學計算等諸多領域均得 
到了廣泛的應用,已經成為計算機資訊系統和應用的核心技術和重要基礎。 
隨著網路的發展,論壇已經成為人們日常進行交流的一個不可或缺的空 
間。人們可以再論壇中談論喜歡的話題,提出或解答疑問,釋出通知和公告 
等。由於它獨特的形式和強大的功能,受到廣大網友的歡迎,併成為全世界 
計算機使用者資訊交流的園地。 
在軟體開發的過程中,隨著面向物件程式設計和資料庫系統的成熟,數 
據成為軟體開發的核心,程式的設計要服從資料,因此論壇資訊管理系統的 
資料庫設計尤其重要。本文主要介紹論壇資訊管理系統的資料庫方面的設計, 
從需求分析到資料庫的執行與維護都進行詳細的敘述。本文的分為 6 章: 
第 1 章主要是課程的簡介及設計的內容與目的。 
第 2 章是需求分析,此階段是資料庫設計的起點。 
第 3 章是概念設計,它是將需求分析的使用者需求抽象為資訊結構。 
第 4 章是邏輯結構設計,它將概念模型轉換為某個 DBMS 所支援的資料 
模型。 
第 5 章物理設計階段,它包括系統具體功能模板的分析實現。 
第 6 章是資料庫的實施與執行,它包括資料的載入及資料庫的執行。 
第二部分:資料庫內容設計 
第一章 緒論 
1、課題簡介 
隨著現代科技的高速發展,裝置和管理的現代化,在實際工作中如何提高工作效率成為 
一個很重要的問題。而建立資訊管理系統是一個很好的解決辦法。 
經過一學期的學習,我對資料庫方面的知識有了很大的瞭解,本著理論聯絡實際的宗旨, 

通過這次綜合設計實驗課的機會,在查詢資料、反覆思考的前提下設計了一個論壇資訊管理 
系統。在下面的各章中,我將詳細介紹這個資料庫的設計和實施過程。 
2、設計目的 
應用對資料庫系統原理的理論學習,通過上機實踐的方式將理論知識與實踐更好的結合 
起來,鞏固所學知識。 
資料庫應用 課程實踐:實踐和鞏固在課堂教學中學習有關知識,熟練掌握對於給定結構 
的資料庫的建立、基本操作、程式系統的建立和除錯以及系統評價。 
資料庫原理 軟體設計實踐:實踐和鞏固在課堂教學中學習的關於關係資料庫原理的有關 
知識和資料庫系統的建立方法,熟練掌握對於給定實際問題,為了建立一個關係資料庫資訊 
管理系統,必須得經過系統調研、需求分析、概念設計、邏輯設計、物理設計、系統除錯、 
維護以及系統評價的一般過程,為畢業設計打下基礎。 
3、設計內容 
運用基於E-R 模型的資料庫設計方法和關係規範化理論做指導完成從系統的分析到設 
計直至系統的最終實現,開發論壇資訊管理系統,完成論壇資訊管理系統的全部功能。 
首先做好需求分析,並完成系統具體分析和資料字典。 
其次做概念結構設計,利用實體聯絡的方法將需求分析的使用者需求抽象為資訊結構,得 
到E-R圖。 
然後就是邏輯結構設計,將E-R 圖轉換為計算機系統所支援的邏輯模型。 
第二章 需求分析 
1、需求分析的任務 
需求分析的任務是調查應用領域,對應用領域中的資訊要求和操作要求進行詳細分析, 
形成需求分析說明書。重點是調查,收集與分析使用者在資料管理中的資訊要求,處理要求, 
資料的安全性與完整性要求。 
為了完成需求分析的任務,要詳細調查待開發的資料庫應用部門的情況,瞭解原系統工 
作概況,分析使用者的各種需求,在此基礎上確定新系統的功能。新系統必須考慮今後的擴充 
和改變,不能僅僅按當前應用需求來設計資料庫。 
2、需求分析的內容 
開發一個BBS 論壇系統,具體應實現如下功能: 

(1)使用者註冊和登入,後臺資料庫需要存放使用者的註冊資訊和線上狀態資訊。 
(2)使用者發帖,後臺資料庫需要存放帖子相關資訊,如帖子內容、標題等。 
(3)論壇版塊管理,後臺資料庫需要存放各個版塊資訊,如版主、版塊名稱和帖子數等。 
(4)確定系統的邊界。確定整個系統中哪些由計算機完成,哪些將來由系統完成,哪些 
由人工完成。由計算機完成的功能就是新系統完成的功能。 
3、資料字典 
表中列名 資料型別 可否為空 說明 
UID char Not null(主鍵) 使用者編號 
UName char Not null 賬號 
UPassword char not null 密碼 
UPoint Int not null 積分 
UClass char Not null 級別 
表1:BBSUsers使用者資訊表 
表中列名 資料型別 可否為空 說明 
cid char Not null(主鍵) 欄目編號 
fcid char Not null 父欄目編號 
cname char Not null 欄目名稱 
cmasterid char Not null 版主編號 
cstatement varchar Not null 欄目描述 
表2:BBSColumn欄目資訊 
表中列名 資料型別 可否為空 說明 
tid char Not null(主鍵) 主題編號 
tuid char Not null 使用者編號 
ttopic varchar Not null 主題標題 
tclickcount int Not null 主題點選次數 
tcontents char Not null 主題內容 

ttime datetime Not null 主題釋出時間 
ttype char Not null 型別 
tfuj char 附件 
表3:BBSTopic主題資訊表格 
表中列名 資料型別 可否為空 說明 
rtid char Not null 回覆主題編號 
rtopic varchar Not null 回覆主題標題 
tid char Not null 主題編號 
rtcontents char Not null 回覆主題內容 
rttime datetime Not null 釋出時間 
ruid char Not null 使用者編號 
rfuj char 附件 
表4:BBSReply 回覆主題資訊表 
第三章 概念結構設計 
1、概念結構設計的簡介 
現實世界中的事物及其活動被人們抽象為資料,人們為了更好地利用和處理資料,又必 
須把針對某一方面應用的相關資料按照一定的資料結構形式組織起來。這種資料結構形式只 
考慮資料本身的結構以及相互的自然聯絡,是人們對現實世界的認識和抽象,不考慮在計算 
機上的具體實現,也可以說與計算機的具體實現無關,所以被人們稱之為概念資料模型。 
2、概念結構設計的方法 
設計概念結構通常有四類方法:自頂向下,自底向上,逐漸擴張以及混合策略。本論 
壇資訊管理系統採用的是自底向上的方法。即首先定義全域性的概念結構的框架,然後逐步細 
化。根據自頂向下地進行需求分析然後再自底向上地進行概念設計。 
2.1 概念結構設計的步驟 
概念結構的設計可分為兩步:第一步是抽象資料並設計區域性檢視。第二步是 
整合區域性檢視,得到全域性的概念結構。 
2.2 資料抽象與區域性檢視設計 

區域性E-R 圖: 
使用者實體E-R 圖 主題實體E-R 圖 使用者 
編號 
賬號 密碼 積分 
級別 
主題 
編號 
標題 
型別 
點選量 
內容 
釋出時間 
使用者編號 
附件 
欄目實體E-R 圖 回覆主題實體E-R 圖 2.3 檢視的整合 
描述進行檢視整合的具體過程,最後得到論壇資訊管理系統的總體概念結構E-R 圖, 
其中各實體的屬性同以上各區域性E-R 圖,在此省略。 
欄目 
欄目編號 
父欄目編號 
名稱 
版主編號 
描述 
回覆主題 
回覆主題編號 
標題 
內容 
附件 
釋出時間 
使用者編號 
主題編號 
第四章 邏輯結構設計 
1、E-R 圖向關係模型的轉換 
將總體概念結構的E-R 圖轉化成關係模型: 
使用者(使用者編號,賬號,密碼,積分,級別) 
欄目(欄目編號,父欄目編號(外來鍵),名稱,版主,描述) 
主題(主題編號,標題,型別,點選率,內容,釋出時間,釋出時間,使用者編號,附件) 
回覆主題(回覆主題編號,標題,主題編號,內容,釋出時間,使用者編號,附件) 
2、資料庫的結構 
給出資料庫基本表總體結構圖: 
使用者 
主題 
回覆主題 
管理 
發表 
發表 
對應 
欄目 
包含 
包含 
根據總體結構圖設計各表的結構: 
BBSUsers使用者資訊表: 
BBSColumn欄目資訊: BBSTopic主題資訊表格: BBSReply回覆主題資訊表: 第五章 物理設計階段 1、系統功能模組 (1)使用者表的查詢和更新模組 
將完成使用者基本資訊的查詢、更新(修改、插入、刪除)操作,便於對使用者資訊的集中 
管理 
(2)欄目表的查詢和更新模組 
將完成欄目基本資訊的查詢、更新(修改、插入、刪除)操作,便於對欄目資訊的集中 
管理 
10 
(3)主題表的查詢和更新模組 
將完成對所發表主題的基本資訊的查詢、更新(修改、插入、刪除)操作,便於對主題 
資訊的集中管理 
(4)回覆主題表的查詢和更新模組 
將完成回覆主題基本資訊的查詢、更新(修改、插入、刪除)操作,便於對回覆主題信 
息的集中管理 
2、物理設計階段結果 
編號 儲存過程 作用 
1 使用者表_insert 在使用者表中插入一元組 
2 欄目表_insert 在欄目中插入一元組 
3 主題表_insert 在主題中插入一元組 
4 回覆主題表_insert 在回覆主題中插入一元組 
儲存過程彙總 (其他表的查詢、修改、刪除與上面表的大致相同,這裡不再具體列出) 
第六章 資料庫的實施與執行 
1、建立資料庫 
Create database BBS 
on primary 
(name=BBS_data, 
Filename='d:\BBS_data.mdf', 
Size=20MB, 
Filegrowth=10%, 
Maxsize=200MB) 
Log on 
(name=bbs_log, 
Filename='d:\bbs_data.ldf', 
Size=10mb, 
Filegrowth=10%, 
Maxsize=100MB) 
Go 
2、建立基本表 
2.1 建立使用者資訊表 
create table u 
(uid char(14) primary key, 
uname char(16)not null, 
upassword char(10)not null, 
upoint int not null, 
uclass char(8)not null); 
go 
11 
2.2 建立欄目資訊表 
create table c 
(cid char(8) primary key, 
fcid char(8)not null, 
cname char(10)not null, 
cmasterid char(14)not null unique, 
cstatemeent varchar(20)not null, 
foreign key (cmasterid) references u(uid), 
foreign key(fcid) references c(cid)); 
go 
2.3 建立主題資訊表 
create table t 
(tid char(8) primary key, 
ttopic char(10)not null, 
ttype char(4)not null, 
tclickcount int not null, 
tcontents char(16)not null, 
ttime datetime not null, 
tuid char(14)not null, 
tfuj char(10), 
foreign key(tuid)references u(uid), 
check(ttype in('精華','置頂','普通'))); 
go 
2.4 建立回覆主題資訊表 
create table rt 
(rtid char(8) primary key, 
rtopic varchar(10)not null, 
tid char(8)not null, 
rcontent char(16)not null, 
rttime datetime not null, 
ruid char(14)not null, 
rfuj char(10), 
foreign key(tid)references t(tid), 
foreign key(ruid)references u(uid)); 
go 
3、建立檢視 
3.1 建立使用者表檢視 
create view u_view 
as 
select * 
12 
from u 
with check option; 
go 
3.2 建立欄目表檢視 
create view c_view 
as 
select * 
from c 
with check option; 
go 
3.3 建立主題表檢視 
create view t_view 
as 
select * 
from t 
with check option; 
go 
3.4 建立回覆主題表檢視 
create view rt_view 
as 
select * 
from rt 
with check option; 
go 
4、建立儲存過程並對其功能進行驗證 
4.1 建立使用者表的儲存過程並呼叫 
Create procedure p_insertu 
(@uid char(14), 
@uname char(16), 
@upassword char(10), 
@upoint int, 
@uclass char(8)) 
as 
insert into u values(@uid,@uname,@upassword,@upoint,@uclass) 
go 
exec p_insertu '20101104978','雷利','563478','436798','初級使用者' 
go 
4.2 建立欄目表的儲存過程 
13 
Create procedure p_insertc 
(@cid char(8), 
@fcid char(8), 
@cname char(10), 
@cmasterid char(14), 
@cstatemeent varchar(20)) 
as 
insert into c values(@cid,@fcid,@cname,@cmasterid,@cstatemeent) 
go 
4.3 建立主題表的儲存過程 
Create procedure p_insertt 
(@tid char(8), 
@ttopic char(10), 
@ttype char(2), 
@tcontents char(16), 
@tuid char(14), 
@tfuj char(10)) 
as 
insert into t values(@tid,@ttopic,@ttype,@tcontents,@tuid,@tfuj) 
go 
5、建立觸發器 
5.1 實現“當用戶開始註冊時,積分為100”的功能 
create trigger inu_upoint 
on u 
after insert 
as 
begin 
update u 
set upoint=100 
end 
go 
結論 
通過這次綜合實驗設計,我瞭解了資料庫設計的一般過程。在接受客戶的一個專案的時 
候,首先是進行系統分析。即首先分析其以後的銷售情況以及技術可行性。如果二者可行, 
接下來要做的就是總體設計。首先必須聽取客戶的要求,將其提出的功能按某種方式劃分 
為幾種模組,這就是整體設計。再對每一個模組進行細化形成最為簡單的模組。然後是考慮 
每一細化模組的演算法並將其用語言刻畫出來,這就是詳細設計,這就邁出了最為關鍵的一步。 
剩下的就是編譯測試階段,這是程式設計的必經階段,也是我們勞動結果的驗金石。