以下方法可用于设计 DB 表中的状态相关字段。
方法 01:
- 使用“VARCHAR”作为数据类型。
- 直接状态将存储为 NEW, IN PROGRESS, CLOSED
限制:
- 在表中搜索字符串总是需要更多的时间和资源
- 更改现有状态文本(例如:“已关闭”为“已完成”)需要完整表更新
方法 02:
- 创建状态查找表
- 在依赖表中使用状态表作为外键
限制:
- 维护外键关系
- 需要对应用程序中的所有相关查询使用 JOIN
方法 03:
- 对状态字段使用 short(或)int
- 在应用程序接口 (EJB) 中使用 ENUM 维护状态文本
这将解决以前方法的局限性
限制:
- 需要将整数映射到相关状态(但仍然使用枚举而不是文本是更好的方法)
我觉得第三种方法在 * 更快的 DB 索引方面会更有效 * 由于短(或)int 字段(而不是)varchar 而更快的搜索 * 当然更少的内存指纹
您能否告知第三种方法在灵活性、维护和性能方面是否存在任何缺陷?
提前致谢