我有一个表 ABC,其中包含一些核心列。我想根据用户有一些额外的列。例如。 user1 可能有 b、c、d 列,而 user2 可能有 c、d、f 列。 >
我应该在同一个表 (ABC) 中添加列,还是应该另一个表只用于额外的列,其中每个 行代表一列 具有以下结构:
| ABCId | 列名 | 列值 |
答案 0 :(得分:0)
任何一种方法都是可行的。
将列放在一张表中的优点基本上是简单。很容易访问列。如果记录不使用列,则值为 NULL
。
缺点可能是性能。固定宽度的数据类型(例如整数)通常会占用数据页上的空间,即使在 NULL
时也是如此(尽管这取决于数据库)。因此,未使用的值仍然会使记录更大。 (这对于字符串可能是也可能不是。)更宽的记录需要更多空间,这会降低某些操作的数据库性能。这在列式数据库中不会成为问题。
另一种方法是使用单独的表格。因为是一对一的关系,所以两个表应该有相同的主键。这也是可行的——并且在两种情况下可能是性能上的胜利:
但这两种方法都是合理的。根据其他因素,其中一个可能更合理。