多语言网站:一个 table 还是多个 table?

Multilingual website: one table or multi-tables?

我正在 PHP 中构建一个多语言网站。

起初我考虑使用 JSON 结构类似于

的文件
{
  "TEXT_CODE": {
     "LANG_CODE": "TEXT",
     "LANG_CODE": "TEXT"
   }
}

但是,由于文本可能很多,我选择了一个应该更易用和可读的数据库解决方案。


假设我们有 200 种文本和 5 种语言,就数据库设计和性能而言,哪个是最佳选择?

解决方案 1

单个 table texts_multilingual 具有 200 * 5 = 1000 行以在每个页面请求中搜索。

解决方案 2

每种语言 table texts_entexts_it 等,这样每个研究只会在 200 行中搜索 文本代码 .


我想解决方案 #2 是性能方面的最佳方法,但我想知道更多专家开发人员的意见以及他们将如何处理它。

第一个解决方案是更好的解决方案。为什么?

首先,您只有一个 table,您可以使用索引和分区为您的查询优化 table。

其次,您可以非常轻松地添加新语言。没有新的 table 可以添加。

第三,您可以很容易地看到您在 table 中有哪些语言,以及您是否有所有语言的所有文本的翻译。

为了性能,您只需要 table 上的索引。 . . texts_multilingual(language, textid, text)。事实上,您可能会考虑将其设为主键。就个人而言,我更喜欢使用自动递增的主键。但是因为这个table很少更新,使用方式单一,不太可能有外键关系,所以有复合主键也是合理的。