mysqlの設計をするときに改めてカラムタイプについて考えてみた。
いまさらという感じでもあるが。。。
例えばブログのタイトル。
大体、100文字あれば十分という感じがする。
でもUTF-8の場合、日本語はほぼ一文字あたり3バイト(ときに4バイト)になるため
文字数x3から4を見積もるため、100文字の場合は300から400バイトを割り当てることになる。
でもvarcharの最大データ長は255だから、日本語で100文字のタイトルを設定するとなると
カラムタイプをtextにしないといけなくなる。タイトルなのに。
そんなバカな!
逆に200byteで考えておけば50~60文字のタイトルが格納される。
もちろん半角英数字が入る場合はもっと長くなる。
そうするとinputタグにmaxlength仕掛けても、それってユーザビリティ悪い気もする。
ajaxで文字列のバイト数を計算して、キーを叩くたびに計算して
オーバーしたらエラーっていうのがスマートかも。
参考:
Code:
echo strlen(bin2hex($str))/2 |
http://www.cpa-lab.com/tech/0144
http://zombiebook.seesaa.net/article/33192046.html
Trackback URL (right click and copy shortcut/link location)