如何在数据库中存储数组

时间:2014-12-15 21:06:50

标签: php mysql arrays

我必须将数组存储在db的一个字段中。我知道如何在技术上做到这一点。我的问题是,哪个版本有意义。

首先简短介绍: 我在表格中有类别,需要为所有语言的每个类别翻译。首先,我有两种语言(后来我会有更多)。好吧,让我们说我的类别是汽车,结构是这样的:

id    name    translation

我的第一个想法是:

id    name    translation
1     car     array('eng' => 'car', 'deu' => 'Auto')

第二个想法是:

id    name    translation
1     car     'eng' => 'car', 'deu' => 'Auto'

第三个想法是:

id    name    translation
1     car     'eng'='car','deu'='Auto'

最后,脚本读取转换单元并加载到数组中并返回给定键的值' eng'或者' deu'或者它后来的任何东西。

我使用PHP / MySQL

感谢您的利弊。

伊沃

4 个答案:

答案 0 :(得分:2)

尝试调整数据库结构。这可能是理想的:

id    name    language    word
1     car     eng         car
2     car     deu         Auto

Primary Key (`name`,`language`)
Unique Key (`id`) (auto_increment)

通过这种方式,您可以拥有任意数量(或更少)的语言。

答案 1 :(得分:2)

你需要完全不同。添加另一个表category_translation

你有category

id    name

language

id    name

category_translation

id    lang_id    category_id    translation

这样你就会把事情分开。

答案 2 :(得分:0)

你应该有一个翻译表,其中的语言是其中一列。 id,名称,语言,价值 1,汽车,工程,汽车 2,车,德,汽车 ...

如果您只有一组值,则可以保留此表中的所有内容。如果要查找来自不同源的多个值,可以向该表添加查找键,或者使用该名称作为查找值(尽管对文本的索引不如在整数ID上建立索引)

答案 3 :(得分:0)

请不要在一列中的数据库中存储数组。如果你必须这样做,至少要序列化

serialize($array)