Postgresql
在具有多個語言環境的遊戲架構上設置關係
我設計了以下架構:
其中 BotLocale 包含 en-US、es-AR 等語言環境。GameArtifact 有一個主鍵,即 artifact_id 和帶有語言環境的 GameClass,標識符是主鍵。
考慮到由於許多語言環境,標識符將在每行重複多次,如何正確設置 GameArtifact 的獨占列和 GameClass 的標識符之間的關係?
這是 GameClass 表的樣子:
id | locale | identifier | class ----+--------+-------------+------------------ | en-US | knight | Knight | es-AR | knight | Caballero
我認為這樣做的一種方法是將 GameClass 分成兩個表,一個單獨保存標識符,該標識符將從 GameArtifact 引用,另一個表保存 GameClass 的實際翻譯。
這種方法的問題是查詢時我需要加入一個額外的表。
這是實現這一目標的最佳方法,還是在處理此類案件時有更好的方法?
如果典型的工作負載由一次僅訪問幾行 (OLTP) 的小型事務組成,那麼您的方法是正確的。
額外的連接不會受到傷害,因為它將是一個嵌套循環連接。數據庫針對類似的東西進行了優化。
任何小的性能損失都將被擁有外鍵以保證數據完整性的優勢所抵消。