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.htmlOriginal post blogged on b2evolution.







blog comments powered by Disqus