在設計數據庫表結構時,選擇壹種有效的策略來存儲可以在許多編程環境中使用的邏輯布爾值是非常重要的。(雖然Oracle沒有布爾數據類型來表示數據庫字段,但是在PL/SQL中有布爾數據類型。)
任何布爾定義的字段也應該正確檢查約束,以確保在插入/更新期間輸入了有效值。
create table tbool(bool char check(bool in(' N ',' Y '));
插入tbool值(' N ');
插入tbool值(' Y ');
最常見的設計是模擬許多Oracle數據字典視圖中使用的類似布爾的標誌,用“y”表示真,用“n”表示假。但是,為了正確地與宿主環境交互,如JDBC、OCCI等編程環境,最好選擇0為false,1為true,這樣getBoolean和setBoolean才能正確處理。
我們可以定義壹個布爾值為數字(1);但在Oracle的內部數字格式中,0取1字節,1取長度字節後的2個字節(所以存為CHAR更有效率)。即使字符被定義為CHAR,SQL也可以根據實際數字進行轉換和驗證。
我們可以定義壹個音樂類型為number(1);但在Oracle的內部數字格式中,0在長度字節後占用壹個字節,而1在長度字節後占用兩個字節(所以存儲為CHAR更高效)。即使字符被定義為char,SQL也可以轉換並驗證實際數字。
創建表tbool (bool char check (bool in (0,1));
插入到tbool值(0);
插入tbool值(1);