質問: お世話になります。 sqlアンチパターンの1つであるジェイウォークですが、 チェックボックスの値の格納なんかに私は結構使います。 検索条件に含まれない(mysqlなら専用の関数があります,インデックスは付けられないですが)、他テーブルと紐付いていない、対象フィールドの仕様変更の可能性が低い、という条件下で採用します。 あえて使うのは単純にテーブル構成を把握し易い、カンマ区切りで格納するとプログラム側で配列で扱いやすいなどです。特に別フィールドにしないのは配列で扱いやすくするためです。 mysqlには独自のデータ型でset型というジェイウォーク専用データ型まであります! ジェイウォークを採用している方いますでしょうか。 逆にジェイウォークはやっぱり駄目だという方は理由を教えていただきたいです。 抽象的な質問ですが よろしくお願いいたします
回答: 個人的意見になりますが、基本的には使いません。 **使う条件** ・システムの規模が小さい ・検索条件に含まれない(今後も絶対含まれない) ・他のテーブルの情報に絶対紐づかない(絶対!!) ・障害発生時に、調査対象になりえない、または、データ構成上1レコードに特定される調査になる ・そのカラムに値が設定されていなくても、プログラムが動く(デフォルト値など) ・業務プログラムなどのシステムの根幹には、関係ない(個人ごとに背景色変えたいとか) ・特定の機能のみ(画面だったら1画面限定とか、複数画面で使用しない) ・その項目の保存順が、処理に影響ないこと ・数値である、または、固定の文字列であること **使わない理由** ・検索できない、または、しずらい ・値に何が設定されているかわからない(多次元配列だったら最悪) ・DB定義で回避できる(把握し安さより、その後の改修に与える影響がでかい) ・配列として扱いたいなら、group by等を使えば、SQL上で解決可能 ・その後の基盤更改時などに影響がでかい(データの移行等がやりずらい) 個人的意見なので、ご指摘等あればよろしくお願いします。