資料庫字段復用的基本原理與示例

2021-08-26 15:41:27 字數 2415 閱讀 3505

一、邏輯代數基礎:  1,數字用二進位制表示,所有可能出現的數只有0和1兩個。

2,基本運算只有「與」、「或」、「非」三種。 

與運算定義為:(用 & 表示與運算)  0 & 0 = 0  0 & 1 = 0  1 & 0 = 0  1 & 1 = 1  可以簡單理解為:只要有乙個0,結果就是0,和乘法類似。 

或運算定義為:(用 | 表示與運算)  0 | 0 = 0  0 | 1 = 1  1 | 0 = 1  1 | 1 = 1  可以簡單理解為:只要有乙個1,結果就是1,和加法類似。 

二、邏輯運算示例:  01111010101010101111111111111111 & 1100000 = 1100000 

一般可以理解為:  如果要獲取乙個數字某n位的數值,只需要將這個數字與2的n-1次方(掩碼)進行與運算即可。 

三、資料庫字段定義:  以資料表 binary_sample為例:  create table binary_sample(  uid int unsigned not null,  status int unsigned not null default 0,  primary key(uid),  key i_s(status)  )engine=innodb; 

status欄位定義:  status欄位資料型別為32bit的整數,為了盡可能的儲存多個屬性,我們將其進行如下定義:  

以下所有「位」的描述順序按照從低到高(從右到左)順序表示。 

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 & b'111000' = b'001000';  

如果我們要查詢所有 管理員使用者 則:  select * from binary_sample where status & b'111' = b'011'; 

如果我們要查詢所有 男管理員使用者 則:  select * from binary_sample where status & b'111111' = b'001011'; 

如果我們要查詢所有 非 新註冊未被批准使用者 則:  select * from binary_sample where status & b'111' != b'000'; 

四,使用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 & $' = $"; 

如果我們要查詢所有 管理員使用者 則:  $status=user_manage;  $mask=user_mask;  $sql="select * from binary_sample where status & $' = $"; 

如果我們要查詢所有 男管理員使用者 則:  $status=gender_male & user_manage;  $mask = gender_mask & gender_mask;  $sql="select * from binary_sample where status & $' = $"; 

如果我們要查詢所有 非 新註冊未被批准使用者 則:  $status = user_new;  $mask = user_mask;  $sql="select * from binary_sample where status & $ != $";  

依此類推,只要定義好每個值的含義,查詢基本上就定了。

資料庫字段復用的基本原理與示例

一 邏輯代數基礎 1,數字用二進位制表示,所有可能出現的數只有0和1兩個。2,基本運算只有 與 或 非 三種。與運算定義為 用 表示與運算 0 0 0 0 1 0 1 0 0 1 1 1 可以簡單理解為 只要有乙個0,結果就是0,和乘法類似。或運算定義為 用 表示與運算 0 0 0 0 1 1 1 ...

資料庫字段復用的基本原理與示例

一 邏輯代數基礎 1,數字用二進位制表示,所有可能出現的數只有0和1兩個。2,基本運算只有 與 或 非 三種。與運算定義為 用 表示與運算 0 0 0 0 1 0 1 0 0 1 1 1 可以簡單理解為 只要有乙個0,結果就是0,和乘法類似。或運算定義為 用 表示與運算 0 0 0 0 1 1 1 ...

資料庫最基本原理

資料庫 database 是按照資料結構來組織 儲存和管理資料的倉庫,它產生於距今六十多年前,隨著資訊科技和市場的發展,特別是二十世紀九十年代以後,資料管理不再僅僅是儲存和管理資料,而轉變成使用者所需要的各種資料管理的方式。資料庫有很多種型別,從最簡單的儲存有各種資料的 到能夠進行海量資料儲存的大型...