2007年7月28日土曜日

データベース/フィールド/ビット型

mysql> CREATE TABLE t (b BIT(8));
Query OK, 0 rows affected (0.08 sec)

mysql> INSERT INTO t SET b = b'11111111';
Query OK, 1 row affected (0.05 sec)

mysql> INSERT INTO t SET b = b'1010';
Query OK, 1 row affected (0.01 sec)

mysql> select * from t;
+------+
| b |
+------+
|  |
|
|
+------+
2 rows in set (0.00 sec)

表示はさすがに化けます。何かちゃんと出力する方法があるのだろうか?

ビットフィールドを扱えるというのは、非常に便利だ。
例えば、ひとつのフィールドごとに、何かの有無を表現するテーブルを作成する場合

自転車の有無
自動車の有無
家の有無

などそれぞれ1で、整数のフィールドを持つのは無駄である。
それぞれ、ビットフィールドにするのでもよいが、

それこそ3ビットのフィールド1つにすることも可能である。

C言語のプログラムではないのでここまでやる必要もないが。
メモリ使用量は減るが、その分、ロジック側で考える部分もでてくるので
利用する場合は、ある程度の指針をもって使いべきである。

0 件のコメント: