Schema

為 RPG 角色創建限制設置表的架構是什麼樣的?

  • January 19, 2021

我試圖弄清楚如何為 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

因此,我們將需要三個實體RaceClassRaceDeityClassDeity。主鍵將是每個父實體的主鍵的組合。

Character實體將與這三個實體具有 FK 關係,以確保 、 和 的RaceClass有效Deity

圖表形式: 在此處輸入圖像描述

幾點注意事項:

對於具有有限數量值的表(通常具有常見/易於理解的縮寫),使用短字元值作為主鍵而不是自動遞增整數是有意義的。這為我們提供了一些優勢:

  1. 更容易程式,更簡單的查詢,無需重新連接到具有易於理解的值的引用表。(1, 'Jim the Somewhat Strong','HUM','WAR','GODA')(1, 'Jim the Somewhat Strong', 2, 3, 1).
  2. 由於關鍵值沒有重疊,因此出錯的可能性較小,例如1可能意味著 Thief 或 Elf 或 GodB,對於人類可讀的程式碼,換位是不可能/非常不可能的。

引用自:https://dba.stackexchange.com/questions/283459