Schema
為 RPG 角色創建限制設置表的架構是什麼樣的?
我試圖弄清楚如何為 RPG 數據庫佈局表格,其中角色種族、階級和神靈等資訊對允許的組合有限制。
例如:
Race ----------- id | name 1 | Human 2 | Elf 3 | Dwarf Class ----------- id | name 1 | Warrior 2 | Wizard 3 | Thief Deity ----------- id | name 1 | GodA 2 | GodB 3 | GodC
我想限制某些組合,例如只有人類和精靈可以成為巫師,只有人類和矮人可以成為戰士,但三者都可以成為盜賊。但我也想將神祇限制在某些種族/職業組合中。例如,人類只能崇拜GodA或GodB,而不能崇拜GodC;選擇成為小偷意味著你不能崇拜 GodB,所以你最終只能選擇 GodA,等等。
可以使用哪種模式來映射此資訊,這種類型的關係數據是否有名稱,以及檢索最終映射的查詢是什麼樣的?
這是一個相當標準的建模練習,您所做的只是佈置將為每個角色提供有效選擇的關係(並作為好處填充前端的下拉菜單)。
根據您的描述,我們有以下依賴項:
Race -> Class Race -> Deity Class -> Deity
因此,我們將需要三個實體
RaceClass
、RaceDeity
和ClassDeity
。主鍵將是每個父實體的主鍵的組合。該
Character
實體將與這三個實體具有 FK 關係,以確保 、 和 的Race
值Class
有效Deity
。幾點注意事項:
對於具有有限數量值的表(通常具有常見/易於理解的縮寫),使用短字元值作為主鍵而不是自動遞增整數是有意義的。這為我們提供了一些優勢:
- 更容易程式,更簡單的查詢,無需重新連接到具有易於理解的值的引用表。
(1, 'Jim the Somewhat Strong','HUM','WAR','GODA')
與(1, 'Jim the Somewhat Strong', 2, 3, 1)
.- 由於關鍵值沒有重疊,因此出錯的可能性較小,例如
1
可能意味著 Thief 或 Elf 或 GodB,對於人類可讀的程式碼,換位是不可能/非常不可能的。