テーブルの軽量化

電脳備忘録

チェックボックスのデータの格納先がYes/No方式だと、チェックボックスの数だけ列を作らないといけない。これでも問題なさそうだが、チェックボックスが後々増えるたびに作る必要があり、もうそれだけでファイルサイズが大きくなってしまう。ネットで調べてみるとチェックボックスの数に比例して定数を設定し、1つのフィールドに格納。検索などさせるときに2進数で計算すればよいとのこと。おおむねこんな感じかな?

チェックボックス1←チェックあり
チェックボックス2←チェックなし
チェックボックス3←チェックなし
チェックボックス4←チェックあり

チェックあり・・・1
チェックなし・・・0

1 0 0 1

チェックボックス1の定数・・・1
チェックボックス2の定数・・・2
チェックボックス3の定数・・・4
チェックボックス4の定数・・・8

「チェックあり」の定数を和を求めるので上記の場合だと
1+8=9
となり、テーブルの任意のフィールドに「9」を格納する

検索などでどこにチェックをいれたか判定するには「9」を2進数で計算すると

9/2 余り1
4/2 余り0
2/2 余り0
1
となり 1 0 0 1

チェックボックス1と4にチェックを入れたことがわかるということらしい。昔やったような気がするけどすっかり忘れてた・・・。

広告

ブログの維持費に充てるでございます・・・。