裏MySQLクエリー入門(14) 番外編1 複数カテゴリーの正しいデータの持ち方

 裏MySQLクエリー入門(13)で出したサンプルですがデータ構造としては最悪です。これは実際に遭遇したデータ構造なのですが、これは、プログラマーがメインの人が良くやってしまうデータ構造ですね。カテゴリーIDを文字列として、カンマ区切りで格納...。気持ちは分からなくないですが、FIND_IN_SETを使ったトリッキーな結合*1を行う必要があったり、かえって大変な事になります。
また、varchar(255)*2がカテゴリーの格納領域となる為、以下のように最大88カテゴリーしか保存できません。 
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88

それでは、これを正しく修正してみましょう。

*1:他のRDBMSだともっと面倒なことになります

*2:最近のMySQLでは65535文字まで拡張されていますが、255バイト消耗している時点で無駄でしょう。

続きを読む