我必须将数组存储在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
感谢您的利弊。
伊沃
答案 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)