天天看點

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

    主要有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位址