gpt4 book ai didi

mysql - 为什么将数据存储在数据库的不同行上?

转载 作者:行者123 更新时间:2023-11-29 06:47:03 24 4
gpt4 key购买 nike

我注意到有些人将相关数据存储在数据库的不同行上,而有些人将相关数据放在同一行上。

例如

  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 等应用程序都这样做。大概有一个单独的 fields 表可以在其中定义这些字段。

如果您没有明确的需求,请不惜一切代价避免这种模式。这确实是一种只有在别无选择的情况下才应该做的事情,即使这样也可能更有意义:

  • 仅对自定义字段执行此操作,但保持默认字段平坦
  • 也许可以使用 JSON 类型,然后将所有自定义数据转储到其中。它不像键->值表索引很好。

关于mysql - 为什么将数据存储在数据库的不同行上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48895912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com