回答編集履歴
1
説明を追記
answer
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
かといって今回のプログラム側の配列を参照する方法も、記録されたデータが "血液型: 3" と意味を失ってしまう(値から意図する情報が直接得られない)課題があります。
|
4
4
|
|
5
|
-
MySQLをはじめ主要なRDBに
|
5
|
+
MySQLをはじめ主要なRDBに用意されている **[ENUM型](https://dev.mysql.com/doc/refman/5.6/ja/enum.html)** というデータタイプを使ってみてはどうでしょうか?
|
6
6
|
|
7
7
|
```sql
|
8
8
|
CREATE TABLE member (
|
@@ -12,4 +12,6 @@
|
|
12
12
|
)
|
13
13
|
```
|
14
14
|
|
15
|
-
ENUM
|
15
|
+
ENUMは指定したリストの値のみを持つようにできます。また内部的には数値として記録されるので varchar よりもデータサイズが小さくなり、高速に動作します。個人的には都道府県くらいまでなら ENUM でもいいかなと思っています。
|
16
|
+
|
17
|
+
それ以上増えたり変動する可能性がある場合は、別途テーブルを作り外部キー制約を使うようにすればよいと思います。
|