Mysql 为什么要在数据库中的不同行上存储数据?
我注意到有些人将相关数据存储在数据库的不同行上,而有些人将相关数据放在同一行上 比如说Mysql 为什么要在数据库中的不同行上存储数据?,mysql,Mysql,我注意到有些人将相关数据存储在数据库的不同行上,而有些人将相关数据放在同一行上 比如说 id user_id field_id value 1 1 9 "name 1" 2 1 10 "address 1" 3 1 11 "phone 1" 4 2 9 "name 2" 5 2 10 "address 2" 6
id user_id field_id value
1 1 9 "name 1"
2 1 10 "address 1"
3 1 11 "phone 1"
4 2 9 "name 2"
5 2 10 "address 2"
6 2 11 "phone 2"
对
id user_id name address phone
1 1 name 1 address 1 phone 1
2 2 name 2 address 2 phone 2
这里您可以看到存储用户1和用户2的数据的两种方法。我不知道为什么第一种方法会在第二种方法中使用
我遇到一些使用第一种方法的数据库,如果您想做一件简单的事情,SQL语句会很快变得非常复杂。而第二种方法非常简单和直接
我想知道是否有人知道为什么人们一直使用第一种方法,是否有我看不到的优势
感谢第一个表设计允许最终用户动态添加新字段。某些软件可能允许您向某些内容添加新字段。许多CMS都能做到这一点,还有像Jira这样的应用程序。大概有一个单独的
字段
表,可以在其中定义这些字段
如果您没有明确的需求,请不惜一切代价避免这种模式。这确实是一种你只有在没有其他选择的情况下才应该做的事情,即使这样,可能更有意义的是:
- 仅对自定义字段执行此操作,但保持默认字段为平面
- 可能使用一个
类型,然后将所有自定义数据转储到其中。它不像键->值表索引那么好JSON
字段
表,可以在其中定义这些字段
如果您没有明确的需求,请不惜一切代价避免这种模式。这确实是一种你只有在没有其他选择的情况下才应该做的事情,即使这样,可能更有意义的是:
- 仅对自定义字段执行此操作,但保持默认字段为平面
- 可能使用一个
类型,然后将所有自定义数据转储到其中。它不像键->值表索引那么好JSON