2010-07-05 77 views
1

我試圖弄清楚如何建模一個玩家可能擁有多個類的規範化數據庫。玩家和類對象之間的關係是什麼?玩家與遊戲中的類數據庫關係

每個玩家將能夠有多個班級,每個班級也會授予玩家多種技能。我熟悉規範化的數據庫並與他們一起工作,但從頭開始並沒有設置很多,尤其是對我自己而言。

我與如果任何人有一個方便的EER圖/截屏MySQL的社區工具集工作,他們能告訴我還有:)

回答

3

這通常與一個鏈接表被處理的許多一對多關係:

PlayerClass: 
PlayerID 
ClassID 

通常使用PlayerID,ClassID是主鍵,PlayerID和ClassID是對您的Class和Player表的外鍵引用。

通常,在許多設計中(雖然可能不在您的設計中),它也會以其他方式(ClassID,PlayerID)編入索引。

你的技能表將類似地連接到一個類:

ClassSkills: 
ClassID 
SkillID 

現在,這裏的地方變得棘手 - 如果一個球員在兩個班,每個賦予相同的技能發生了什麼?它們是添加劑還是合併,或者是什麼?這是一個問題領域問題,在將這些表格全部加入一起並查看玩家的技能之前,必須解決這個問題。

1

這種關係會是多對多的。通常通過中間表格建模:

table Player:  Id int, name varchar(50) 
table PlayerClass: PlayerId int, ClassId int 
table Class:  Id int, name varchar(50) 

PlayerClass表在其列上應具有外鍵約束。

請注意,遊戲數據庫被認爲太慢。大多數遊戲使用自定義存儲機制。

+0

感謝提示,我使用數據庫的原因是因爲我教自己一些Flash/Actionscript和使用Web服務,所以我可以將它(遊戲)掛鉤到Kongregate或ArmorGames等各種門戶框架。 – Organiccat 2010-07-05 20:36:42