SQLアンチパターンを読み始めたので、1つ1つ書いてのメモです
目的
- 目的:列を特定の値に限定する
アンチパターン
-
MySQLには、enumがあり、値の定義ができる
-
制約を追加または削除するための構文は無い
-
新たな値セットで列を再定義するしか方法はない
-
値の1つを廃止する場合、過去のデータをどうするか?
-
データベースによって、定義方法が異なる
用いてもいいパターン
- enumの値が変わらない場合
- on/off、左/右
解決策
- 限定する値をデータで指定する
- 参照テーブルを用意する
まとめ
列に入力する値を限定するときは、値セットが固定されている場合はメタデータを、流動的な場合は データを用いましょう。
感想
これは、やったことなかった。というか、そんなことできるの知らなかった...