Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 处理语言识别_Php_Mysql_Sqlite_Database Design - Fatal编程技术网

Php 处理语言识别

Php 处理语言识别,php,mysql,sqlite,database-design,Php,Mysql,Sqlite,Database Design,在多语言网站中,我应该使用数字或关键字引用语言吗 例如,假设一个英国人从服务列表中选择一项服务,那么服务列表将使用英语,而如果一个西班牙人从服务列表中选择,那么列表将使用西班牙语 服务列表是从数据库中的一个表中选择的,每个服务都有一个唯一的编号来标识它,以及标识服务是用什么语言编写的。 我想问的是,哪一个更好。使用数字来标识语言,还是使用语言代码 例如: 假设服务表: id | service_id | service | lang -------------------------------

在多语言网站中,我应该使用数字或关键字引用语言吗

例如,假设一个英国人从服务列表中选择一项服务,那么服务列表将使用英语,而如果一个西班牙人从服务列表中选择,那么列表将使用西班牙语

服务列表是从数据库中的一个表中选择的,每个服务都有一个唯一的编号来标识它,以及标识服务是用什么语言编写的。 我想问的是,哪一个更好。使用数字来标识语言,还是使用语言代码

例如:

假设服务表:

id | service_id | service | lang
------------------------------------
0  | cooking    | 1       | en
1  | driving    | 2       | en
2  | singing    | 3       | en
3  | running    | 4       | en
4  | cocinar    | 1       | es
5  | conducir   | 2       | es
6  | cantar     | 3       | es
7  | correr     | 4       | es
VS

我给每种语言一个数字标识

我可以看到,语言代码方法使数据库更具可读性,但如果服务器能够处理所有数据,这又有什么关系呢?数字对服务器来说更容易,但我必须为每种语言都提供一个数字


那么,您认为哪种方法更好,为什么呢?

有一个问题。我只想使用例子1中的例子。您应该有一个二级表,其中列出了长拼写版本的短2/3位代码。

有一个。我只想使用例子1中的例子。您可能应该有一个二级表,其中列出了长拼写版本的短2/3位代码。

我几乎总是将这些内容规范化,但由于以下原因,这可能是一个罕见的例外:

  • nchar(2)列只占用4个字节,这与int列相同。因此,性能不应该受到影响,特别是如果您将coaliation设置为ordinal

  • 两个字符的语言代码符合国际标准,这些标准极不可能改变。因此,大规模更新不应成为问题


  • 因此,规范化的参数在这种情况下并不真正适用。

    我几乎总是将这些东西规范化,但由于以下原因,这可能是一个罕见的例外:

  • nchar(2)列只占用4个字节,这与int列相同。因此,性能不应该受到影响,特别是如果您将coaliation设置为ordinal

  • 两个字符的语言代码符合国际标准,这些标准极不可能改变。因此,大规模更新不应成为问题


  • 因此,规范化的参数在这种情况下并不适用。

    +1在数据库中创建iso_语言表是一个非常好的主意。在第一个示例中使用两个字母的代码连接到它是很好的。在数据库中使用+1 iso_语言表是一个非常好的主意。在第一个例子中使用两个字母的代码连接到它是很好的。感谢Coalition技巧,我永远不会想到它。因此,对于语言来说,代码毕竟更好。+1我同意杰弗里的建议——使用标准代码。然而,规范化注释没有任何意义。是否使用数字或语言代码与标准化无关。@杰夫瑞,我是否应该考虑使用5字节代码来代替,比如“EnEnUS”?@ DPATAS——是的,在我写了这个之后,我意识到“标准化”不是正确的术语。相反,我想的是,我通常会使用人工钥匙而不是自然钥匙,这是一种罕见的情况,自然钥匙是合适的。(我知道有些人主张自然键在很多地方,但在大多数情况下,这不是我对这件事的感受。)我同意这样的措辞,因为如果使用人工键,那么效果将与正常化相同。也就是说,许多“en”的实例将被一个数字键引用的单个实例所取代。多亏了Coalition技巧,我永远不会想到它。因此,对于语言来说,代码毕竟更好。+1我同意杰弗里的建议——使用标准代码。然而,规范化注释没有任何意义。是否使用数字或语言代码与标准化无关。@杰夫瑞,我是否应该考虑使用5字节代码来代替,比如“EnEnUS”?@ DPATAS——是的,在我写了这个之后,我意识到“标准化”不是正确的术语。相反,我想的是,我通常会使用人工钥匙而不是自然钥匙,这是一种罕见的情况,自然钥匙是合适的。(我知道有些人主张自然键在很多地方,但在大多数情况下,这不是我对这件事的感受。)我同意这样的措辞,因为如果使用人工键,那么效果将与正常化相同。也就是说,“en”的多个实例将被数字键引用的单个实例替换。
    id | service_id | service | lang
    ------------------------------------
    0  | cooking    | 1       | 1
    1  | driving    | 2       | 1
    2  | singing    | 3       | 1
    3  | running    | 4       | 1
    4  | cocinar    | 1       | 2
    5  | conducir   | 2       | 2
    6  | cantar     | 3       | 2
    7  | correr     | 4       | 2