通過前面的介紹,能夠發現,其實這是一個很是小的入門級項目,整個功能的實現就是簡單的增刪改查。增長一條主題,修改一條主題,刪除一條主題或評分,查看全部主題或是全部評分。根據需求得出要實現的功能,而後根據大致功能就要想如何設計數據庫表。mysql
這裏我選用的是關係型數據庫MySQL
,因此在項目動手以前最重要的要設計好數據庫表,你們常說:一個項目數據庫設計好了,基本上就完成了一大部分的工做。這麼說實際上是有些道理的。好的數據表設計會讓後續的編程工做更加輕鬆。sql
該項目的功能簡單,因此數據表天然也很簡單,這裏我只是建立了三個數據表:message
、vote
以及user
,一個保存主題信息,一個保存評分信息,一個保存管理員帳號信息。數據庫
數據庫SQL語句不熟悉的能夠選擇一個GUI工具,方便數據庫方面的工做,避免因爲數據庫方面的一些問題阻礙了整個項目的編程工做。這一點很重要,特別對於像我這樣的小白來講,頗有可能因爲整個過程當中的一點困難障礙,就阻礙了整個編程工做,甚至是放棄。編程
這個項目我是在Windows平臺上進行了,因而選擇了一個簡單的MySQL GUI工具-MySQL-Front,建立數據庫,建立表,新建測試數據等等均可以直接在軟件上點點鼠標就能夠完成了,大大簡化了開發流程。整個數據表的設計也很是簡單:數據庫設計
message:工具
title
: 表明評分主題測試
author
: 主題做者spa
average
: 該主題平均分設計
status
: 主題狀態,是否容許評分code
createTime
: 建立時間
endTime
: 關閉時間(該字段後來沒有使用)
vote:
titleId
: 評分的主題id
voteIp
: 評分者IP,因爲在內網環境,每臺電腦對應一個IP地址
voteTime
: 評分時間
voteScore
: 分數
user:
這個就很少說了,用戶名和密碼,在這個項目裏只是爲了存儲管理員帳號使用。
因爲項目比較簡單以及本人是個數據庫小白,因此看出這是個很簡單的數據表結構,能知足該項目的需求便可。
新建主題的時候,直接insert into message
;
刪除主題的時候,delete from message
;
修改主題的時候,update message
;
查找的時候,select * from message
。
同理,vote
評分表也是這樣。
在計算平均分的時候,經過titleId
去表vote
中查找average(voteScore)
,而後更新到message
表中便可。以下SQL語句:
select avg(voteScore) average from vote v , message m where v.titleId = m.Id and v.titleId = titleId
在檢查重複評分的時候,直接查找titleId
以及voteIp
是否存在便可。以下SQL語句:
select count(*) voteNum from vote where titleId= `titleId` and voteIp = `voteIp`
當結果爲0的時候,即表示沒有評過度。
獲取每一個主題的評分數量時,在vote
表中查找對應titleId
對應的行數便可。SQL語句以下:
select count(*) voteNum from vote where titleId= `Id`
整個後臺的數據庫設計大概就這些,並無很複雜的結構。