數據庫中表中狀態字段status的設計問題

在項目的開發過程中,經常會遇到數據庫表中會有一些狀態字段(如INIT-》processing-》Exception-》SUccess)等,對於status字段在數據表中如何存儲?目前有一下的解決方法:

(1)將狀態字段對應的值映射爲數字如0,1,2等來表示,這個的好處是佔用的存儲空間比較少,但是缺點也是非常明顯的就是如果新增狀態值,對應的數據表ddl中的comment沒有進行相應的修改,拿到對應的狀態值不知道其代表的含義,需要回查代碼。

(2)將狀態字段對應的值使用對應英文含義來表示,這個好處很明顯就是代表的含義顯而易見,但是可能存儲空間確實要大一點,但是可讀性提高很高。

(3)還有有一種是將(1)和(2)結合建立對應的字段表來實現。

目前我所遇到的場景是狀態字段如何表示,代碼的原先設計是通過狀態值(數字表示)能夠進行排序和範圍查找,但是數字表示對於新增狀態值排序(不一定按照數字大小就有問題--》將數字類型改成float/double可以解決)有問題。這種設計是將狀態和排序強關聯(實際上兩個沒有什麼關係),因此新的設計將這兩個含義分開,狀態就是狀態,排序通過業務代碼自己定義排序規則(最後通過mysql 自定義排序規則 order by field(字段,排序規則列表))來實現對應的排序,這樣新增狀態值對應的改變也不會很大了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章