Node項目之評分系統(二)- 數據庫設計

通過前面的介紹,能夠發現,其實這是一個很是小的入門級項目,整個功能的實現就是簡單的增刪改查。增長一條主題,修改一條主題,刪除一條主題或評分,查看全部主題或是全部評分。根據需求得出要實現的功能,而後根據大致功能就要想如何設計數據庫表。mysql

這裏我選用的是關係型數據庫MySQL,因此在項目動手以前最重要的要設計好數據庫表,你們常說:一個項目數據庫設計好了,基本上就完成了一大部分的工做。這麼說實際上是有些道理的。好的數據表設計會讓後續的編程工做更加輕鬆。sql

該項目的功能簡單,因此數據表天然也很簡單,這裏我只是建立了三個數據表:messagevote以及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`

整個後臺的數據庫設計大概就這些,並無很複雜的結構。

相關文章
相關標籤/搜索