在sql中拥有行或列是否更高效?

shr*_*ing 0 mysql sql database performance normalization

如果我必须保存许多相关的字符串,并且可以用不同的语言进行分类:最好的方法是什么?

我想我有以下选择.选项1和3对我来说是最明确的解决方案.它们具有更多列,但会导致更少的行.

选项2和4是最灵活的(我可以在不更改数据库的情况下动态添加新的string_x).它们只有三列,但它们会产生很多行.

选项5将产生许多表格.

选项1:

id | string_1 | string_2 | string_3 | string_4 | ... | string_n | lang
Run Code Online (Sandbox Code Playgroud)

选项2*(其中name为string_1或string_2等)*

id | name | lang
Run Code Online (Sandbox Code Playgroud)

选项3

id | string_1 | string_2 | string_3 | string_4 | ... | string_n
id | lang     | stringid
Run Code Online (Sandbox Code Playgroud)

选项4

id | lang | stringid
id | name
Run Code Online (Sandbox Code Playgroud)

选项5

id | string_1 | lang
id | string_2 | lang
id | ...      |lang
Run Code Online (Sandbox Code Playgroud)

我正在使用它来存储多个视图的预先缓存的html值(一个线视图,两行,长描述等),如果这是感兴趣的话.

Guf*_*ffa 5

建议不要使用选项1和3,因为您最终会在字段名称中使用该语言(即数据).如果要添加其他语言,则必须更改数据库设计.

建议不要使用选项5,因为您最终会在表名中使用字符串标识符(即数据).如果要添加其他字符串,则必须更改数据库设计.

选项2或4可以正常工作.选项4更规范化,因为您没有重复的字符串名称,但如果直接在表视图中输入值,则选项2可能更容易使用.

在表中有很多行不是问题,这就是为数据库系统构建的内容.