我有一个(虚拟)表 struct ,如下所示:

ticket
  id: int(11) PK
  name: varchar(255)
  status: ?????????

问题是,我应该为状态使用什么数据类型?在我看来,以下是我的 Select :

  1. varchar表示状态-不好,因为没有完整性
  2. 表示状态的枚举-不好,因为要更改值,我必须更改表,然后更改任何带有下拉列表的代码,等等
  3. 将FK插入到状态表-好是因为它是动态的,坏是因为它更难目视判断(这可能很有用)
  4. varchar FK连接到状态表-很好,因为它是动态的,并且在判断时可见.不好,因为 keys 是有意义的,这通常是不赞成的.有趣的是,在本例中,状态表完全可能只有一列,这使它成为一个美化的枚举

我对情况了解得准确吗?拥有一把有意义的 keys 真的那么糟糕吗?因为虽然它确实让我起鸡皮疙瘩,但我没有任何理由这样做…

Update:个 对于备选方案4,拟议的 struct 将是status:char(4) FK,与状态表相比.所以,

OPEN => "Open"

CLOS => "Closed"

"PEND" => "Pending Authorization"

"PROG" => "In Progress

这种情况的缺点是什么?在这种情况下,我看到使用int而不是char的唯一好处是性能不高.

推荐答案

使用数字3.如果您想要一些可判断的内容,请创建一个连接在Status值中的视图.

Database相关问答推荐

在GO中减少LevelDB数据库大小的问题(Levigo)

UML 类图中关联的复杂规则

使用 prisma ORM 在我的迁移中手动添加触发器

无法初始化数据库,出现错误无法连接到`host=db user=database=`:拨号错误(dial tcp xxxx: connect: connection refused)

如何在mongodb数据库中设置导入的CSV文件的字段之间的关系

怎么修复ORA-28001: the password has expired

在 SQL Server 中找出调用存储过程

我应该使用哪种数据库模型在运行时动态修改实体/属性?

为什么面向对象的数据库还没有成功?

docker-compose mysql init sql 未执行

保存图像:文件还是 blob?

The method setListAdapter(ArrayAdapter) is undefined for the type create

FOR UPDATE和JOIN的 SQL 语义

在 PostgreSQL 中使用 pg_notify(text, text) 监听/通知

Joomla 数据库设置

在 Rails 中销毁/删除数据库

Select * 和 Select [列出每个列] 之间有区别吗

您最喜欢在 django 中管理数据库迁移的解决方案是什么?

Redis Pub/Sub 和 Redis Stream 之间的主要区别是什么?

存储信用卡号 - PCI?