我正在创建一个对象具有状态查找的应用程序。为了给出一些上下文,让我们使用以下示例。
创建作业并在以下工作流程中移动的帮助台应用程序:
新 - 创建但未分配的作业
正在进行中 - 分配给工人和正在进行的工作
完成 - 工作已完成,可以开具发票
已关闭 - 作业已开票
因此,我创建了一个包含以下详细信息的状态表:
int ID
字符串名称
和作业表上的查阅列
int ID
字符串名称
int CustomerID
int StatusID - >查找状态
所以在现实世界中,假设我们有以下要求。
因此,考虑到这一点,我最初的想法是在状态表上创建一个名为SortOrder或类似的新列,并为其分配数字,例如
新 - 10
正在进行中 - 20
已完成 - 30
已关闭 - 40
这意味着对于上面的案例#1,我可以简单地在数据库中查询状态大于或等于30的所有作业。这对于案例#2也很有用,因为这意味着如果我引入了新的在完成和关闭之间的状态不会破坏此报告。
我可以看到它会经常出现在不同的应用程序中。有没有人实现这样的解决方案或者之前遇到过这个问题?
答案 0 :(得分:0)
我们所做的是拥有一个状态表和一个配套状态组表。
create table status_group (
id integer primary key not null,
alias varchar(20) not null,
descr varchar(128)
)
create table status (
id integer primary key not null,
status_group_id integer,
alias varchar(20) not null,
descr varchar(128)
)
然后所有的状态都存在于一个位置,但是它们组合在一起而不是具有多个单独的状态。