1、編寫目的
使用統一的命名和編碼規范,使數據庫命名及編碼風格標准化,以便於閱讀、理解和繼承。
2、適用范圍
本規范適用於公司范圍內所有以ORACLE作為後台數據庫的應用系統和項目開發工作。
3、對象命名規范
3.1 數據庫和SID
數據庫名定義為系統名+模塊名
★ 全局數據庫名和例程SID 名要求一致
★ 因SID 名只能包含字符和數字,所以全局數據庫名和SID 名中不能含有“_”等字符
3.2 表相關
3.2.1 表空間
★ 面向用戶的專用數據表空間以用戶名+_+data命名 ,如Aud 用戶專用數據表空間可命名為Aud_data
★ 面向用戶的專用索引表空間以用戶名+_+idx命名
★ 面向用戶的專用臨時表空間以用戶名+_+tmp命名
★ 面向用戶的專用回滾段表空間以用戶名+_+rbs 命名
★ 面向應用的表空間以應用名+_data/應用名+_idx/應用名+_tmp/應用名+_rbs 命名
★ LOB 段數據專用表空間以其數據表空間+_+lobs 命名,如上例中數據表空間為Aud_data,則LOB 段表空間可命名為Aud_data_lobs
3.2.2 表空間文件
表空間文件命名以表空間名+兩位數序號(序號從01開始)組成,如Aud_data01 等
3.2.3 表
表命名要遵循以下原則:
★ 一般表采用“系統名+t_+模塊名+_+表義名” 格式構成
★ 若數據庫中只含有單個模塊,命名可采用“系統名+t_+表義名”格式構成
★ 模塊名或表義名均以其漢語拼音的首字符命名,表義名中漢語拼音均采用小寫,且字符間不加分割符;
★ 表別名命名規則:取表義名的前3 個字符加最後一個字符。如果存在沖突,適當增加字符(如取表義名的前4 個字符加最後一個字符等)
★ 臨時表采用“系統名+t_tmp_+表義名” 格式構成
★ 表的命名如
dft_gy_cbap:系統名(電費 df)+t_+模塊名(高壓 gy)+_+表義名(抄表安排 cbap)
dft_cbbj: 系統名(電費 df)+t_+表義名(抄表標記 cbbj)
dft_tmp_hj: 系統名(電費 df)+tmp+表義名(合計hj)(此處為臨時表)
★ 關聯表命名為Re_表A_表B,Re 是Relative的縮寫,表A 和表B均采用其表義名或縮寫形式。
3.2.4 屬性(列或字段)
屬性命名遵循以下原則:
★ 采用有意義的列名,為實際含義的漢語拼音的首字符,且字符間不加任何分割符
★ 屬性名前不要加表名等作為前綴
★ 屬性後不加任何類型標識作為後綴
★ 不要使用“ID”作為列名
★ 關聯字段命名以 “cd+_+關聯表的表義名(或縮寫)+_+字段名”進行
3.2.5 主鍵
★ 任何表都必須定義主鍵
★ 表主鍵命名為:“pk+_+表名(或縮寫)+_+主鍵標識”如“pk_YHXX_IDKH”等
3.2.6 外鍵
表外鍵命名為: “fk+_+表名(或縮寫)+_主表名(或縮寫)+_+主鍵標識”如“fk_YHLX_YHXX_SFZH”等
3.2.7 CHECK約束
CHECK 約束命名為: “chk+_+CHECK約束的列名(或縮寫)”
3.2.8 UNIQUE約束
UNIQUE 約束命名為: “unq+_+UNIQUE約束的列名(或縮寫)”
3.2.9 索引
索引的命名為:“表名(或縮寫)+_+列名+_idx”。其中多單詞組成的屬性列列名取前幾個單詞首字符再加末單詞首字符組成如yd_kh 表khid 上的index: yd_kh_khid_idx
3.2.10 觸發器
★ AFTER型觸發器
系統名+tr_+<表名>_+ +[_row]
★ BEFORE型觸發器
系統名+tr_+<表名>_+bef_+[_row]
★ INSTEAD OF型觸發器
系統名+ti_+<表名>+_++[_row]
★ 各種類型的觸發器中
i,u,d 分別表示insert、update 和delete行級觸發器,後加_row 標識,語句級觸發器不加,如 yddftr_CSH_i_row
3.2.11 簇
簇以簇中要存儲的各個表(或表別名)及表間加and的組成 命名,即表“A+And+表B…”,如存儲GR(工人)和GRJN(工人技能)表的簇命名為GRAndGRJN
3.3 視圖
視圖命名以系統名v_+模塊名作為前綴,其他命名規則和表的命名類似
3.4 序列
序列命名以seq_+含義名組成
3.5 同義詞
同義詞命名與其基礎對象的名稱一致,但要去除其用戶前綴或含有遠程數據庫鏈接的後綴
3.6 存儲對象相關
3.6.1 存儲過程
存儲過程命名由“系統名+sp+_+存儲過程標識(縮寫)”組成存儲過程標識要以實際含義的漢語拼音的首字符構成,並用下劃線分割各個組成部分。如增加代理商的帳戶的存儲過程為“sfsp_ZJDLSZH”。
3.6.2 函數
函數命名由“系統名+f+_+函數標識”組成
3.6.3 包
包命名由“系統名+pkg+_+包標識”組成
3.6.4 函數文本中的變量采用下列格式命名:
★ 參數變量命名采用“i (o或io)+_+名稱”形式,前綴i 或o 表輸入還是輸出參數
★ 過程變量命名采用“l+_+名稱”形式
★ 全局包變量命名采用“g+_+名稱”形式
★ 游標變量命名采用“名稱+_+cur”形式
★ 常量型變量命名采用“c+_+名稱”形式
★ 變量名采用小寫,若屬於詞組形式,用下劃線分隔每個單詞
★ 變量用來存放表中的列或行數據值時,使用%TYPE、%ROWTYPE 方式聲明變量,使變量聲明的類型與表中的保持同步,隨表的變化而變化
3.7 用戶及角色
★ 用戶命名由“系統名稱+_+user+_+名詞(或縮寫)或名詞短語(或縮寫)”組成
★ 角色命名由“系統名稱+_+role+_+名詞(或縮寫)或名詞短語(或縮寫)”組成
3.8 數據庫鏈接
★ 數據庫鏈接命名由“遠程服務器名+_+數據庫名+_+link”組成
★ 若遠程服務器名和數據庫名一致,上式“_+數據庫名”部分省去
3.9 命名中的其它注意事項
★ 命名都不得超過30個字符。
★ 不要在對象名的字符之間留空格
★ 小心保留詞,要保證你的命名沒有和保留詞、數據庫系統或者常用訪問方法沖突
4、 編碼規范
4.1 一般性注釋
4.1.1 注釋盡可能簡潔、詳細而全面
4.1.2 創建每一數據庫對象時都要加上COMMENT ON注釋,以說明該對象的功能和用途;建表時,對某些數據列也要加上COMMENT ON注釋,以說明該列和/或列取值的含義。如:XX 表中有CZZT列屬性為NUMBER(10, 0)可加COMMENT ON 注釋如下COMMENT ON COLUMN XX.CZZT IS '0 = 正常, 1 = 等待, 2 = 超時, 3 = 登出'
4.1.3 注釋語法包含兩種情況:單行注釋、多行注釋
單行注釋:注釋前有兩個連字符(--),一般對變量、條件子句可以采用該類注釋。
多行注釋:符號/*和*/之間的內容為注釋內容。對某項完整的操作建議使用該類注釋。
4.2 函數文本注釋
4.2.1 在每一個塊和過程(存儲過程、函數、包、觸發器、視圖等)的開頭放置注釋
/************************************************************************
*name : --函數名
*function : --函數功能
*input : --輸入參數
*output : --輸出參數
*author : --作者
*CreateDate : --創建時間
*UpdateDate : --函數更改信息(包括作者、時間、更改內容等)
*************************************************************************/
CREATE [OR REPLACE] PROCEDURE dfsp_xxx
…
4.2.2 傳入參數的含義應該有所說明。如果取值范圍確定,也應該一並說明。取值有特定含義的變量(如boolean類型變量),應給出每個值的含義。
4.2.3 在每一個變量聲明的旁邊添加注釋。說明該變量要用作什麼
通常,簡單使用單行注釋就行了,例如l_sfzh CHAR(11) --身份證號碼
4.2.4 在塊的每個主要部分之前添加注釋
在塊的每個主要部分之前增加注釋,解釋下—組語句目的,最好是說明該段語句及算法的目的以及要得到的結果,但不要對其細節進行過多的描述
4.2.5 在塊和過程的開頭注釋中還可以增加要訪問的數據庫等信息
4.3 常用SQL 語句的編寫規范
4.3.1 CREATE語句
CREATE TABLE dft_dksz(
YHBS VARCHAR2(20) NOT NULL,
ZHGX DATE,
DKKHD VARCHAR2(24),
CONSTRAINT pk_dksz_yhbs PRIMARY KEY (YHBS)
)
推薦:http://www.cnblogs.com/roucheng/p/3506033.html