ビットフラグをDBのテーブル設計に用いてみる

DBのテーブル設計を行うときにフラグを持つフィールドは、それぞれtinyint(1)とかでフィールドを作って0 or 1を入れるようにしていました。

CREATE TABLE `sample_old` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
    `flg1` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT 'フラグ1',
    `flg2` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT 'フラグ2',
    `flg3` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT 'フラグ3',
    `flg4` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT 'フラグ4',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

これだとテーブルに持つフラグが増えた分だけフィールドの数も増えますし、検索SQLのWHERE条件も増えてしまうのどうしようって思っていたら、ビットフラグ使えばいいよねって話になったので試してみます。

動作確認環境:MySQL5.6

この記事を読む ≫