sql - 处理查找表和相关业务逻辑时摆脱硬编码值

标签 sql sql-server database-design business-logic

示例案例:

我们正在使用 SQL Server 构建租赁服务。有关可租用元素的信息存储在表中。每个项目都有一个状态,可以是“可用”、“已租”或“损坏”。不同的状态驻留在查找表中。

项目状态表:

ID名称
1“可用”
2“租用”
3“ splinter ”

除此之外,我们还有一条业务规则,规定每当退回某个项目时,其状态就会从“已租”更改为“可用”。
这可以通过诸如“update Items set state=1 where id=@itemid”之类的更新语句来完成。在应用程序代码中,我们可能有一个映射到 ItemState id:s 的枚举。但是,它们包含硬编码值,可能会导致以后出现维护问题。假设开发人员要更改状态集但忘记修复相关的业务逻辑层......

有哪些好的方法或替代设计来处理此类设计问题?
除了直接答案之外,还欢迎相关文章的链接。

最佳答案

根据我的经验,在这种情况下,您实际上必须进行硬编码,最好使用整数值与查找表的 ID 相匹配的枚举。我认为“1”总是“可用”等等并没有什么错。

关于sql - 处理查找表和相关业务逻辑时摆脱硬编码值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1650309/

相关文章:

sql - 按状态获取每个位置的数量

mysql - 用常量值更新表

python - SQLAlchemy:合并重复标签的有效方法

c# - SQL UPDATE 不起作用并且没有抛出错误

sql-server - 在 SQL 中检查日期范围

entity-framework - Entity Framework 端点多重性

mysql - 如何使用 PHP 和 SQL 管理 guest 用户

sql - mysql查询: combine two queries

MYSQL:View 语句产生不正确的 SUM 总数

c# - SQL Server : ADO.Net GetUpdateCommand ok with PK,在添加另一个聚集唯一索引后失败