php - 多语言网站 : one table or multi-tables?

标签 php mysql database-design multilingual

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

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

{
  "TEXT_CODE": {
     "LANG_CODE": "TEXT",
     "LANG_CODE": "TEXT"
   }
}

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

<小时/>

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

解决方案1

单个表 texts_multilingual,其中包含 200 * 5 = 1000 行,可在每次页面请求时进行搜索。

解决方案2

每种语言一个表 texts_entexts_it 等,以便每个研究仅在 200 行中搜索文本代码

<小时/>

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

最佳答案

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

首先,您只有一个表,您可以使用索引和分区来针对查询优化该表。

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

第三,您可以轻松查看表格中的语言以及是否有所有语言的所有文本的翻译。

为了提高性能,您只需要在表上建立一个索引。 。 。 texts_multilingual(语言,textid,文本)。事实上,您可以考虑将其设为主键。就我个人而言,我更喜欢有一个自动递增的主键。但由于该表很少更新,以一种特定的方式使用,并且不太可能有外键关系,因此拥有复合主键也是合理的。

关于php - 多语言网站 : one table or multi-tables?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43820304/

相关文章:

grails - Grails的继承以及一对多和多对多关系的冲突

php - Magento 2 - 添加样本数据后的 'Area code not set:'

php - 如何使用 PHP 和 GD 保存图像

php - 如何在php中加密/解密数据?

mysql - laravel - 查询构建器交叉连接子查询

mysql - 为什么我从 Django 查询中得到这个 sql 语法错误?

sql-server - Multi-Tenancy : What benefit does one-db-per-tenant provide?

php - laravel-> 选择更改,提交给 Controller show

mysql - 关于哪种方法更好的 SQL-(mysql) 问题

MySQL表设计: Primary Foreign Multi-Column Key possible?