1. 程式人生 > >棋牌遊戲伺服器架構: 詳細設計(三) 資料庫設計

棋牌遊戲伺服器架構: 詳細設計(三) 資料庫設計

主要有3類Database: ServerInfoDB,UserInfoDB和GameDB。 ServerInfoDB主要儲存的是遊戲列表的資訊,UserInfoDB儲存玩家的全域性資訊,而GameDB就是積分以及積分變化情況。下面分別加以描述。

1. ServerInfoDB

      ServerInfoDB主要儲存遊戲列表資訊。主要有以下幾個表:

      1. GameTypeInfo,其主要欄位為:

          TypeID:型別標識 ID 

          TypeName:型別名字,例如棋牌類,休閒類

          Enable:控制遊戲大廳是否顯示該型別,預設為 1,即為預設顯示

      2. GameKindInfo,其主要欄位為:

          KindID: 遊戲的唯一標識

          TypeID: 外來鍵(GameTypeInfo的主鍵),該遊戲所屬型別

          KindName: 遊戲名稱, 比如德州撲克,鬥地主等。

          ProcessName: 客戶端程序名稱

          MaxVersion: 客戶端程序的最低版本,若是登入時發現客戶端版本低於這個值,要求其更新。

          Enable: 控制遊戲大廳是否顯示該遊戲,預設為1。

      3. GameStationInfo 站點資訊表:

          StationID:  站點標識

          StationName: 站點名稱

          Enable: 這個站點是玩家可以選擇的,這個標識控制是否顯示給玩家,預設為1

2 UserInfoDB

      這個資料庫主要儲存玩家的全域性資訊,有兩個表: UserAccounts和ClubList:

      1. UserAccounts的主要欄位:

          UserID:玩家的唯一標識,註冊的時候自動生成,不能修改

          Accounts:帳戶名字,具有唯一性,不能重複,能修改

          LogonPass:玩家帳戶的密碼,採用通用加密演算法 MD5 加密記錄

          Gender:性別

          LogonNullity:帳戶禁止標誌,影響玩家登入廣場和登入遊戲房間

          ServiceNullity:服務禁止標誌,保留供網站系統使用或者將來系統擴充套件使用

          UserRight:玩家許可權標誌,每一位代表一種許可權, 比如旁觀許可權,大廳公聊許可權,私聊許可權等。

          ManageRight:管理許可權標誌,第一位代表一種管理許可權,比如踢出玩家,釋出訊息等。

          FaceID:玩家頭像索引號碼

          ClubID:外來鍵(ClubList的主鍵),玩家社團 ID 號碼

          MemberOrder:會員等級標識

          Experience:玩家經驗數值,表示玩家遊戲的總局數,可以通過修改每個遊戲的經驗數值增加方案得到策略的改變

          AllLogonTimes:玩家成功登陸的總次數

          RegisterDate:玩家的註冊日期

          LastLogonDate:玩家最後登陸的日期

          RegisterIP:玩家帳戶的註冊所在的 IP 地址

          LastLogonIP:玩家最後使用此帳戶登陸的 IP 地址

          Question:密碼找回提示問題

          Answer:密碼找回回答問題

          QQ:玩家註冊QQ號碼

          ConnectPerson:聯絡人姓名

          PhoneNO:電話號碼

          Address:家庭住址

          Email:電子郵箱

      2. ClubList是用來儲存社團列表的,主要欄位包括:

          ClubID:社團的唯一標識號碼,註冊的時候自動生成,不能修改

          ClubName:社團名字

          ClubQQ:與社團對應的QQ群號碼

          ClubAdmin:社團管理員(外來鍵)

          ClubNotice:社團公告,預留欄位

3 GameDB

      這個DB主要儲存玩家的遊戲相關資訊,例如遊戲積分,勝局,和局,逃局,登陸時間等資訊。

      1. GameScore

          UserID:玩家標識號碼

          Score:玩家的積分數值

          WinCount:遊戲勝利局數

          LostCount:遊戲輸局局數

          DrawCount: 遊戲和局局數

          FleeCount: 遊戲逃跑局數

          UserRight:玩家在此遊戲中的普通許可權數值,在登陸房間的時候與玩家房間許可權進行或操作

          ManageRight:玩家在此遊戲中的管理許可權數值,在登陸房間的時候與玩家房間許可權進行或操作

          PlayTimeCount:玩家在此類遊戲中的遊戲時間

          AllLogonTimes:玩家進入此類遊戲的總次數

          RegisterDate:玩家首次進入此類遊戲的時間

          LastLogonDate:玩家最後一次進入此類遊戲的時間

          RegisterIP:玩家首次進入此類遊戲的 IP 地址

          LastLogonIP:玩家最後一次進入此類遊戲的IP 地址

       2. GameLogonLog:

          ID:Log的索引ID,自增長。

          UserID:外來鍵,玩家 ID 號碼

          Score:玩家進入房間時刻的積分數值

          WinCount:玩家進入房間時刻的遊戲勝利局數

          LostCount:玩家進入房間時刻的遊戲輸局局數

          DrawCount:玩家進入房間時刻的遊戲和局局數

          FleeCount:玩家進入房間時刻的遊戲逃跑局數

          KindID:玩家進入的房間的型別標識號碼 

          ServerID:玩家進入房間的房間標識號碼

          ClientIP:玩家進入房間的連線IP地址

          LogonTime:玩家進入房間的時間

       3. GameScorelog:

          ID:LogID,自增長

          UserID:外來鍵,玩家 ID 號碼

          LeftTime:玩家離開房間的時間

          Score:玩家在遊戲房間遊戲所產生的積分改變的數值

          WinCount:玩家在遊戲房間遊戲所產生的勝利局數改變的數值

          LostCount:玩家在遊戲房間遊戲所產生的輸局局數改變的數值

          DrawCount:玩家在遊戲房間遊戲所產生的和局局數改變的數值

          FleeCount:玩家在遊戲房間遊戲所產生的逃跑局數改變的數值

          Experience:玩家在遊戲房間遊戲所產生的經驗數值改變的數值

          PlayTimeCount:玩家在遊戲房間遊戲所產生的遊戲時間的數值

          OnLineTimeCount:玩家在遊戲房間遊戲所產生的線上時間的數值

          KindID:玩家進入的房間的型別標識號碼

          ServerID:玩家進入房間的房間標識號碼

          ClientIP:玩家進入房間的連線IP地址