Postgresql

在具有多個語言環境的遊戲架構上設置關係

  • September 26, 2019

我設計了以下架構:

在此處輸入圖像描述

其中 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) 的小型事務組成,那麼您的方法是正確的。

額外的連接不會受到傷害,因為它將是一個嵌套循環連接。數據庫針對類似的東西進行了優化。

任何小的性能損失都將被擁有外鍵以保證數據完整性的優勢所抵消。

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