postgresql - 如何向关系数据库表中添加额外的列?
问题描述
我有一个表ABC,它有一些核心列。我想根据用户有一些额外的列。例如, user1可能具有列b、c、d,而user2可能具有列c、d、f。
我应该在同一个表( ABC )中添加列,还是应该为额外的列添加另一个表,其中每行代表具有以下结构的列:
| ABCID | 列名| 列值|
解决方案
任何一种方法都是可行的。
将列放在一个表中的优点基本上是简单。访问列很容易。如果记录不使用列,则值为NULL
.
缺点可能是性能。固定宽度的数据类型(例如整数)通常会占用数据页上的空间,即使是NULL
(尽管这取决于数据库)。因此,未使用的值仍然会使记录变大。(这可能适用于字符串,也可能不适用。)更宽的记录需要更多空间,这会降低某些操作的数据库性能。这在列式数据库中不是问题。
另一种方法是有一个单独的表。因为是一对一的关系,所以两张表应该有相同的主键。这也是可行的——在两种情况下可能是性能上的胜利:
- 当大多数行在列中没有值时。
- 当许多查询不需要额外的列时。
但是这两种方法都是合理的。根据其他因素,其中一个可能更合理。
推荐阅读
- c - 如何在不同平台之间共享 C 代码
- testing - 如何在不进行 API 测试的情况下在 Katalon Studio 中获取(获取)Web 应用程序的 Cookie 值、服务器名称和其他 Header 详细信息
- excel - 时间下降 b/w 2 次
- windows - 打开网络目录时的高流量,包括使用 Windows 资源管理器使用 Delphi XE 制作的可执行文件
- php - Laravel:即使在laravel中与其他人一样,如何做身份号码也不应该是相同的
- java - Java GCP 存储 NullPointerException
- wordpress - 我可以发送带有可选电子邮件字段(Wordpress Contact-Form-7)的电子邮件吗?
- typescript - 如何处理即将填写的必填字段的TS错误?
- python-3.x - 执行 python 代码以创建 s3 存储桶时出现问题
- c# - 从文件中删除文本