gpt4 book ai didi

mysql - 定期向 sql 表中添加列的好方法

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:37 26 4
gpt4 key购买 nike

我正在使用 mysql,我有一个用户表,其中包含一些基本信息,如姓名、姓氏、年龄、性别等。我想提供一个称为个人资料的功能,用户将在其中放置其他信息,如工作地点、备用联系人详细信息等。这些新栏目不是固定的,将来我可以有更多的栏目。据我所知,可以有两种方法:

1) 每次需要时添加新列,这会将 Null 条目放入新添加列的前几行。

2) 添加一个新表,其中将包含所有列 id 到列名,以及另一个表,其中包含键值之类的结构,用于每个具有该特定新列条目的用户,如下所示:

表 1:用户名 |名字 |年龄 | ....

表 2:列号 |列名 |数据类型

表 3:用户名 |列号 |值

哪种方法适合我的场景?

最佳答案

这似乎是一个非常有效的问题,只是没有正确答案。

至少还有两种方法不在您的列表中:

  • 将附加字段存储在每条记录中的 JSON 或 XML 字符串中。
  • 使用相同的主键在辅助表中添加列。

为了确定哪种方法最好,您需要更多地了解您的问题。例如:

  • 有多少个人资料?
  • 添加新列时是否考虑了性能?
  • 新列是否需要索引?
  • 新列的类型是否始终相同?
  • 新列是否需要外键引用?
  • 是否需要或需要其他约束条件?
  • 是否所有配置文件都包含所有列?
  • 配置文件列数是否会超过表格的最大列数?

这个问题没有一个正确答案。 EAV(实体-属性-值数据模型)方法(您的第二种方法)通常会使所有列都是相同类型并排除外键约束(解决这两个问题的方法有些麻烦)。另一方面,如果配置文件列的数量超过了数据库的最大值,那么您可能别无选择,只能使用某种形式的 EAV。

关于mysql - 定期向 sql 表中添加列的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30843398/

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