こんにちは、alumini_alumi@ノロです。

3日経つのにお腹が痛くて残念な限りです。
 
花粉症で、通常の3%しかパフォーマンスでないと言っていた人よりは
パフォーマンスが出るはずですが、胃痙攣に挫折しそうです。
 
腹痛にさいなまれる前日に、学園長から楽しいご本を借りてます。
 
これだけは守りたいPマークルールブック―
http://www.amazon.co.jp/dp/4532490073
 
そんな前フリは関係なく(まだ20Pしか読んでない)、今日はデータ型について考えてみたいと思います。

 

データ型の話はwikiで検索するのがいいかと思いますが、
データの保持の仕方です。
文字列型「あいうえお」と数値型「123」は違うよって感じです。
明示的に指定することで、「この箱の中には数字しか入りません。
なので[あいうえお]って言われてもわかりません」となります。
 
初めて触った言語がPHPなので、最初は可データ型を指定せずとも楽なんだー程度しか
考えていなかったのですが、
指定しないでも動く=変に空気読む
→数値投げてるのに文字列だと思い込まれる
など、よくある残念な問題にぶち当たって憤りを覚えました。
 
 
先日から触れている某CMSでも、検索条件にid=2 と入れたのに
検索ができなくて??だらけだったという問題にぶち当たりました。
 
DBのデータ型:char
プログラムから投げたデータ型:int
※わざわざ $id = (int)$_POST['hoge']; みたいなこともした
 
になってました。
そこには数値しか入れないぞ!と思ってたので、DBのデータ型がintだと思い込んでました。
 
そう考えると、他の言語では明示的にデータ型を宣言してるのに、
なんで某CMSのDB(MySQL)は色んなところでtext型なんだろうと不思議でなりません。
 
本来、text型を使いたいのであればたくさん文字列を入れたい場合だと思うので
何かのフラグを持たせる程度には型として不適切だと思われます。
 
ただ、型を勝手に変えると何が影響するか不勉強でわからないので
変える勇気が出ませんでしたがDBの定義を考えるときは、どこに何を入れるのか
考えた上で一番使いたいものに相応しい型を選んであげたいと思います。