mysql - 是否可以向 mysql 中的字段添加额外的列?

标签 mysql database-design database-schema

我们希望通过向每个“列”添加额外的列来扩展 MySQL。现在您拥有以下内容。

Field, Type, Null, Key, Default, Extra

我们希望能够向“列”定义添加一个额外的列,例如属性。我们的系统有一定的设计规范,我们需要为每个“列”描述更多的数据。我们如何在 MySQL 中实现这一点?

返回所有列的查询如下。

SHOW COLUMNS FROM MyDB.MyTable;

编辑 1

我应该一开始就添加这个,对于没有这样做我深表歉意。我们目前正在注释部分中为每种列类型描述属性,我们知道这是一个非常肮脏的解决方案,但这是我们当时唯一能想到的解决方案。我们构建了一个围绕数据库结构的代码生成器,这也是该计划的真正成果。我们想要描述列的代码属性,以便代码生成器可以获取更改并在每次更改或运行时刷新代码库。

最佳答案

首先,术语:“字段”和“列”在此上下文中基本上是同义词。字段和列之间没有区别。一些 MySQL 命令甚至允许您互换使用这两个词(例如 SHOW FIELDS FROM MyDB.MyTable)。

We want to assign attributes to each column in a table. Adding "field_foo" for "field" would repeat the same data over and over again for each row.

简单答案: 如果您想要更多属于给定列 foo 的属性,那么您应该创建另一个表,其中 foo 是它的主键,因此每个不同的值都只获得一行。这是database normalization过程的一部分。这允许您使用属性来描述 foo 的给定值,而无需重复数据,即使您在原始表中多次使用该值也是如此。


听起来您可能还需要允许可扩展性,并且您希望在将来的某个时间允许新列,但您现在不知道哪些列或有多少列。这是一个非常常见的项目需求。

您可能对我的演示感兴趣Extensible Data Modeling ,其中我概述了针对此类问题的 SQL 不同解决方案。

  • 额外列
  • 实体属性值
  • 类表继承
  • 序列化 LOB
  • 倒排索引
  • 在线架构更改
  • 非关系数据库

这些解决方案都不是万无一失的,每个都有其优点和缺点。因此,值得了解所有这些,然后确定哪些具有对您的特定项目很重要的优点,而它们的缺点不会给您带来太多不便(这是许多软件设计选择的决策过程)。


We are currently describing attributes in the Comments section for each column type

因此,您正在使用类似“序列化 LOB”解决方案的解决方案。

关于mysql - 是否可以向 mysql 中的字段添加额外的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19844356/

相关文章:

database - 这是一个好的 table 设计吗?

javascript - 需要技术推荐: Web-based Database Manager

php - Slim 3 - getParsedBody() 不正确的整数值 : 'NULL'

php - 具有相似列信息的 MySQL 表 - 帮助!

php - 根据日期显示来自数据库的信息mysql

database - 是否所有关系数据库设计都需要用于多对多关系的联结表或关联表?

database-design - 审计日志的数据库设计

mysql - 连接到主机提供之外的其他 MYSQL 数据库

algorithm - 在哪些现实场景中语义数据库比关系数据库更好?

database - 如何在没有空列/单元格的情况下实现 Twitter 推文、回复和转发数据库架构