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

棋牌遊戲服務器架構: 詳細設計(三) 數據庫設計

ice 影響 相關 地址 line person esc 站點 one

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

棋牌遊戲服務器架構: 詳細設計(三) 數據庫設計