當前位置:學問君>人在職場>IT認證>

oracle數據庫開發規範具體條件

學問君 人氣:2.34W

編程規範

1:所有數據庫關鍵字和保留字都大寫;字段、變量的大小寫

2:程序塊採用縮進風格書寫,保證代碼清晰易讀,風格一致,縮進格數統一爲2/4個。

必須使用空格,不允許使用【tab】鍵。

3:當同一條語句暫用多於一行時,每行的其他關鍵字與第一行的關鍵字進行右對齊。

4:不允許多個語句寫到一行,即一行只寫一條語句。

5:避免把複雜的SQL語句寫到同一行,建議要在關鍵字和謂詞處換行。

6:相對獨立的程序塊之間必須加空行。BEGIN、END獨立成行。

7:太長的表達式應在低優先級操作符處換行,操作符或關鍵字應放在新行之首。不同類型的操作符混合使用時,用括號隔離,使得代碼清晰。

8: 不同類型的操作符混合使用時,應使用括號明確的表達運算的先後關係。

9:運算符以及比較符左邊或者右邊只要不是連結的括弧,則空一格。

10:if 後的條件要用括號括起來,括號內每行最多兩個條件。

11:減少控制語句的檢查次數,如在 else( )控制語句中,對最常用符合條件,儘量往前被檢查到。儘量避免使用嵌套的if 語句,在這種情況應使用多個if 語句來判斷其可能。

命名規範

1:不使用數據庫關鍵字和保留字,爲了避免不必要的衝突和麻煩。

2:嚴禁使用帶空格的名稱來給字段和表命名,會出錯誤而終止。

3:用戶自訂數據庫對象:表,視圖,主外鍵,索引,觸發器,函數,存儲過程,序列,同義詞,數據庫連接,包,包體風格要保持一致。

數據庫名稱1-8個字元,其他對象1-30個字元,數據庫連接不操過30個字元。使用英文字母、數字、下劃線。

除表外,其他對象命名最好用不同的前綴來區別。

表 tbl_/t_

視圖 v_

序列 seq_

簇 c_

觸發器 trg_

存儲過程 sp_/p_

函數 f_/fn_

物化視圖 mv_

包和包體 pkg_

類和類體 typ_

主鍵 pk_

外鍵 fk_

唯一索引 uk_

普通索引 idx_

位圖索引 bk_

4:PL/SQL對象和變量命名規則

輸入變量 i_

輸出變量 o_

輸入輸出變量 io_

普通變量 v_

全局變量 gv_

常量 大寫

遊標 cur_

用戶自訂類型 type_

儲存點 spt_

不允許使用中文和特殊字元

用戶對象命名應全部爲小寫,且不允許使用控制符號強制轉換對象爲小寫字元

變量命名,要有具體含義,能表明變量類型。

5:註釋規範

源程序有效註釋量必須在30%左右。

統一檔案頭的註釋,針對存儲過程,函數進行功能性描述,入出參數說明。

/*******************************************************************

名稱:

功能描述:

修訂記錄

版本號 編輯時間 編輯人 修改描述

入出參數說明

返回值描述(針對函數)

*******************************************************************/

所有變量定義需要添加註釋,說明該變量的用途和含義。

程序分支必須書寫註釋,這些語句是程序實現某一特定功能的關鍵。

在程序塊的結束行加註釋,表明程序塊結束。

註釋應與描述的代碼相似,對代碼的註釋應在其上方或右方現今爲止,不能放在下面。

禁止在註釋中使用縮寫,特別是非常用的縮寫。

註釋要與描述的內容進行相同的縮排。

註釋上面的代碼應空行隔開。

註釋用中文書寫。

儘量使用”--” 進行注註釋。

行尾註釋須使用”--” 。

6:分區表命名

分區表的表名可以遵循普通表的正常命名規則。主要用途的縮寫+下劃線+yymm。

按地域分佈的子公司庫存表( 每個區域一個分區),分區名這爲表的主要用途的縮寫+區域的縮寫。

最小分區名字爲before_data 規則3.4.5:最大分區名字爲after_data 規則3.4.5:子分區的名字爲:父分區名+下劃線+sub+ 下劃線+no( 區域縮寫),根據實際情況進行組合。

分區表本地索引命名在正常索引名的最後一個下劃線前加L。

分區表全局索引命名在正常索引名的最後一個下劃線前加G。

DML操作規範

1:減少控制語句的檢查次數,應將最常用的符合條件前置以便被檢查到。

2:避免使用 SELECT *語句,給出字段列表,避免出現在表結構變化時程序無法識別的情況。

3:INSERT 語句必須給出字段列表,避免在表結構變化時發生編譯錯誤。

4:從表中同一筆記錄中獲取記錄的字段值,須使用一SQL 語句得到,不允許分多條SQL 語句。

5:當一個PL/SQL 或SQL 語句中涉及到多個表時,始終使用別名來限定字段名,這使其它人閱讀起來更方便,避免了含議模糊的引用,其中能夠別名中清晰地判斷出表名。

6:禁止進行字段數據類型的隱式轉換,所有轉換必須進行明確的數據類型轉換

說明:隱式轉換會導致字段上的索引失效,而進行顯式轉換,會提醒到開發人員該種操作會導致索引失效

7:禁止在多表關聯的時候,在非索引字段上的關聯;

8:進行模糊查詢時,禁止條件中字元串直接以“%”開頭;

9:儘量使用DECODE來簡化SQL訪問數據庫的次數

10:避免使用HAVING子句, HAVING 只會在檢索出所有記錄之後纔對結果集進行過濾. 這個處理需要排序,總計等操作. 如果能透過WHERE子句限制記錄的數目,那就能減少這方面的開銷.

11:當PL/SQL或SQL語句中涉及多個表時,始終使用別名來限定表名和字段名。

12:確保變量和參數在類型和長度上與表數據列相匹配,否則較寬或較大數據進來時會異常。

13:使用EXISTS/NOT EXISTS替代IN/NOT IN

14:採用表連接替代EXIST

15:複雜的SQL是否由設計不當引起,複雜的SQL考慮用程序塊來執行。

處理的優先級

靜態SQL>動態SQL

綁定變量的SQL>動態SQL

SQL>PL/SQL過程

SQL>遊標遍歷

ORACLE函數>自訂函數

16: 使用ORACLE分析函數來代替同一表多次的關聯。

17: 使用動態SQL時要綁定變量。

18:不要把空的變量直接與比較運算符比較,如果結果可能爲空,應使用IS NULL貨IS NOT NULL 或NVL函數進行比較。

19:order by 後面字段不唯一時分頁會出現問題,分頁時如果order by 後面的字段不唯一,一定要讓order by 唯一,最佳方案是增加一pk,如實在沒辦法則可以追加rowid,order by 後儘量避免使用rowid。