回答編集履歴

1

補足追記

2019/03/02 02:32

投稿

wwbQzhMkhhgEmhU
wwbQzhMkhhgEmhU

スコア343

test CHANGED
@@ -5,3 +5,15 @@
5
5
 
6
6
 
7
7
  なぜそこまで気にするかというと、ココが変わると、設計も実装も大幅に変わり、工数がとんでもなく増えるからです。識別子は多くの場合、どこまでも伝搬されるものなので。文字列は大量に何かを処理する場合、インデックスなどが作られる=ハッシュ値になるはずなので、数字か文字列かでそこまでナイーブになる必要はないと思います。
8
+
9
+
10
+
11
+ ---
12
+
13
+ 【追記-1】
14
+
15
+ 上の文章で、数値と数字を混在させていますが、大した意味はありません。個人的には1対1に紐づく前提であれば、どちらでもいいと思っています。MySQLで言えば、intとnumberでは意味が違いますし、intにすればそれなりに小さくなるし速いと予想が出来るからで、識別子としての数字だから文字列にしないといけないか?と言われると必ずしもそうではないからです。ようは算術演算をするから数値という意味付けに実用的な違いがあまりないから、と言えます。
16
+
17
+
18
+
19
+ ただし文字列と数値で1対1に紐付かないケースだけはNGです。例えば'00001'と'1'が文字列として両方出現する可能性があり、両者を一意に識別しないといけない場合は、数値だと1にしかしようがないので、それはダメってことです。