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值(一个线视图,两行,长描述等),如果这是感兴趣的话.
建议不要使用选项1和3,因为您最终会在字段名称中使用该语言(即数据).如果要添加其他语言,则必须更改数据库设计.
建议不要使用选项5,因为您最终会在表名中使用字符串标识符(即数据).如果要添加其他字符串,则必须更改数据库设计.
选项2或4可以正常工作.选项4更规范化,因为您没有重复的字符串名称,但如果直接在表视图中输入值,则选项2可能更容易使用.
在表中有很多行不是问题,这就是为数据库系统构建的内容.
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |