在資料庫設計中,狀態欄位(如status)用0代表成功還是失敗,有所謂嗎?

freelance發表於2019-02-21

場景


資料庫表中出場率非常高的一類欄位就是狀態(如status、state等),現在我正在設計一個資料庫表,狀態欄位有“正常”和“登出”兩種狀態值。通常會出現以下兩種使用方式:

0:正常,1:登出

0:登出,1:正常

有些人用第一種,有些人用第二種,有區別嗎?

  • 使用第一種方式的蜀黍,我不知道你們怎麼想的。
  • 我猜(瞎猜的不一定對)使用第二種方式的小哥哥,想到了boolean型別0表示假、1表示真,所以0代表登出、1代表正常,邏輯非常嚴謹一致。

劇情發展


就在這千鈞一髮的時刻,系統迭代過程中增加了幾個狀態,比如:鎖定、過期、拉黑,再比較一下兩種方式:

0:正常,1:登出,2:鎖定,3:過期,4:拉黑

0:登出,1:正常,2:鎖定,3:過期,4:拉黑

這時候,是不是看到一點區別了,有沒有發現第一種方式更優雅? 為什麼呢?

因為「幸福的家庭都是相似的,不幸的家庭各有各的不幸」?

正常狀態只有一種用0表示,1、2、3等分別代表不同的異常情況。好像有點道理啊,更何況還有意外收穫,可以用 status > 0 檢索所有異常狀態。

胡言亂語


再提醒一下上邊邏輯嚴謹一致的那位小哥哥,此處欄位名是status而且是數值型別,與boolean型別沒有任何瓜葛。如果你的欄位名是是is_deleted,我認為你用0代表非、1代表是,那才真是邏輯嚴謹。

以上就是我的一些胡言亂語,如果你們覺得有點道理,希望幫到你們,如果有說錯的地方希望和大家撕逼,哈哈,謝謝!

相關文章