ホームページ  >  記事  >  バックエンド開発  >  データベースフィールド再利用の基本原則と例_PHP チュートリアル

データベースフィールド再利用の基本原則と例_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:44:351085ブラウズ

1. 論理代数の基礎:

1. 数字は2進数で表され、取り得る数字はすべて0と1のみです。

2. 基本的な操作は「and」、「or」、「not」の 3 つだけです。

AND演算は次のように定義されます(AND演算を表現するには&を使用します)

0 & 0 = 0

0 & 1 = 0

1 & 0 = 0

1 & 1 = 1

単純に理解すると、掛け算と同じように、0がある限り結果は0になります。

OR演算は次のように定義されます: (AND演算を表すには|を使用します)

0 = 0

0 | 1 = 1

1 | 0 = 1

1 | 1 = 1

単純に理解すると、1がある限り、結果は1になる、足し算と同じです。

2. 論理演算の例:

01111010101010101111111111111111 & 1100000 = 1100000

一般的には次のように理解できます:

数値のN桁の値を取得したい場合は、数値と2のN-1乗(マスク)をANDするだけです。

3. データベースフィールド定義:

データテーブル binary_sample を例に挙げます:

テーブル binary_sample(

を作成)

uid int unsigned not null,

ステータス int unsigned not null デフォルト 0,

主キー(uid)、

キーi_s(ステータス)

)engine=innodb;

ステータスフィールドの定義:

ステータスフィールドのデータ型は32ビット整数で、できるだけ多くの属性を格納するために、次のように定義します。

以下のすべての「ビット」の記述順序は、下位から上位(右から左)に表現されます。

数字0~2はユーザー登録状況を示します:

000は新規登録が承認されていないことを意味します

001は登録が承認されたことを意味します

010は上級ユーザーを意味します

011は管理者を意味します

100はスーパー管理者を意味します

101予約済み

110予約済み

111マスク

3~5人のユーザーの性別:

000は性別の不確実性を示します

001は性別が男性であることを示します

010は性別が女性であることを示します

011予約済み

100予約

101予約済み

110予約済み

111マスク

すべての男性ユーザーをクエリしたい場合:

select * from binary_sample where status & b111000 = b001000;

すべての管理者ユーザーをクエリしたい場合:

select * from binary_sample where status & b111 = b011;

すべての男性管理者ユーザーをクエリしたい場合:

select * from binary_sample where status & b111111 = b001011;

承認されていない新規登録以外のすべてのユーザーをクエリしたい場合は、次のようになります。

select * from binary_sample where status & b111 != b000;

4、PHPプログラムを使用してこのような計算を実行します:

define("USER_NEW",0);//000

define("USER_NORMAL",1);//001

define("USER_ADVANCE",2);//010

define("USER_MANAGE",3);//011

define("USER_SUPER",4);//100

define("USER_MASK",7);//111

define("GENDER_UNKNOWN",0);// 000000

define("GENDER_MALE",8);// 001000

define("GENDER_FEMALE",9);// 010000

define("GENDER_MASK",56);//111000

すべての男性ユーザーをクエリしたい場合:

$status=GENDER_MALE;

$mask=GENDER_MASK;

$sql="select * from binary_sample where status & ${mask} = ${status}";

すべての管理者ユーザーをクエリしたい場合:

$status=USER_MANAGE;

$mask=USER_MASK;

$sql="select * from binary_sample where status & ${mask} = ${status}";

すべての男性管理者ユーザーをクエリしたい場合:

$status=GENDER_MALE & USER_MANAGE;

$mask = GENDER_MASK & GENDER_MASK;

$sql="select * from binary_sample where status & ${mask} = ${status}";

新規登録および未承認のユーザー以外のすべてのユーザーをクエリしたい場合は、次のようにします。

$status = USER_NEW;

$mask = USER_MASK;

$sql="select * from binary_sample where status & ${mask} != ${status}";

類推すると、それぞれの値の意味が定義されていれば、クエリは基本的に解決されます。

http://www.bkjia.com/PHPjc/478751.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/478751.html技術記事 1. 論理代数の基礎: 1. 数値は 2 進数で表現され、取り得る数値は 0 と 1 のみです。 2. 基本的な演算は「and」、「or」、「not」の 3 つだけです。 AND 演算定義...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。