如何向关系数据库表中添加额外的列?

时间:2021-01-23 15:19:09

标签: postgresql database-design

我有一个表 ABC,其中包含一些核心列。我想根据用户有一些额外的列。例如。 user1 可能有 b、c、d 列,而 user2 可能有 c、d、f 列。 >

我应该在同一个表 (ABC) 中添加列,还是应该另一个表只用于额外的列,其中每个 行代表一列 具有以下结构:

| ABCId | 列名 | 列值 |

1 个答案:

答案 0 :(得分:0)

任何一种方法都是可行的。

将列放在一张表中的优点基本上是简单。很容易访问列。如果记录不使用列,则值为 NULL

缺点可能是性能。固定宽度的数据类型(例如整数)通常会占用数据页上的空间,即使在 NULL 时也是如此(尽管这取决于数据库)。因此,未使用的值仍然会使记录更大。 (这对于字符串可能是也可能不是。)更宽的记录需要更多空间,这会降低某些操作的数据库性能。这在列式数据库中不会成为问题。

另一种方法是使用单独的表格。因为是一对一的关系,所以两个表应该有相同的主键。这也是可行的——并且在两种情况下可能是性能上的胜利:

  • 当大多数行在列中没有值时。
  • 当许多查询不需要额外的列时。

但这两种方法都是合理的。根据其他因素,其中一个可能更合理。

相关问题