場景
資料庫表中出場率非常高的一類欄位就是狀態(如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代表是,那才真是邏輯嚴謹。
以上就是我的一些胡言亂語,如果你們覺得有點道理,希望幫到你們,如果有說錯的地方希望和大家撕逼,哈哈,謝謝!