棋牌遊戲伺服器架構: 詳細設計(三) 資料庫設計
主要有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地址