簡體   English   中英

數據庫最佳實踐 - 狀態

[英]Database best practices - Status

我正在創建一個對象具有狀態查找的應用程序。 為了給出一些上下文,讓我們使用以下示例。


一個幫助台應用程序,其中創建作業並在以下工作流程中移動:

- 創建但未分配的作業
進行中 - 分配給工人和正在進行的工作
完成 - 工作完成准備開發票
關閉 - 工作發票


因此,我創建了一個包含以下詳細信息的狀態表:

int ID
字符串名稱

和作業表上的查閱列

int ID
字符串名稱
int CustomerID
int StatusID - >查找狀態

所以在現實世界中,假設我們有以下要求。

  1. 用戶需要獲取報告以顯示所有未完成的作業(作業是New或InProgress)
  2. 在線下,有人會想要添加一個位於完成和關閉中間的新狀態,例如。

因此,考慮到這一點,我最初的想法是在狀態表上創建一個名為SortOrder或類似的新列,並為其分配數字,如

- 10
進展中 - 20
完成 - 30
關閉 - 40

這意味着對於上面的案例#1,我可以簡單地在數據庫中查詢狀態大於或等於30的所有作業。這對於案例#2也是很好的,因為這意味着如果我在其間引入新狀態完成並關閉它不會打破這份報告。

我可以看到它會經常出現在不同的應用程序中。 有沒有人實現這樣的解決方案或之前遇到過這個問題?

我們所做的是擁有一個狀態表和一個配套狀態組表。

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)
)

然后所有狀態都存在於一個單獨的位置,但是它們組合在一起而不是具有多個單獨的狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM