在我工作的地方,我们使用postgres数据库(8.3即将迁移到8.4).关于在数据库中使用枚举,目前存在一个小的争论.我个人不喜欢db enum类型.除此之外,它将应用程序逻辑放在数据库中,并为代码和数据之间的不匹配创造了可能性.

我想知道postgres Enum的优点(除了可读性)和缺点是什么?

推荐答案

枚举的优势是:

  • 性能更好.您可以只显示从核心表中获得的内容,而不是使用单独的查找表将代码转换为值,或者使用应用程序逻辑将代码转换为值.这在数据仓库应用程序中特别有用.
  • 特别的SQL更容易编写

缺点是:

  • 将显示值编码到数据库DDL中的格式不正确.如果您在应用程序代码中将枚举值转换为不同的显示值,那么您将失go 使用枚举的许多优势.
  • 添加值需要更改DDL
  • 使语言本地化变得困难
  • 数据库可移植性降低

Database相关问答推荐

动态数据模型

发布 Oracle 和 SQL Server 性能测试是否违反许可?

仅对表中的一列授予更改

使用python为组中的每个元素添加一个序列号

在 model.save() 中处理竞争条件

mysql搜索表名的段

微服务:每个实例或每个微服务的数据源?

SQL Server 2008如何同步不同服务器中的数据库?

如何允许多个用户同时连接到我的 H2 数据库?

不同的数据库是否使用不同的名称引用?

prices价格字段是浮动还是小数好点?

本地数据库,我需要一些例子

每个 Docker 容器一个或多个数据库

主键和主属性有什么区别?

如何在远程服务器上备份 MySQL 数据库?

如何在我的 SQL Server 代理作业(job)中创建一个将运行我的 SSIS 包的步骤?

如果表不存在,如何使用 Derby Db 创建表

如何在 SQLServer 数据库的两个实例之间复制数据记录

使用命令行在 Mysql 中导入压缩文件

为什么 Rails 迁移在应用程序中定义外键而不在数据库中定义外键?