我认为这应该是一个简单的问题,但还没有找到任何明确的答案,最好的做法是什么。
在应用程序中,我们保持订单的当前状态(打开、取消、发货、关闭......)。如果不更改代码,此变量无法更改,但应用程序应满足以下条件:
- 状态名称应该很容易以不同的语言显示,
- 应用程序可以通过自由文本状态名称搜索(如谷歌搜索“打开”)
- status_id 应该通过枚举提供给开发人员
- 添加新状态时零头痛
到目前为止,我们已经解决了这个问题的可能方法:
- 具有带有 PK(id, language_id) 的 DB 表状态和一个表示应用程序中此状态的单独枚举。 优点: 1.,2.,3。开箱即用,缺点: 4. 需要在每个客户端安装上运行更新脚本,当处理大量代码表时,SQL 选择会变得大而繁琐
- 只有枚举: 优点: 3.,4。缺点: 1.,2。是一场噩梦
- 具有枚举,在每次启动应用程序时填充数据库表: 优点: 1.,2.,3.,4。工作缺点:在处理大量代码表时,应用程序启动时会产生一些开销,SQL 选择会变得庞大而繁琐。
解决此问题的最常见方法是什么?