含有狀態的表設計

2022-09-14 15:48:23 字數 966 閱讀 6363

訂單表是我們在做開發中,經常會涉及到的乙個資料庫表。這篇博文來寫寫關於其中的狀態字段的一些想法。

今天想講下自己對訂單表狀態字段的值設計的乙個淺薄的思考和理解。

先說下我一年前對這個狀態字段的乙個值設計。

0:建立

-1:買家取消

-2:賣家取消

-3:系統取消

-4:失敗

1:已支付

2:已發貨

3:交易完成

4:已評價

這是乙個很容易就設計出來的值。也是我之前的理解:負面狀態為負數,正面狀態為正數,初始化狀態為0。

一開始用著,感覺還沒什麼問題。但時間久了,需求一變更,就發現這個值設計不對勁了。

假設有個需求,買賣雙方可以對失敗訂單或者取消的訂單進行評價。那狀態值應該是多少?-4?4?

再假設另外乙個需求,訂單可以賣家先發貨,買家再付款。那狀態值怎麼設計?

上面兩個需求,在目前的狀態值設計中,都已經無法滿足需求,要麼加狀態值,要麼加欄位。

那,這個狀態值應該怎麼設計才可以呢?

思考了好久,然而還沒在實踐中使用過,如有不對,歡迎提出討論。

千分位

-4000:交易失敗

-3000:系統取消

-2000:賣家取消

-1000:買家取消

0000:建立,初始化狀態

1000:交易完成

百分位100:已支付

十分位10:已發貨

個分位

不知道上面有沒有把我的想法寫清楚。還是舉例子來說明。

以上,就是根據我的一些淺薄的經驗反思出來的經驗。其實,不止在訂單的狀態值設計上。任何表設計中,涉及到類似狀態字段這種值的設計,都可以做類似的設計。分解狀態的多種類別,然後給每個類別分配乙個位數。如果可以,還可以設計多幾個冗餘位數。

你說,如果每個狀態類別的值超過9種情況怎麼辦?你忘了16進製制這種東西。

遍歷含有標識列的表

declare identitycolumn int 記錄當前要修改的標識列 select identitycolumn min identitycolumn from tablename while identitycolumn is not null 遍歷修改標識列 begin update t...

複製含有隨機節點的鍊錶

輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 由於是深copy,隨機節點指向的物件也應該是新的節點。給出兩種解法 第一種,採用hashm...

Exp 匯出含有blob欄位的表

oracle 工具自帶的匯入匯出僅限於沒有blob欄位的表的匯出,如果某錶含有blob欄位的話,需要cmd進行exp語句的匯出 1 進入cmd 後,輸入sqlplus 2 根據提示,輸入連線的資料庫的使用者名稱和密碼 3 提示連線當前資料庫正確 4 輸入exp 使用者名稱 密碼 服務名 匯出路徑 比...