teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

説明を追記

2017/10/19 11:36

投稿

miyahan
miyahan

スコア3095

answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  かといって今回のプログラム側の配列を参照する方法も、記録されたデータが "血液型: 3" と意味を失ってしまう(値から意図する情報が直接得られない)課題があります。
4
4
 
5
- MySQLをはじめ主要なRDBに **ENUM** というフォマットが用意されいます。
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を使うことで義された値のみを取るようにできますし、内部的には数値として記録されるので varchar よりも高速に動作します。
15
+ ENUMは指リストの値のみを持つようにできます。また内部的には数値として記録されるので varchar よりもデータサイズが小さくなり、高速に動作します。個人的には都道府県くらいまでなら ENUM でもいいかなと思っています。
16
+
17
+ それ以上増えたり変動する可能性がある場合は、別途テーブルを作り外部キー制約を使うようにすればよいと思います。