ステータスを文字列で持つ

Author:

データベースのカラムとかにstatusとか持つことありますよね。
これ、けっこう嫌らしくて0とか1とか書かれてもいまいち分かりづらい。
分かっている人じゃないと分からないというか。
新人とかに見せたとして理解できるだろうか。

ソースコード上で#define OK 1とか書くのはありなのですが、結局DBを覗くと2とか5の羅列。
0と1のみならまあいいのだけど。
2ってなんだっけ、とそこから再度ソースのdefineを確認するってのはなんか不毛な気も。

ってことで、個人的には文字列で持っておいたほうがいいと思うのですよね。
試してないけど数個しかないvarcharならindex貼れば速度に問題ない、と思うし。
select status from contentsとか叩いた時、0や1や2が並ぶよりokやngやwaitingが並んだほうが直感的でしょ。

過去にこういうテーブル設計を見たのは一度だけで他は全てintegerだったけど、個人的には全然ありだと思うのですが。
と思ったらOSSでGenderというカラムにMaleとかいう文字列をぶっこんでいるDBを発見。
海外だとGenderは0=男性,1=女性とするのに抵抗感ある国もありそうですしね。

ってことで、テーブル設計はDBだけで分かるように作りましょう。

Facebook にシェア
Pocket