棋牌遊戲服務器架構: 詳細設計(三) 數據庫設計
主要有3類Database: ServerInfoDB,UserInfoDB和GameDB。 ServerInfoDB主要存儲的是遊戲列表的信息,UserInfoDB存儲玩家的全局信息,而GameDB就是積分以及積分變化情況。下面分別加以描述。
1. ServerInfoDBServerInfoDB主要存儲遊戲列表信息。主要有以下幾個表: 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地址
|
棋牌遊戲服務器架構: 詳細設計(三) 數據庫設計