Php 多语言网站:一张桌子还是多张桌子?

Php 多语言网站:一张桌子还是多张桌子?,php,mysql,database-design,multilingual,Php,Mysql,Database Design,Multilingual,我正在用PHP建立一个多语言网站 起初,我考虑使用JSON文件,其结构如下 { "TEXT_CODE": { "LANG_CODE": "TEXT", "LANG_CODE": "TEXT" } } 但是,由于文本可能很多,我选择了一个更易于处理和可读的数据库解决方案 假设我们有200个文本和5种语言,在数据库设计和性能方面,哪一种是最好的选择 解决方案1 单表文本为200*5=1000行的多语言文本,可在每个页面请求中进行搜索 解决方案2 每种语言一个表格,文本

我正在用PHP建立一个多语言网站

起初,我考虑使用JSON文件,其结构如下

{
  "TEXT_CODE": {
     "LANG_CODE": "TEXT",
     "LANG_CODE": "TEXT"
   }
}
但是,由于文本可能很多,我选择了一个更易于处理和可读的数据库解决方案

假设我们有200个文本和5种语言,在数据库设计和性能方面,哪一种是最好的选择

解决方案1 单表文本为200*5=1000行的多语言文本,可在每个页面请求中进行搜索

解决方案2 每种语言一个表格,文本,文本等等,这样每项研究只能在200行中搜索文本代码


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

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

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

第二,您可以很容易地添加一种新语言。没有要添加的新表

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


为了提高性能,您只需要在表上创建一个索引。文本\多语言,文本ID,文本。事实上,你可以考虑把它变成主键。就个人而言,我更喜欢使用自动递增的主键。但是,由于此表很少更新、以特定方式使用,并且不太可能具有外键关系,因此使用复合主键也是合理的。

您不会注意到200行与1000行之间的任何性能差异。只需确保正确索引数据和集合即可。@MagnusEriksson当然,我的只是一个例子。我问过,因为这个项目可以扩展很多,我希望从一开始就有一个合适的结构,当然,但在你注意到任何差异之前,我们讨论了大量的数据,然后,无论如何,您可能需要对数据库进行集群。尽管我支持解决方案一,但我想在讨论中加入第三种方式:一个由Text_Id、Text_en、Text_it、Text_de等字段组成的表@MagnusEriksson我明白您的意思,您完全正确您的答案,再加上@Magnus erikson的考虑,让我相信第一个解决方案是最好的方法。另外,您对复合主键的考虑也很好,谢谢Gordon