如果我必须保存许多相关的字符串,并且可能用不同的语言来划分它们:最好的方法是什么?
我认为我有以下选择。选项1和3是我最清楚的解决方案。它们具有更多列,但导致更少的行。
选项2和4是最灵活的(我可以在不更改数据库的情况下动态添加新的string_x)。它们只有三列,但它们将导致许多行。
选项5将产生许多表。
选项1:
id | string_1 | string_2 | string_3 | string_4 | ... | string_n | lang
选项2 *(其中名称为string_1或string_2等)*
id | name | lang
选项3
id | string_1 | string_2 | string_3 | string_4 | ... | string_n
id | lang | stringid
选项4
id | lang | stringid
id | name
选项5
id | string_1 | lang
id | string_2 | lang
id | ... |lang
我正在使用它存储用于多个视图(一个线视图,两行,长说明等)的预缓存html值(如果有兴趣的话)。
最佳答案
不建议使用选项1和3,因为您最终会在字段名称中使用语言(即数据)。如果要添加其他语言,则必须更改数据库设计。
不建议使用选项5,因为最终在表名中包含字符串标识符(即数据)。如果要添加另一个字符串,则必须更改数据库设计。
选项2或4可以正常工作。选项4更规范化,因为您没有重复的字符串名称,但是如果直接在表视图中输入值,则选项2可能更易于使用。
在一个表中有很多行不是问题,这就是建立数据库系统的目的。