如果我必须保存许多相关的字符串,并且可能用不同的语言来划分它们:最好的方法是什么?

我认为我有以下选择。选项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可能更易于使用。

在一个表中有很多行不是问题,这就是建立数据库系统的目的。

09-19 12:51